Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
f39f550
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 2, 2026
d05476b
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 2, 2026
cc84a39
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 2, 2026
cd8e249
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 2, 2026
0d6a2cf
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 5, 2026
541eadc
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 5, 2026
26cd138
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 5, 2026
c212637
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 5, 2026
f815384
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 5, 2026
4aa2d11
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 5, 2026
a5b22b6
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 23, 2026
6659459
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 23, 2026
303376c
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 27, 2026
0ba2d20
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 29, 2026
df94995
Fixed merge conflict with master.
conroy-ricketts Jan 29, 2026
90cbdc5
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 29, 2026
f76dee1
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 30, 2026
574e19e
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 30, 2026
29ef079
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 30, 2026
96085de
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 30, 2026
52206d6
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 30, 2026
4ad3fa3
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 30, 2026
e2265ab
CCCT-1995 Payment Card Enhancement
conroy-ricketts Jan 30, 2026
5972352
Merge branch 'master' of https://github.com/dimagi/commcare-android i…
conroy-ricketts Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@
<string name="connect_results_payment_confirm_undo">Deshacer confirmación</string>
<string name="connect_results_payment_confirmed">Confirmado</string>
<string name="connect_results_payment_not_confirmed">No confirmado</string>
<string name="connect_payment_confirm_text">¡Te han pagado!\n%s %s pagó %s.\n¿Recibiste el pago?</string>
<string name="connect_payment_confirm_text">¿Ha recibido el pago de %d %s por la oportunidad de %s?</string>
<string name="connect_payment_confirm_yes">¡Sí!</string>
<string name="connect_payment_confirm_no">Más tarde</string>
<string name="connect_payment_confirm_failed">No se pudo enviar la confirmación, te preguntaremos de nuevo más tarde.</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ License.
<string name="connect_results_payment_confirm_undo">Annuler confirmer</string>
<string name="connect_results_payment_confirmed">Confirmé</string>
<string name="connect_results_payment_not_confirmed">Non confirmé</string>
<string name="connect_payment_confirm_text">Vous avez été payé!\n%s %s payé %s.\nAvez-vous reçu le paiement?</string>
<string name="connect_payment_confirm_text">Avez-vous été payé(e) %d %s pour l\'opportunité %s ?</string>
<string name="connect_payment_confirm_yes">Oui!</string>
<string name="connect_payment_confirm_no">Plus tard</string>
<string name="connect_payment_confirm_failed">Échec de l\'envoi de la confirmation, nous vous redemanderons plus tard.</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values-hi/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ License.
<string name="connect_results_payment_confirm_undo">पुष्टि रद्द करें</string>
<string name="connect_results_payment_confirmed">पुष्टि की गई</string>
<string name="connect_results_payment_not_confirmed">पुष्टि नहीं की गई</string>
<string name="connect_payment_confirm_text">आपको भुगतान किया गया है!\n%s %s का भुगतान %s।\nक्या आपको भुगतान प्राप्त हुआ?</string>
<string name="connect_payment_confirm_text">क्या आपको %d %s अवसर के लिए %s का भुगतान किया गया है?</string>
<string name="connect_payment_confirm_yes">हाँ!</string>
<string name="connect_payment_confirm_no">बाद में</string>
<string name="connect_payment_confirm_failed">पुष्टि भेजने में विफल, हम आपसे बाद में फिर पूछेंगे।</string>
Expand Down
46 changes: 30 additions & 16 deletions app/res/values-lt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,22 +71,22 @@
<string name="selected">Parinkta:</string>
<string name="select_answer">Pažymėkite atsakymą</string>
<string name="edit_prompt">Keisti atsakymą</string>
<string name="no_gps_title">Location Data Disabled</string>
<string name="no_gps_message">The location providers on this device are currently disabled. Do you want to change those settings?</string>
<string name="change_settings">Change Settings</string>
<string name="nav_drawer_signin_register">Accedi / Registrati</string>
<string name="nav_drawer_help">Aiuto</string>
<string name="nav_drawer_not_signed_in_to_personal_id">Non hai effettuato l’accesso all\ID personale</string>
<string name="nav_drawer_opportunities">Opportunità</string>
<string name="nav_drawer_commcare_apps">App CommCare</string>
<string name="nav_drawer_work_history">Storico lavorativo</string>
<string name="nav_drawer_payments">Pagamenti</string>
<string name="nav_drawer_manage_profile">Gestisci profilo</string>
<string name="no_gps_title">Vietovės duomenys išjungti</string>
<string name="no_gps_message">Šio įrenginio vietos nustatymo paslaugos šiuo metu išjungtos. Ar norite pakeisti šiuos nustatymus?</string>
<string name="change_settings">Keisti nustatymus</string>
<string name="nav_drawer_signin_register">Prisijungti / Registruotis</string>
<string name="nav_drawer_help">Pagalba</string>
<string name="nav_drawer_not_signed_in_to_personal_id">Neprisijungta prie „PersonalID“</string>
<string name="nav_drawer_opportunities">Galimybės</string>
<string name="nav_drawer_commcare_apps">CommCare“ programėlės</string>
<string name="nav_drawer_work_history">Darbo istorija</string>
<string name="nav_drawer_payments">Mokėjimai</string>
<string name="nav_drawer_manage_profile">Tvarkyti profilį</string>
<string name="play_service_update_error">Norint naudoti „PersonalID“, reikia atnaujinti „Google Play“ paslaugas. Palieskite čia, kad pereitumėte į „Google Play“ parduotuvę ir patikrintumėte, ar yra naujinių</string>
<string name="nav_drawer_open">Apri il menu di navigazione</string>
<string name="nav_drawer_close">Chiudi il menu di navigazione</string>
<string name="connect_message_you">Voi</string>
<string name="connect_message_them">Loro</string>
<string name="nav_drawer_open">Atidaryti navigacijos meniu</string>
<string name="nav_drawer_close">Uždaryti navigacijos meniu</string>
<string name="connect_message_you">Jūs</string>
<string name="connect_message_them">Jie</string>
<string name="fcm_sync_failed_body_text">Norėdami sužinoti daugiau, spustelėkite čia</string>
<string name="connect_fetch_learning_progress_error">Nepavyko gauti mokymosi eigos</string>
<string name="connect_fetch_delivery_progress_error">Nepavyko gauti pristatymo eigos</string>
Expand All @@ -99,7 +99,7 @@

