fix(webapp): fix credit note and receipt auto-increment

This commit is contained in:
a.bouhuolia
2023-05-28 14:44:50 +02:00
parent c90ffed67f
commit 932750b62d
14 changed files with 63 additions and 19 deletions

View File

@@ -162,7 +162,11 @@ function CreditNoteForm({
<CreditNoteItemsEntriesEditorField />
<CreditNoteFormFooter />
<CreditNoteFloatingActions />
{/*-------- Dialogs --------*/}
<CreditNoteFormDialogs />
{/*-------- Effects --------*/}
<CreditNoteSyncIncrementSettingsToForm />
</Form>
</Formik>

View File

@@ -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 (

View File

@@ -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={() => {}}
/>
<InputPrependButton
buttonProps={{
@@ -165,7 +170,6 @@ export default function CreditNoteFormHeaderFields({}) {
name={'exchange_rate'}
formGroupProps={{ label: ' ', inline: true }}
/>
{/* ----------- Credit note date ----------- */}
<FastField name={'credit_note_date'}>
{({ form, field: { value }, meta: { error, touched } }) => (

View File

@@ -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;

View File

@@ -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: '',