From 932750b62da2a0f7c6a1a1295a4c20cdbff7ea61 Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Sun, 28 May 2023 14:44:50 +0200 Subject: [PATCH] fix(webapp): fix credit note and receipt auto-increment --- .../Accounting/MakeJournal/MakeJournalEntriesForm.tsx | 3 ++- .../MakeJournal/MakeJournalEntriesHeaderFields.tsx | 7 ++++--- .../Accounting/MakeJournal/MakeJournalFormDialogs.tsx | 8 +++++++- .../containers/Accounting/MakeJournal/components.tsx | 7 +++++-- .../src/containers/Accounting/MakeJournal/utils.tsx | 3 +-- .../CreditNotes/CreditNoteForm/CreditNoteForm.tsx | 4 ++++ .../CreditNoteForm/CreditNoteFormDialogs.tsx | 10 ++++++++-- .../CreditNoteForm/CreditNoteFormHeaderFields.tsx | 8 ++++++-- .../Sales/CreditNotes/CreditNoteForm/components.tsx | 7 +++++-- .../Sales/CreditNotes/CreditNoteForm/utils.tsx | 3 ++- .../Sales/Receipts/ReceiptForm/ReceiptFormDialogs.tsx | 8 +++++++- .../Receipts/ReceiptForm/ReceiptFormHeaderFields.tsx | 5 +++++ .../Sales/Receipts/ReceiptForm/components.tsx | 7 +++++-- .../containers/Sales/Receipts/ReceiptForm/utils.tsx | 2 ++ 14 files changed, 63 insertions(+), 19 deletions(-) diff --git a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.tsx b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.tsx index f98d6af97..205d4c0b4 100644 --- a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.tsx +++ b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.tsx @@ -71,6 +71,8 @@ function MakeJournalEntriesForm({ } : { ...defaultManualJournal, + // If the auto-increment mode is enabled, take the next journal + // number from the settings. ...(journalAutoIncrement && { journal_number: journalNumber, }), @@ -127,7 +129,6 @@ function MakeJournalEntriesForm({ transformErrors(errors, { setErrors }); setSubmitting(false); }; - // Handle the request success. const handleSuccess = (errors) => { AppToaster.show({ diff --git a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.tsx b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.tsx index 82eb9d505..ae9c18f2e 100644 --- a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.tsx +++ b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.tsx @@ -27,6 +27,7 @@ import { CurrencySelectList, FormattedMessage as T, FInputGroup, + FFormGroup, } from '@/components'; import { useMakeJournalFormContext } from './MakeJournalProvider'; import { JournalExchangeRateInputField } from './components'; @@ -74,7 +75,7 @@ const MakeJournalTransactionNoField = R.compose( }; return ( - } labelInfo={ @@ -91,10 +92,10 @@ const MakeJournalTransactionNoField = R.compose( {}} /> - + ); }, ); diff --git a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.tsx b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.tsx index 6a8123d86..197ce96dd 100644 --- a/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.tsx +++ b/packages/webapp/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.tsx @@ -11,8 +11,14 @@ export default function MakeJournalFormDialogs() { // Update the form once the journal number form submit confirm. const handleConfirm = (settings) => { + // Set the invoice transaction no. that cames from dialog to the form. + // the `journal_number` will be empty except the increment mode is not auto. setFieldValue('journal_number', settings.transactionNumber); - setFieldValue('journal_number_manually', settings.transactionNumber); + setFieldValue('journal_number_manually', ''); + + if (settings.incrementMode !== 'auto') { + setFieldValue('journal_number_manually', settings.transactionNumber); + } }; return ( diff --git a/packages/webapp/src/containers/Accounting/MakeJournal/components.tsx b/packages/webapp/src/containers/Accounting/MakeJournal/components.tsx index 07b985230..c413d74b1 100644 --- a/packages/webapp/src/containers/Accounting/MakeJournal/components.tsx +++ b/packages/webapp/src/containers/Accounting/MakeJournal/components.tsx @@ -218,10 +218,13 @@ export const JournalSyncIncrementSettingsToForm = R.compose( const { setFieldValue } = useFormikContext(); useUpdateEffect(() => { + // Do not update if the journal auto-increment mode is disabled. if (!journalAutoIncrement) return null; - const journalNo = transactionNumber(journalNumberPrefix, journalNextNumber); - setFieldValue('journal_number', journalNo); + setFieldValue( + 'journal_number', + transactionNumber(journalNumberPrefix, journalNextNumber), + ); }, [ setFieldValue, journalNumberPrefix, diff --git a/packages/webapp/src/containers/Accounting/MakeJournal/utils.tsx b/packages/webapp/src/containers/Accounting/MakeJournal/utils.tsx index 61fd41208..8e42a6630 100644 --- a/packages/webapp/src/containers/Accounting/MakeJournal/utils.tsx +++ b/packages/webapp/src/containers/Accounting/MakeJournal/utils.tsx @@ -6,7 +6,6 @@ import intl from 'react-intl-universal'; import { Intent } from '@blueprintjs/core'; import { sumBy, setWith, toSafeInteger, get, first } from 'lodash'; import { - transactionNumber, updateTableCell, repeatValue, transformToForm, @@ -46,7 +45,7 @@ export const defaultEntry = { export const defaultManualJournal = { journal_number: '', - journal_number_manually: false, + journal_number_manually: '', journal_type: 'Journal', date: moment(new Date()).format('YYYY-MM-DD'), description: '', diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteForm.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteForm.tsx index bc8c2410b..ec8467061 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteForm.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteForm.tsx @@ -162,7 +162,11 @@ function CreditNoteForm({ + + {/*-------- Dialogs --------*/} + + {/*-------- Effects --------*/} diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormDialogs.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormDialogs.tsx index 726013312..b519242b7 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormDialogs.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormDialogs.tsx @@ -8,11 +8,17 @@ import CreditNoteNumberDialog from '@/containers/Dialogs/CreditNoteNumberDialog' */ export default function CreditNoteFormDialogs() { const { setFieldValue } = useFormikContext(); - + // Update the form once the credit number form submit confirm. const handleCreditNumberFormConfirm = (settings) => { + // Set the credit note transaction no. that cames from dialog to the form. + // the `credit_note_number` will be empty except the increment mode is not auto. setFieldValue('credit_note_number', settings.transactionNumber); - setFieldValue('credit_note_no_manually', settings.transactionNumber); + setFieldValue('credit_note_number_manually', ''); + + if (settings.incrementMode !== 'auto') { + setFieldValue('credit_note_number_manually', settings.transactionNumber); + } }; return ( diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.tsx index 2d192175e..fac113606 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.tsx @@ -60,10 +60,12 @@ const CreditNoteTransactionNoField = R.compose( const handleCreditNumberChange = () => { openDialog('credit-number-form'); }; - // Handle credit no. field blur. + // Handle credit note no. field blur. const handleCreditNoBlur = (event) => { const newValue = event.target.value; + // Show the confirmation dialog if the value has changed and auto-increment + // mode is enabled. if (values.credit_note_no !== newValue && creditAutoIncrement) { openDialog('credit-number-form', { initialFormValues: { @@ -72,6 +74,8 @@ const CreditNoteTransactionNoField = R.compose( }, }); } + // Setting the credit note number to the form will be manually in case + // auto-increment is disable. if (!creditAutoIncrement) { setFieldValue('credit_note_number', newValue); setFieldValue('credit_note_number_manually', newValue); @@ -92,6 +96,7 @@ const CreditNoteTransactionNoField = R.compose( value={values.credit_note_number} asyncControl={true} onBlur={handleCreditNoBlur} + onChange={() => {}} /> - {/* ----------- Credit note date ----------- */} {({ form, field: { value }, meta: { error, touched } }) => ( diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/components.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/components.tsx index a8342a4a6..2902299fa 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/components.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/components.tsx @@ -45,10 +45,13 @@ export const CreditNoteSyncIncrementSettingsToForm = R.compose( const { setFieldValue } = useFormikContext(); useEffect(() => { + // Do not update if the credit note auto-increment mode is disabled. if (!creditAutoIncrement) return; - const creditNo = transactionNumber(creditNumberPrefix, creditNextNumber); - setFieldValue('credit_note_number', creditNo); + setFieldValue( + 'credit_note_number', + transactionNumber(creditNumberPrefix, creditNextNumber), + ); }, [setFieldValue, creditNumberPrefix, creditNextNumber]); return null; diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/utils.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/utils.tsx index 46beaa711..11ffb118d 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/utils.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/utils.tsx @@ -40,7 +40,8 @@ export const defaultCreditNote = { customer_id: '', credit_note_date: moment(new Date()).format('YYYY-MM-DD'), credit_note_number: '', - credit_note_no_manually: false, + // Holds the credit note number that entered manually only. + credit_note_number_manually: false, open: '', reference_no: '', note: '', diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.tsx index c60aca031..4fe2cb947 100644 --- a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.tsx +++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.tsx @@ -11,8 +11,14 @@ export default function ReceiptFormDialogs() { // Update the form once the receipt number form submit confirm. const handleReceiptNumberFormConfirm = (settings) => { + // Set the receipt transaction no. that cames from dialog to the form. + // the `receipt_no_manually` will be empty except the increment mode is not auto. setFieldValue('receipt_number', settings.transactionNumber); - setFieldValue('receipt_number_manually', settings.transactionNumber); + setFieldValue('receipt_number_manually', ''); + + if (settings.incrementMode !== 'auto') { + setFieldValue('receipt_number_manually', settings.transactionNumber); + } }; return ( diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.tsx index 235501592..ff62e984a 100644 --- a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.tsx +++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.tsx @@ -70,6 +70,8 @@ const ReceiptFormReceiptNumberField = R.compose( const handleReceiptNoBlur = (event) => { const newValue = event.target.value; + // Show the confirmation dialog if the value has changed and auto-increment + // mode is enabled. if (values.receipt_number !== newValue && receiptAutoIncrement) { openDialog('receipt-number-form', { initialFormValues: { @@ -78,6 +80,8 @@ const ReceiptFormReceiptNumberField = R.compose( }, }); } + // Setting the receipt number to the form will be manually in case + // auto-increment is disable. if (!receiptAutoIncrement) { setFieldValue('receipt_number', newValue); setFieldValue('receipt_number_manually', newValue); @@ -98,6 +102,7 @@ const ReceiptFormReceiptNumberField = R.compose( value={values.receipt_number} asyncControl={true} onBlur={handleReceiptNoBlur} + onChange={() => {}} /> { + // Do not update if the receipt auto-increment mode is disabled. if (!receiptAutoIncrement) return; - const receiptNo = transactionNumber(receiptNumberPrefix, receiptNextNumber); - setFieldValue('receipt_number', receiptNo); + setFieldValue( + 'receipt_number', + transactionNumber(receiptNumberPrefix, receiptNextNumber), + ); }, [ setFieldValue, receiptNumberPrefix, diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx index 3abeb7fb1..4dcaec4b2 100644 --- a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx +++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx @@ -36,6 +36,8 @@ export const defaultReceipt = { customer_id: '', deposit_account_id: '', receipt_number: '', + // Holds the receipt number that entered manually only. + receipt_number_manually: '', receipt_date: moment(new Date()).format('YYYY-MM-DD'), reference_no: '', receipt_message: '',