From eeb16f4362af547ac5b2668ed57c616bd1a66389 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Tue, 30 Nov 2021 21:04:36 +0200 Subject: [PATCH] feat: add create & edit & delete in credit note. --- src/common/tables.js | 2 + .../CreditNotes/CreditNoteDeleteAlert.js | 26 ++- .../InviteUserDialog/InviteUserFormContent.js | 2 +- .../VendorCreditNoteFloatingActions.js | 2 + .../VendorsCreditNoteDataTable.js | 2 +- .../CreditNoteFloatingActions.js | 70 ++++++-- .../CreditNoteForm/CreditNoteForm.js | 91 +++++++--- .../CreditNoteForm/CreditNoteForm.schema.js | 86 +++++---- .../CreditNoteForm/CreditNoteFormFooter.js | 4 +- .../CreditNoteFormHeaderFields.js | 12 +- .../CreditNoteForm/CreditNoteFormProvider.js | 37 ++-- .../Sales/CreditNotes/CreditNoteForm/utils.js | 57 ++++-- .../CreditNotesActionsBar.js | 41 ++++- .../CreditNotesDataTable.js | 32 ++-- .../CreditNotesEmptyStatus.js | 9 +- .../CreditNotesLanding/CreditNotesList.js | 15 +- .../CreditNotesListProvider.js | 55 +++++- .../CreditNotesLanding/CreditNotesViewTabs.js | 15 +- .../CreditNotesLanding/components.js | 32 ++-- .../withCreditNotesActions.js | 9 +- src/hooks/query/creditNote.js | 168 ++++++++++++++++++ src/hooks/query/index.js | 7 +- src/hooks/query/invoices.js | 1 + src/lang/en/index.json | 81 +++++---- src/routes/dashboard.js | 10 +- src/store/CreditNotes/creditNotes.actions.js | 4 +- src/store/CreditNotes/creditNotes.reducer.js | 2 +- src/store/CreditNotes/creditNotes.selector.js | 3 +- src/store/CreditNotes/creditNotes.type.js | 4 +- 29 files changed, 644 insertions(+), 235 deletions(-) create mode 100644 src/hooks/query/creditNote.js diff --git a/src/common/tables.js b/src/common/tables.js index 9acd9bd5c..59d6ca127 100644 --- a/src/common/tables.js +++ b/src/common/tables.js @@ -14,6 +14,8 @@ export const TABLES = { EXPENSES: 'expenses', CASHFLOW_ACCOUNTS: 'cashflow_accounts', CASHFLOW_Transactions: 'cashflow_transactions', + CREDIT_NOTES: 'credit_notes', + VENDOR_CREDITS: 'vendor_credits', }; export const TABLE_SIZE = { diff --git a/src/containers/Alerts/CreditNotes/CreditNoteDeleteAlert.js b/src/containers/Alerts/CreditNotes/CreditNoteDeleteAlert.js index 28d6a3bc8..f7cc492c9 100644 --- a/src/containers/Alerts/CreditNotes/CreditNoteDeleteAlert.js +++ b/src/containers/Alerts/CreditNotes/CreditNoteDeleteAlert.js @@ -8,6 +8,7 @@ import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; import withAlertActions from 'containers/Alert/withAlertActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions'; +import { useDeleteCreditNote } from 'hooks/query'; import { compose } from 'utils'; /** @@ -26,11 +27,32 @@ function CreditNoteDeleteAlert({ // #withDrawerActions closeDrawer, }) { + const { isLoading, mutateAsync: deleteCreditNoteMutate } = + useDeleteCreditNote(); + // handle cancel delete credit note alert. const handleCancelDeleteAlert = () => { closeAlert(name); }; - const handleConfirmCreditNoteDelete = () => {}; + const handleConfirmCreditNoteDelete = () => { + deleteCreditNoteMutate(creditNoteId) + .then(() => { + AppToaster.show({ + message: intl.get('credit_note.alert.success_message'), + intent: Intent.SUCCESS, + }); + }) + .catch( + ({ + response: { + data: { errors }, + }, + }) => {}, + ) + .finally(() => { + closeAlert(name); + }); + }; return (

diff --git a/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js b/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js index c66fe492f..9e10bf849 100644 --- a/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js +++ b/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js @@ -24,7 +24,7 @@ function InviteUserFormContent({ const handleClose = () => { closeDialog(dialogName); }; - console.log(roles, 'XX'); + return (

diff --git a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFloatingActions.js b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFloatingActions.js index 3affd700e..d831d0666 100644 --- a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFloatingActions.js +++ b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFloatingActions.js @@ -66,6 +66,7 @@ export default function VendorCreditNoteFloatingActions() { // Handle submit button click. const handleSubmitBtnClick = (event) => { setSubmitPayload({ redirect: true }); + submitForm(); }; const handleClearBtnClick = (event) => { @@ -80,6 +81,7 @@ export default function VendorCreditNoteFloatingActions() { disabled={isSubmitting} loading={isSubmitting} intent={Intent.PRIMARY} + onClick={handleSubmitBtnClick} text={} /> diff --git a/src/containers/Purchases/CreditNotes/CreditNotesLanding/VendorsCreditNoteDataTable.js b/src/containers/Purchases/CreditNotes/CreditNotesLanding/VendorsCreditNoteDataTable.js index 7cf8d381e..7532610d2 100644 --- a/src/containers/Purchases/CreditNotes/CreditNotesLanding/VendorsCreditNoteDataTable.js +++ b/src/containers/Purchases/CreditNotes/CreditNotesLanding/VendorsCreditNoteDataTable.js @@ -48,7 +48,7 @@ function VendorsCreditNoteDataTable({ // Local storage memorizing columns widths. const [initialColumnsWidths, , handleColumnResizing] = - useMemorizedColumnsWidths(TABLES.CREDIT_NOTE); + useMemorizedColumnsWidths(TABLES.VENDOR_CREDITS); // Handles fetch data once the table state change. const handleDataTableFetchData = React.useCallback( diff --git a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFloatingActions.js b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFloatingActions.js index 398680493..727643a7b 100644 --- a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFloatingActions.js +++ b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFloatingActions.js @@ -26,32 +26,76 @@ export default function CreditNoteFloatingActions() { const { resetForm, submitForm, isSubmitting } = useFormikContext(); // Credit note form context. - const { setSubmitPayload } = useCreditNoteFormContext(); + const { setSubmitPayload, isNewMode } = useCreditNoteFormContext(); + + // Handle submit, save and anothe new button click. + const handleSubmitAndNewBtnClick = (event) => { + setSubmitPayload({ redirect: false, status: true, resetForm: true }); + submitForm(); + }; + + // Handle submit as save & continue editing button click. + const handleSubmitSaveContinueEditingBtnClick = (event) => { + setSubmitPayload({ redirect: false, status: true }); + submitForm(); + }; + + // Handle submit as draft button click. + const handleSubmitDraftBtnClick = (event) => { + setSubmitPayload({ redirect: true, status: false }); + submitForm(); + }; + + // handle submit as draft & new button click. + const handleSubmitDraftAndNewBtnClick = (event) => { + setSubmitPayload({ redirect: false, status: false, resetForm: true }); + submitForm(); + }; + + // Handle submit as draft & continue editing button click. + const handleSubmitDraftContinueEditingBtnClick = (event) => { + setSubmitPayload({ redirect: false, status: false }); + submitForm(); + }; // Handle cancel button click. const handleCancelBtnClick = (event) => { history.goBack(); }; + // Handle submit button click. + const handleSubmitBtnClick = (event) => { + setSubmitPayload({ redirect: true }); + submitForm(); + }; + const handleClearBtnClick = (event) => { resetForm(); }; return (
- {/* ----------- Save And Deliver ----------- */} + {/* ----------- Save ----------- */}