From ec5cc4ea37c64c824333ebf8c3ce86c0ac533067 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 19 May 2025 13:36:10 +0700 Subject: [PATCH] adding deduct origin on transfer fee --- .../transfer/transferfee/blocks/AddDialog.tsx | 98 +++++++++++++++- .../transferfee/blocks/EditDialog.tsx | 109 +++++++++++++++++- .../hooks/ManageTransferFeeContext.tsx | 28 ++++- 3 files changed, 222 insertions(+), 13 deletions(-) diff --git a/src/pages/transfer/transferfee/blocks/AddDialog.tsx b/src/pages/transfer/transferfee/blocks/AddDialog.tsx index ff0ff5a..f6a736e 100644 --- a/src/pages/transfer/transferfee/blocks/AddDialog.tsx +++ b/src/pages/transfer/transferfee/blocks/AddDialog.tsx @@ -106,6 +106,7 @@ const AddFeeDialog = () => { created_by: '', created_at: '', deduct_from: '', + deduct_origin: '00000000-0000-0000-0000-000000000000', deduct_from_account: '', credit_to: '', credit_destination: '00000000-0000-0000-0000-000000000000', @@ -296,6 +297,14 @@ const AddFeeDialog = () => { return; } + if (formField.deduct_from === 'I' && !formField.deduct_origin) { + setAlert({ + show: true, + message: 'Deduct Origin is required when Input is selected' + }); + setIsSubmitting(false); + return; + } setAlert({ show: false, message: '' }); const payload = { ...formField }; @@ -304,6 +313,9 @@ const AddFeeDialog = () => { payload.credit_destination = '00000000-0000-0000-0000-000000000000'; } + if (formField.deduct_from !== 'I') { + payload.deduct_origin = '00000000-0000-0000-0000-000000000000'; + } try { const response = await PostData(`${API_URL}/transactionfees/create`, payload); @@ -557,7 +569,13 @@ const AddFeeDialog = () => { + {formField.deduct_from === 'I' && ( +
+ +
+
setOpen(!open)} + > + + {customers.find((customer) => customer.id === formField.deduct_origin) + ?.username || 'Search customer...'} + + +
+ + {open && ( +
+
+ setCustomerSearchTerm(e.target.value)} + autoComplete="off" + onClick={(e) => e.stopPropagation()} + autoFocus + /> +
+
+ {customers + .filter( + (customer) => + customer.username + .toLowerCase() + .includes(customerSearchTerm.toLowerCase()) || + customer.msisdn.includes(customerSearchTerm) + ) + .map((customer) => ( +
{ + setFormField({ + ...formField, + deduct_origin: customer.id + }); + setOpen(false); + }} + > + {customer.username} +
+ ))} + {customers.filter( + (customer) => + customer.username + .toLowerCase() + .includes(customerSearchTerm.toLowerCase()) || + customer.msisdn.includes(customerSearchTerm) + ).length === 0 && ( +
+ No customer found +
+ )} +
+
+ )} +
+
+ )} +
{renderSelectWithLoading( formField.deduct_from_account, @@ -580,6 +672,7 @@ const AddFeeDialog = () => { isLoadingWallets )}
+
)} +
+ {formField.deduct_from === 'I' && ( +
+ +
+
setOpen(!open)} + > + + {customers.find((customer) => customer.id === formField.deduct_origin) + ?.username || 'Search customer...'} + + +
+ + {open && ( +
+
+ setCustomerSearchTerm(e.target.value)} + autoComplete="off" + onClick={(e) => e.stopPropagation()} + autoFocus + /> +
+
+ {customers + .filter( + (customer) => + customer.username + .toLowerCase() + .includes(customerSearchTerm.toLowerCase()) || + customer.msisdn.includes(customerSearchTerm) + ) + .map((customer) => ( +
{ + setFormField({ + ...formField, + deduct_origin: customer.id + }); + setOpen(false); + }} + > + {customer.username} +
+ ))} + {customers.filter( + (customer) => + customer.username + .toLowerCase() + .includes(customerSearchTerm.toLowerCase()) || + customer.msisdn.includes(customerSearchTerm) + ).length === 0 && ( +
+ No customer found +
+ )} +
+
+ )} +
+
+ )} +
{renderSelectWithLoading( formField.deduct_from_account, @@ -630,7 +730,6 @@ const EditFeeDialog = () => { isLoadingWallets )}
-
- -