diff --git a/lib/constants.dart b/lib/constants.dart index a9c195a18..7845358e7 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -390,6 +390,7 @@ const String kPermissionCreateAll = 'create_all'; const String kPermissionViewAll = 'view_all'; const String kPermissionEditAll = 'edit_all'; +const String kPaymentStatusUnapplied = '-1'; const String kPaymentStatusPending = '1'; const String kPaymentStatusCancelled = '2'; const String kPaymentStatusFailed = '3'; @@ -398,6 +399,7 @@ const String kPaymentStatusPartiallyRefunded = '5'; const String kPaymentStatusRefunded = '6'; const kPaymentStatuses = { + kPaymentStatusUnapplied: 'unapplied', kPaymentStatusPending: 'pending', kPaymentStatusCancelled: 'cancelled', kPaymentStatusFailed: 'failed', @@ -502,6 +504,7 @@ class PaymentStatusColors { kPaymentStatusCompleted: kColorGreen, kPaymentStatusPartiallyRefunded: Colors.purple, kPaymentStatusRefunded: convertHexStringToColor('#8D3E3F'), + kPaymentStatusUnapplied: convertHexStringToColor('#444444'), }; } diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index 5d1148544..0557c736c 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -189,6 +189,14 @@ abstract class PaymentEntity extends Object BuiltList get credits; + String get calculatedStatusId { + if (applied < amount) { + return kPaymentStatusUnapplied; + } + + return statusId; + } + int compareTo( {PaymentEntity payment, String sortField, diff --git a/lib/ui/app/entities/entity_status_chip.dart b/lib/ui/app/entities/entity_status_chip.dart index b25fa6599..390f6ce52 100644 --- a/lib/ui/app/entities/entity_status_chip.dart +++ b/lib/ui/app/entities/entity_status_chip.dart @@ -24,8 +24,8 @@ class EntityStatusChip extends StatelessWidget { switch (entity.entityType) { case EntityType.payment: final payment = entity as PaymentEntity; - label = kPaymentStatuses[payment.statusId]; - color = PaymentStatusColors.colors[payment.statusId]; + label = kPaymentStatuses[payment.calculatedStatusId]; + color = PaymentStatusColors.colors[payment.calculatedStatusId]; break; case EntityType.invoice: final invoice = entity as InvoiceEntity; diff --git a/lib/ui/payment/payment_list_item.dart b/lib/ui/payment/payment_list_item.dart index 9113ebbaa..9c17aaa17 100644 --- a/lib/ui/payment/payment_list_item.dart +++ b/lib/ui/payment/payment_list_item.dart @@ -205,10 +205,10 @@ class PaymentListItem extends StatelessWidget { ), Text( localization - .lookup('payment_status_${payment.statusId}'), + .lookup('payment_status_${payment.calculatedStatusId}'), style: TextStyle( color: - PaymentStatusColors.colors[payment.statusId], + PaymentStatusColors.colors[payment.calculatedStatusId], )), ], ), diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index 55aaac3fd..63a3af654 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'unapplied': 'Unapplied', 'select_label': 'Select Label', 'custom_labels': 'Custom Labels', 'record_type': 'Record Type', @@ -39025,6 +39026,8 @@ mixin LocalizationsProvider on LocaleCodeAware { String get selectLabel => _localizedValues[localeCode]['select_label'] ?? ''; + String get unapplied => _localizedValues[localeCode]['unapplied'] ?? ''; + String lookup(String key) { final lookupKey = toSnakeCase(key);