<string name="personalid_configuration_process_failed_subtitle">Deja, šis įrenginys nepraėjo saugumo patikrų, būtinų registracijai „PersonalID“. Bandykite dar kartą kitame įrenginyje.</string>
<string name="personalid_location_permission_error">„PersonalID“ reikalauja, kad jūsų įrenginyje būtų įjungtos vietos nustatymo paslaugos. Prieš tęsdami, įjunkite jas telefono nustatymuose.</string>
<string name="recovery_network_outdated">Questa app non è aggiornata. Per procedere, aggiorna l\'app sul Google Play Store.</string>
<string name="recovery_network_outdated">Ši programa pasenusi. Norėdami tęsti, atnaujinkite programą „Google Play“ parduotuvėje.</string>
<string name="recovery_network_token_unavailable">Kilo tinklo problema. Bandykite dar kartą.</string>
<string name="recovery_network_unauthorized">Jūs neturite teisės pateikti šio prašymo.</string>
<string name="recovery_network_server_error">Apdorojant jūsų užklausą įvyko klaida.</string>
Expand All @@ -126,6 +126,20 @@
<string name="connect_register_success_message">Jūsų paskyra sukurta ir paruošta naudojimui!</string>
<string name="connect_backup_code_length">Būtinai atsiminkite savo atsarginį kodą! Jį turi sudaryti %d skaitmenys. Laikykite jį saugioje vietoje, nes jo prireiks norint vėl prisijungti prie paskyros.</string>
<string name="no_channel_msg">Jūs neprenumeruojate jokių susirašinėjimo kanalų. Kai būsite pridėtas prie kanalo, jis pasirodys šiame sąraše.</string>
<string name="connect_payment_confirm_text">Ar gavote %d %s už %s galimybę?</string>
<string name="connect_payment_confirm_yes">Taip, gavau</string>
<string name="connect_payment_confirm_no">Ne, negavau</string>
<string name="connect_payment_confirm_failed">Nepavyko patvirtinti mokėjimo. Bandykite dar kartą.</string>
<string name="connect_payment_acknowledge_notification_yes">Mokėjimas patvirtintas</string>
<string name="connect_payment_acknowledge_notification_no">Mokėjimas nepatvirtintas</string>
<string name="connect_payment">Mokėjimas</string>
<string name="connect_payment_received">Mokėjimas gautas</string>
<string name="connect_payment_transferred">Mokėjimas pervestas</string>
<string name="connect_payment_confirm_transferred">Patvirtinti pervedimą</string>
<string name="connect_payment_revoke_transferred">Atšaukti pervedimą</string>
<string name="connect_payment_dialog_no">Ne</string>
<string name="connect_payment_dialog_yes">Taip</string>
<string name="connect_payment_revert">Atstatyti</string>

