From 291984b6841b093f1e2ddbaf1702cde5e827f348 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 3 Feb 2020 21:42:35 +0200 Subject: [PATCH] Refunds --- lib/data/models/models.dart | 1 + lib/data/models/models.g.dart | 4 ++++ lib/data/models/payment_model.dart | 11 +++++++---- lib/redux/payment/payment_actions.dart | 10 ---------- lib/ui/app/tables/entity_datatable.dart | 7 ++++++- lib/utils/icons.dart | 2 ++ 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index 9d0ace6f5..613077e32 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -61,6 +61,7 @@ class EntityAction extends EnumClass { static const EntityAction clientPortal = _$clientPortal; static const EntityAction newPayment = _$newPayment; static const EntityAction settings = _$settings; + static const EntityAction refund = _$refund; static const EntityAction pdf = _$pdf; static const EntityAction more = _$more; static const EntityAction start = _$start; diff --git a/lib/data/models/models.g.dart b/lib/data/models/models.g.dart index 5d12764fe..bc2216fe6 100644 --- a/lib/data/models/models.g.dart +++ b/lib/data/models/models.g.dart @@ -30,6 +30,7 @@ const EntityAction _$viewQuote = const EntityAction._('viewQuote'); const EntityAction _$clientPortal = const EntityAction._('clientPortal'); const EntityAction _$newPayment = const EntityAction._('newPayment'); const EntityAction _$settings = const EntityAction._('settings'); +const EntityAction _$refund = const EntityAction._('refund'); const EntityAction _$pdf = const EntityAction._('pdf'); const EntityAction _$more = const EntityAction._('more'); const EntityAction _$start = const EntityAction._('start'); @@ -88,6 +89,8 @@ EntityAction _$valueOf(String name) { return _$newPayment; case 'settings': return _$settings; + case 'refund': + return _$refund; case 'pdf': return _$pdf; case 'more': @@ -131,6 +134,7 @@ final BuiltSet _$values = _$clientPortal, _$newPayment, _$settings, + _$refund, _$pdf, _$more, _$start, diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index 140295885..c9dc1dbc1 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -301,10 +301,13 @@ abstract class PaymentEntity extends Object actions.add(EntityAction.edit); } - if (userCompany.canEditEntity(this) && - client != null && - client.hasEmailAddress) { - actions.add(EntityAction.sendEmail); + if (userCompany.canEditEntity(this)) { + if (client != null && + client.hasEmailAddress) { + actions.add(EntityAction.sendEmail); + } + + actions.add(EntityAction.refund); } } diff --git a/lib/redux/payment/payment_actions.dart b/lib/redux/payment/payment_actions.dart index 8f0de4a31..c5e21fd70 100644 --- a/lib/redux/payment/payment_actions.dart +++ b/lib/redux/payment/payment_actions.dart @@ -266,16 +266,6 @@ class FilterPaymentsByEntity implements PersistUI { void handlePaymentAction( BuildContext context, List payments, EntityAction action) { - assert( - [ - EntityAction.restore, - EntityAction.archive, - EntityAction.delete, - EntityAction.toggleMultiselect - ].contains(action) || - payments.length == 1, - 'Cannot perform this action on more than one payment'); - if (payments.isEmpty) { return; } diff --git a/lib/ui/app/tables/entity_datatable.dart b/lib/ui/app/tables/entity_datatable.dart index 994da199b..dcda68845 100644 --- a/lib/ui/app/tables/entity_datatable.dart +++ b/lib/ui/app/tables/entity_datatable.dart @@ -73,7 +73,12 @@ class EntityDataTableSource extends DataTableSource { ), ActionMenuButton( entityActions: entity.getActions( - userCompany: state.userCompany, includeEdit: true), + userCompany: state.userCompany, + includeEdit: true, + client: entity is BelongsToClient + ? state.clientState + .map[(entity as BelongsToClient)?.clientId] + : null), isSaving: false, entity: entity, onSelected: (context, action) => diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index d31e59661..de21cf860 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -47,6 +47,8 @@ IconData getEntityActionIcon(EntityAction entityAction) { return Icons.stop; case EntityAction.settings: return Icons.settings; + case EntityAction.refund: + return Icons.remove_circle_outline; default: return null; }