From 92cff82184129226a6b897dd4bfb0a143f31a968 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Tue, 14 Dec 2021 22:05:17 +0200 Subject: [PATCH] feat: add edit locking transactions. --- .../LockingTransactionsDialogContent.js | 7 ++++- .../LockingTransactionsForm.js | 29 ++++++++++++++----- .../LockingTransactionsFormProvider.js | 23 +++++++++++++-- .../LockingTransactionsDialog/index.js | 3 +- .../Bills/BillsLanding/components.js | 3 +- .../Invoices/InvoicesLanding/components.js | 2 +- .../TransactionsLockingList.js | 7 +++-- .../TransactionsLocking/components.js | 2 +- src/hooks/query/transactionsLocking.js | 15 +++++++++- src/hooks/query/types.js | 1 + 10 files changed, 73 insertions(+), 19 deletions(-) diff --git a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsDialogContent.js b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsDialogContent.js index 326dfdde6..97f02a41a 100644 --- a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsDialogContent.js +++ b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsDialogContent.js @@ -9,9 +9,14 @@ export default function LockingTransactionsDialogContent({ // #ownProps dialogName, moduleName, + isEnabled, }) { return ( - + ); diff --git a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsForm.js b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsForm.js index 2ff1aef29..73a1113e2 100644 --- a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsForm.js +++ b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsForm.js @@ -13,7 +13,7 @@ import { useLockingTransactionsContext } from './LockingTransactionsFormProvider import LockingTransactionsFormContent from './LockingTransactionsFormContent'; import withDialogActions from 'containers/Dialog/withDialogActions'; -import { compose } from 'utils'; +import { compose, transformToForm } from 'utils'; const defaultInitialValues = { module: '', @@ -28,14 +28,29 @@ function LockingTransactionsForm({ // #withDialogActions closeDialog, }) { - const { dialogName, moduleName, createLockingTransactionMutate } = - useLockingTransactionsContext(); + const { + dialogName, + moduleName, + transactionLocking, + isEnabled, + createLockingTransactionMutate, + } = useLockingTransactionsContext(); // Initial form values. - const initialValues = { - ...defaultInitialValues, - module: moduleName, - }; + const initialValues = React.useMemo( + () => ({ + ...(!isEnabled + ? { + ...defaultInitialValues, + module: moduleName, + } + : { + ...transformToForm(transactionLocking, defaultInitialValues), + module: moduleName, + }), + }), + [isEnabled], + ); // Handles the form submit. const handleFormSubmit = (values, { setSubmitting, setErrors }) => { diff --git a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsFormProvider.js b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsFormProvider.js index 4532f8e7d..49571ea62 100644 --- a/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsFormProvider.js +++ b/src/containers/Dialogs/LockingTransactionsDialog/LockingTransactionsFormProvider.js @@ -1,25 +1,42 @@ import React from 'react'; import { DialogContent } from 'components'; -import { useCreateLockingTransactoin } from 'hooks/query'; +import { + useCreateLockingTransactoin, + useEditTransactionsLocking, +} from 'hooks/query'; const LockingTransactionsContext = React.createContext(); /** * Locking transactions form provider. */ -function LockingTransactionsFormProvider({ moduleName, dialogName, ...props }) { +function LockingTransactionsFormProvider({ + moduleName, + isEnabled, + dialogName, + ...props +}) { // Create locking transactions mutations. const { mutateAsync: createLockingTransactionMutate } = useCreateLockingTransactoin(); + const { data: transactionLocking, isLoading: isTransactionsLockingLoading } = + useEditTransactionsLocking(moduleName, { + enabled: !!isEnabled, + }); + + // const isEnabled = transactionLocking?.is_enabled; + // State provider. const provider = { dialogName, moduleName, createLockingTransactionMutate, + transactionLocking, + isEnabled, }; return ( - + ); diff --git a/src/containers/Dialogs/LockingTransactionsDialog/index.js b/src/containers/Dialogs/LockingTransactionsDialog/index.js index b3bcbb20a..d4b360653 100644 --- a/src/containers/Dialogs/LockingTransactionsDialog/index.js +++ b/src/containers/Dialogs/LockingTransactionsDialog/index.js @@ -12,7 +12,7 @@ const LockingTransactionsDialogContent = React.lazy(() => */ function LockingTransactionsDialog({ dialogName, - payload: { module }, + payload: { module, isEnabled }, isOpen, }) { return ( @@ -28,6 +28,7 @@ function LockingTransactionsDialog({ diff --git a/src/containers/Purchases/Bills/BillsLanding/components.js b/src/containers/Purchases/Bills/BillsLanding/components.js index 72d176065..02b7abb3d 100644 --- a/src/containers/Purchases/Bills/BillsLanding/components.js +++ b/src/containers/Purchases/Bills/BillsLanding/components.js @@ -137,8 +137,7 @@ export function StatusAccessor(bill) { animate={false} stripes={false} intent={Intent.PRIMARY} - value={calculateStatus(bill.credited_amount, bill.amount)} - // value={calculateStatus(bill.payment_amount, bill.amount)} + value={calculateStatus(bill.balance, bill.amount)} /> diff --git a/src/containers/Sales/Invoices/InvoicesLanding/components.js b/src/containers/Sales/Invoices/InvoicesLanding/components.js index 3d3ee0bb7..59d88c3a1 100644 --- a/src/containers/Sales/Invoices/InvoicesLanding/components.js +++ b/src/containers/Sales/Invoices/InvoicesLanding/components.js @@ -64,7 +64,7 @@ export const statusAccessor = (row) => { animate={false} stripes={false} intent={Intent.PRIMARY} - value={calculateStatus(row.credited_amount, row.balance)} + value={calculateStatus(row.balance_amount, row.balance)} /> diff --git a/src/containers/TransactionsLocking/TransactionsLockingList.js b/src/containers/TransactionsLocking/TransactionsLockingList.js index 91c0d8247..0ebe37a4d 100644 --- a/src/containers/TransactionsLocking/TransactionsLockingList.js +++ b/src/containers/TransactionsLocking/TransactionsLockingList.js @@ -176,8 +176,11 @@ function TransactionsLockingBodyJsx({ } = useTransactionsLockingContext(); // Handle locking transactions. - const handleLockingTransactions = (module) => { - openDialog('locking-transactions', { module: module }); + const handleLockingTransactions = (module, isEnabled) => { + openDialog('locking-transactions', { + module: module, + isEnabled: isEnabled, + }); }; // Handle unlocking transactions diff --git a/src/containers/TransactionsLocking/components.js b/src/containers/TransactionsLocking/components.js index 0ed09c935..0bee8169f 100644 --- a/src/containers/TransactionsLocking/components.js +++ b/src/containers/TransactionsLocking/components.js @@ -59,7 +59,7 @@ export const TransactionLockingContent = ({ onCancle, }) => { const handleLockClick = (event) => { - safeInvoke(onLock, module, event); + safeInvoke(onLock, module, isEnabled, event); }; const handleEditBtn = (event) => { safeInvoke(onEditLock, module, event); diff --git a/src/hooks/query/transactionsLocking.js b/src/hooks/query/transactionsLocking.js index 943a35abc..8de5016d0 100644 --- a/src/hooks/query/transactionsLocking.js +++ b/src/hooks/query/transactionsLocking.js @@ -7,7 +7,8 @@ import t from './types'; // Common invalidate queries. const commonInvalidateQueries = (queryClient) => { - // Invalidate customers. + // Invalidate. + queryClient.invalidateQueries(t.TRANSACTION_LOCKING); queryClient.invalidateQueries(t.TRANSACTIONS_LOCKING); }; @@ -100,3 +101,15 @@ export function useTransactionsLocking(query, props) { }, ); } + +export function useEditTransactionsLocking(query, props) { + return useRequestQuery( + [t.TRANSACTION_LOCKING, query], + { method: 'get', url: `transactions-locking/${query}` }, + { + select: (res) => res.data.data, + defaultData: [], + ...props, + }, + ); +} diff --git a/src/hooks/query/types.js b/src/hooks/query/types.js index 4961c186e..6a6d637fc 100644 --- a/src/hooks/query/types.js +++ b/src/hooks/query/types.js @@ -185,6 +185,7 @@ const CASH_FLOW_ACCOUNTS = { }; const TARNSACTIONS_LOCKING = { + TRANSACTION_LOCKING: 'TRANSACTION_LOCKING', TRANSACTIONS_LOCKING: 'TRANSACTIONS_LOCKING', };