<string name="personalid_using_your_location">Naudojama jūsų buvimo vieta</string>
<string name="personalid_no_location_found">Nepavyksta rasti jūsų buvimo vietos</string>
Expand Down
1 change: 1 addition & 0 deletions app/res/values-no/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
<string name="connect_register_success_message">Kontoen din er blitt opprettet og er klar til bruk</string>
<string name="connect_backup_code_length">Sørg for å huske reservekoden din! Den må være på %d sifre. Oppbevar den på et trygt sted, da du trenger den for å få tilgang til kontoen din igjen.</string>
<string name="no_channel_msg">Du abonnerer ikke på noen meldingskanaler. Når du er lagt til i en kanal, vil den vises i denne listen.</string>
<string name="connect_payment_confirm_text">Har du mottatt %d %s for %s-muligheten?</string>

<string name="personalid_using_your_location">Bruker posisjonen din</string>
<string name="personalid_no_location_found">Vi kan ikke finne posisjonen din</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@
<string name="connect_results_payment_confirm_undo">Desfazer confirmação</string>
<string name="connect_results_payment_confirmed">Confirmado</string>
<string name="connect_results_payment_not_confirmed">Não confirmado</string>
<string name="connect_payment_confirm_text">Você foi pago!\n%s %s pago %s.\nVocê recebeu o pagamento?</string>
<string name="connect_payment_confirm_text">Você recebeu o pagamento de %d %s pela oportunidade %s?</string>
<string name="connect_payment_confirm_yes">Sim!</string>
<string name="connect_payment_confirm_no">Pergunte mais tarde</string>
<string name="connect_payment_confirm_failed">Falha ao enviar a confirmação, pediremos novamente mais tarde.</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values-sw/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@
<string name="connect_results_payment_confirm_undo">Tendua uthibitisho</string>
<string name="connect_results_payment_confirmed">Imethibitishwa</string>
<string name="connect_results_payment_not_confirmed">Haijathibitishwa</string>
<string name="connect_payment_confirm_text">Umelipwa!\n%s %s imelipwa %s.\nJe, umepokea malipo?</string>
<string name="connect_payment_confirm_text">Je, umelipwa %d %s kwa ajili ya fursa ya %s?</string>
<string name="connect_payment_confirm_yes">Ndiyo!</string>
<string name="connect_payment_confirm_no">Uliza baadaye</string>
<string name="connect_payment_confirm_failed">Imeshindwa kutuma uthibitisho, tutauliza tena baadaye.</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values-ti/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@
<string name="connect_results_payment_confirm_undo">ምርፅጋፅ መልስ</string>
<string name="connect_results_payment_confirmed">ተረጋጊፁ</string>
<string name="connect_results_payment_not_confirmed">ኣይተረጋገፀን።</string>
<string name="connect_payment_confirm_text">ክፍሊት ረኺብካ!\n%s %s ተኸፊሉ %s.\nእቲ ክፍሊት ተቐቢልካዮ ዲኻ?</string>
<string name="connect_payment_confirm_text">ን%d %s ዕድል ዝኸውን %s ተኸፊልካዶ?</string>
<string name="connect_payment_confirm_yes">እወ!</string>
<string name="connect_payment_confirm_no">ፀኒሕኻ ሕተት።</string>
<string name="connect_payment_confirm_failed">መረጋገፂ ምልኣኽ ስለዘይከኣለ፡ ፀኒሕና እንደገና ክንሓትት ኢና።</string>
Expand Down
2 changes: 1 addition & 1 deletion app/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@
<string name="connect_results_payment_confirm_undo">Undo confirm</string>
<string name="connect_results_payment_confirmed">Confirmed</string>
<string name="connect_results_payment_not_confirmed">Not Confirmed</string>
<string name="connect_payment_confirm_text">You got paid!\n%s %s paid %s.\nHave you received the payment?</string>
<string name="connect_payment_confirm_text">Have you been paid %d %s for %s Opportunity?</string>
<string name="connect_payment_confirm_yes">Yes!</string>
<string name="connect_payment_confirm_no">Ask later</string>
<string name="connect_payment_confirm_failed">Failed to send confirmation, we will ask again later.</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/org/commcare/connect/ConnectConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@ public class ConnectConstants {
public final static String NOTIFICATION_STATUS = "status";
public final static String NOTIFICATION_MESSAGE_ID = "message_id";
public final static String NOTIFICATION_CHANNEL_ID = "channel";
public final static String PAYMENT_CONFIRMATION_HIDDEN_SINCE_TIME =
"payment_confirmation_hidden_since_time";
}
20 changes: 11 additions & 9 deletions app/src/org/commcare/connect/ConnectJobHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ package org.commcare.connect
import android.content.Context
import android.widget.Toast
import org.commcare.CommCareApplication
import org.commcare.android.database.connect.models.ConnectJobPaymentRecord
import org.commcare.android.database.connect.models.ConnectJobRecord
import org.commcare.connect.database.ConnectJobUtils
import org.commcare.connect.database.ConnectUserDatabaseUtil
import org.commcare.connect.network.PersonalIdOrConnectApiErrorHandler
import org.commcare.connect.network.connect.ConnectApiHandler
import org.commcare.connect.network.connect.models.ConnectOpportunitiesResponseModel
import org.commcare.connect.network.connect.models.ConnectPaymentConfirmationModel
import org.commcare.connect.network.connect.models.DeliveryAppProgressResponseModel
import org.commcare.connect.network.connect.models.LearningAppProgressResponseModel
import org.commcare.connect.network.PersonalIdOrConnectApiErrorHandler
import org.commcare.google.services.analytics.AnalyticsParamValue.FINISH_DELIVERY
import org.commcare.google.services.analytics.AnalyticsParamValue.PAID_DELIVERY
import org.commcare.google.services.analytics.AnalyticsParamValue.START_DELIVERY
Expand Down Expand Up @@ -136,18 +136,20 @@ object ConnectJobHelper {
}.getDeliveries(context, user, job)
}

fun updatePaymentConfirmed(
fun updatePaymentsConfirmed(
context: Context,
payment: ConnectJobPaymentRecord,
confirmed: Boolean,
paymentConfirmations: List<ConnectPaymentConfirmationModel>,
listener: ConnectActivityCompleteListener,
) {
val user = ConnectUserDatabaseUtil.getUser(context)

object : ConnectApiHandler<Boolean>() {
override fun onSuccess(success: Boolean) {
payment.confirmed = confirmed
ConnectJobUtils.storePayment(context, payment)
override fun onSuccess(data: Boolean) {
for (paymentConfirmation in paymentConfirmations) {
paymentConfirmation.payment.confirmed = paymentConfirmation.toConfirm
ConnectJobUtils.storePayment(context, paymentConfirmation.payment)
}

FirebaseAnalyticsUtil.reportCccApiPaymentConfirmation(true)
listener.connectActivityComplete(true)
}
Expand All @@ -165,7 +167,7 @@ object ConnectJobHelper {
FirebaseAnalyticsUtil.reportCccApiPaymentConfirmation(false)
listener.connectActivityComplete(false)
}
}.setPaymentConfirmation(context, user, payment.paymentId, confirmed)
}.setPaymentConfirmations(context, user, paymentConfirmations)
}

fun retrieveOpportunities(
Expand Down
21 changes: 21 additions & 0 deletions app/src/org/commcare/connect/database/ConnectJobUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,21 @@
import org.commcare.android.database.connect.models.ConnectLearnModuleSummaryRecord;
import org.commcare.android.database.connect.models.ConnectPaymentUnitRecord;
import org.commcare.connect.PersonalIdManager;
import org.commcare.core.services.CommCarePreferenceManagerFactory;
import org.commcare.core.services.ICommCarePreferenceManager;
import org.commcare.models.database.SqlStorage;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import static org.commcare.connect.ConnectConstants.PAYMENT_CONFIRMATION_HIDDEN_SINCE_TIME;

public class ConnectJobUtils {

public static void upsertJob(Context context, ConnectJobRecord job) {
Expand Down Expand Up @@ -195,6 +201,7 @@ public static void storePayments(Context context, List<ConnectJobPaymentRecord>
SqlStorage<ConnectJobPaymentRecord> storage = ConnectDatabaseHelper.getConnectStorage(context, ConnectJobPaymentRecord.class);

List<ConnectJobPaymentRecord> existingList = getPayments(context, jobId, storage);
Set<String> matchedIncomingIds = new HashSet<>();

//Delete payments that are no longer available
Vector<Integer> recordIdsToDelete = new Vector<>();
Expand All @@ -204,6 +211,7 @@ public static void storePayments(Context context, List<ConnectJobPaymentRecord>
if (existing.getPaymentId().equals(incoming.getPaymentId())) {
incoming.setID(existing.getID());
stillExists = true;
matchedIncomingIds.add(incoming.getPaymentId());
break;
}
}
Expand All @@ -220,8 +228,21 @@ public static void storePayments(Context context, List<ConnectJobPaymentRecord>
}

//Now insert/update deliveries
boolean newPaymentReceived = false;
for (ConnectJobPaymentRecord incomingRecord : payments) {
storage.write(incomingRecord);

if (!matchedIncomingIds.contains(incomingRecord.getPaymentId())) {
newPaymentReceived = true;
}
}

// Check if there is a brand new payment so that we can reset the timer for the payment
// confirmation tile.
if (newPaymentReceived) {
ICommCarePreferenceManager preferenceManager =
CommCarePreferenceManagerFactory.getCommCarePreferenceManager();
preferenceManager.putLong(PAYMENT_CONFIRMATION_HIDDEN_SINCE_TIME, -1);
}
}

Expand Down
Loading