mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 06:40:31 +00:00
fix(webapp): fix credit note and receipt auto-increment
This commit is contained in:
@@ -71,6 +71,8 @@ function MakeJournalEntriesForm({
|
|||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
...defaultManualJournal,
|
...defaultManualJournal,
|
||||||
|
// If the auto-increment mode is enabled, take the next journal
|
||||||
|
// number from the settings.
|
||||||
...(journalAutoIncrement && {
|
...(journalAutoIncrement && {
|
||||||
journal_number: journalNumber,
|
journal_number: journalNumber,
|
||||||
}),
|
}),
|
||||||
@@ -127,7 +129,6 @@ function MakeJournalEntriesForm({
|
|||||||
transformErrors(errors, { setErrors });
|
transformErrors(errors, { setErrors });
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Handle the request success.
|
// Handle the request success.
|
||||||
const handleSuccess = (errors) => {
|
const handleSuccess = (errors) => {
|
||||||
AppToaster.show({
|
AppToaster.show({
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
CurrencySelectList,
|
CurrencySelectList,
|
||||||
FormattedMessage as T,
|
FormattedMessage as T,
|
||||||
FInputGroup,
|
FInputGroup,
|
||||||
|
FFormGroup,
|
||||||
} from '@/components';
|
} from '@/components';
|
||||||
import { useMakeJournalFormContext } from './MakeJournalProvider';
|
import { useMakeJournalFormContext } from './MakeJournalProvider';
|
||||||
import { JournalExchangeRateInputField } from './components';
|
import { JournalExchangeRateInputField } from './components';
|
||||||
@@ -74,7 +75,7 @@ const MakeJournalTransactionNoField = R.compose(
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup
|
<FFormGroup
|
||||||
name={'journal_number'}
|
name={'journal_number'}
|
||||||
label={<T id={'journal_no'} />}
|
label={<T id={'journal_no'} />}
|
||||||
labelInfo={
|
labelInfo={
|
||||||
@@ -91,10 +92,10 @@ const MakeJournalTransactionNoField = R.compose(
|
|||||||
<FInputGroup
|
<FInputGroup
|
||||||
name={'journal_number'}
|
name={'journal_number'}
|
||||||
fill={true}
|
fill={true}
|
||||||
value={values.journal_number}
|
|
||||||
asyncControl={true}
|
asyncControl={true}
|
||||||
onBlur={handleJournalNoBlur}
|
onBlur={handleJournalNoBlur}
|
||||||
fastField={true}
|
fastField={true}
|
||||||
|
onChange={() => {}}
|
||||||
/>
|
/>
|
||||||
<InputPrependButton
|
<InputPrependButton
|
||||||
buttonProps={{
|
buttonProps={{
|
||||||
@@ -108,7 +109,7 @@ const MakeJournalTransactionNoField = R.compose(
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</ControlGroup>
|
</ControlGroup>
|
||||||
</FormGroup>
|
</FFormGroup>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -11,8 +11,14 @@ export default function MakeJournalFormDialogs() {
|
|||||||
|
|
||||||
// Update the form once the journal number form submit confirm.
|
// Update the form once the journal number form submit confirm.
|
||||||
const handleConfirm = (settings) => {
|
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', settings.transactionNumber);
|
||||||
setFieldValue('journal_number_manually', settings.transactionNumber);
|
setFieldValue('journal_number_manually', '');
|
||||||
|
|
||||||
|
if (settings.incrementMode !== 'auto') {
|
||||||
|
setFieldValue('journal_number_manually', settings.transactionNumber);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -218,10 +218,13 @@ export const JournalSyncIncrementSettingsToForm = R.compose(
|
|||||||
const { setFieldValue } = useFormikContext();
|
const { setFieldValue } = useFormikContext();
|
||||||
|
|
||||||
useUpdateEffect(() => {
|
useUpdateEffect(() => {
|
||||||
|
// Do not update if the journal auto-increment mode is disabled.
|
||||||
if (!journalAutoIncrement) return null;
|
if (!journalAutoIncrement) return null;
|
||||||
|
|
||||||
const journalNo = transactionNumber(journalNumberPrefix, journalNextNumber);
|
setFieldValue(
|
||||||
setFieldValue('journal_number', journalNo);
|
'journal_number',
|
||||||
|
transactionNumber(journalNumberPrefix, journalNextNumber),
|
||||||
|
);
|
||||||
}, [
|
}, [
|
||||||
setFieldValue,
|
setFieldValue,
|
||||||
journalNumberPrefix,
|
journalNumberPrefix,
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import intl from 'react-intl-universal';
|
|||||||
import { Intent } from '@blueprintjs/core';
|
import { Intent } from '@blueprintjs/core';
|
||||||
import { sumBy, setWith, toSafeInteger, get, first } from 'lodash';
|
import { sumBy, setWith, toSafeInteger, get, first } from 'lodash';
|
||||||
import {
|
import {
|
||||||
transactionNumber,
|
|
||||||
updateTableCell,
|
updateTableCell,
|
||||||
repeatValue,
|
repeatValue,
|
||||||
transformToForm,
|
transformToForm,
|
||||||
@@ -46,7 +45,7 @@ export const defaultEntry = {
|
|||||||
|
|
||||||
export const defaultManualJournal = {
|
export const defaultManualJournal = {
|
||||||
journal_number: '',
|
journal_number: '',
|
||||||
journal_number_manually: false,
|
journal_number_manually: '',
|
||||||
journal_type: 'Journal',
|
journal_type: 'Journal',
|
||||||
date: moment(new Date()).format('YYYY-MM-DD'),
|
date: moment(new Date()).format('YYYY-MM-DD'),
|
||||||
description: '',
|
description: '',
|
||||||
|
|||||||
@@ -162,7 +162,11 @@ function CreditNoteForm({
|
|||||||
<CreditNoteItemsEntriesEditorField />
|
<CreditNoteItemsEntriesEditorField />
|
||||||
<CreditNoteFormFooter />
|
<CreditNoteFormFooter />
|
||||||
<CreditNoteFloatingActions />
|
<CreditNoteFloatingActions />
|
||||||
|
|
||||||
|
{/*-------- Dialogs --------*/}
|
||||||
<CreditNoteFormDialogs />
|
<CreditNoteFormDialogs />
|
||||||
|
|
||||||
|
{/*-------- Effects --------*/}
|
||||||
<CreditNoteSyncIncrementSettingsToForm />
|
<CreditNoteSyncIncrementSettingsToForm />
|
||||||
</Form>
|
</Form>
|
||||||
</Formik>
|
</Formik>
|
||||||
|
|||||||
@@ -11,8 +11,14 @@ export default function CreditNoteFormDialogs() {
|
|||||||
|
|
||||||
// Update the form once the credit number form submit confirm.
|
// Update the form once the credit number form submit confirm.
|
||||||
const handleCreditNumberFormConfirm = (settings) => {
|
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_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 (
|
return (
|
||||||
|
|||||||
@@ -60,10 +60,12 @@ const CreditNoteTransactionNoField = R.compose(
|
|||||||
const handleCreditNumberChange = () => {
|
const handleCreditNumberChange = () => {
|
||||||
openDialog('credit-number-form');
|
openDialog('credit-number-form');
|
||||||
};
|
};
|
||||||
// Handle credit no. field blur.
|
// Handle credit note no. field blur.
|
||||||
const handleCreditNoBlur = (event) => {
|
const handleCreditNoBlur = (event) => {
|
||||||
const newValue = event.target.value;
|
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) {
|
if (values.credit_note_no !== newValue && creditAutoIncrement) {
|
||||||
openDialog('credit-number-form', {
|
openDialog('credit-number-form', {
|
||||||
initialFormValues: {
|
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) {
|
if (!creditAutoIncrement) {
|
||||||
setFieldValue('credit_note_number', newValue);
|
setFieldValue('credit_note_number', newValue);
|
||||||
setFieldValue('credit_note_number_manually', newValue);
|
setFieldValue('credit_note_number_manually', newValue);
|
||||||
@@ -92,6 +96,7 @@ const CreditNoteTransactionNoField = R.compose(
|
|||||||
value={values.credit_note_number}
|
value={values.credit_note_number}
|
||||||
asyncControl={true}
|
asyncControl={true}
|
||||||
onBlur={handleCreditNoBlur}
|
onBlur={handleCreditNoBlur}
|
||||||
|
onChange={() => {}}
|
||||||
/>
|
/>
|
||||||
<InputPrependButton
|
<InputPrependButton
|
||||||
buttonProps={{
|
buttonProps={{
|
||||||
@@ -165,7 +170,6 @@ export default function CreditNoteFormHeaderFields({}) {
|
|||||||
name={'exchange_rate'}
|
name={'exchange_rate'}
|
||||||
formGroupProps={{ label: ' ', inline: true }}
|
formGroupProps={{ label: ' ', inline: true }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* ----------- Credit note date ----------- */}
|
{/* ----------- Credit note date ----------- */}
|
||||||
<FastField name={'credit_note_date'}>
|
<FastField name={'credit_note_date'}>
|
||||||
{({ form, field: { value }, meta: { error, touched } }) => (
|
{({ form, field: { value }, meta: { error, touched } }) => (
|
||||||
|
|||||||
@@ -45,10 +45,13 @@ export const CreditNoteSyncIncrementSettingsToForm = R.compose(
|
|||||||
const { setFieldValue } = useFormikContext();
|
const { setFieldValue } = useFormikContext();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
// Do not update if the credit note auto-increment mode is disabled.
|
||||||
if (!creditAutoIncrement) return;
|
if (!creditAutoIncrement) return;
|
||||||
|
|
||||||
const creditNo = transactionNumber(creditNumberPrefix, creditNextNumber);
|
setFieldValue(
|
||||||
setFieldValue('credit_note_number', creditNo);
|
'credit_note_number',
|
||||||
|
transactionNumber(creditNumberPrefix, creditNextNumber),
|
||||||
|
);
|
||||||
}, [setFieldValue, creditNumberPrefix, creditNextNumber]);
|
}, [setFieldValue, creditNumberPrefix, creditNextNumber]);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ export const defaultCreditNote = {
|
|||||||
customer_id: '',
|
customer_id: '',
|
||||||
credit_note_date: moment(new Date()).format('YYYY-MM-DD'),
|
credit_note_date: moment(new Date()).format('YYYY-MM-DD'),
|
||||||
credit_note_number: '',
|
credit_note_number: '',
|
||||||
credit_note_no_manually: false,
|
// Holds the credit note number that entered manually only.
|
||||||
|
credit_note_number_manually: false,
|
||||||
open: '',
|
open: '',
|
||||||
reference_no: '',
|
reference_no: '',
|
||||||
note: '',
|
note: '',
|
||||||
|
|||||||
@@ -11,8 +11,14 @@ export default function ReceiptFormDialogs() {
|
|||||||
|
|
||||||
// Update the form once the receipt number form submit confirm.
|
// Update the form once the receipt number form submit confirm.
|
||||||
const handleReceiptNumberFormConfirm = (settings) => {
|
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', settings.transactionNumber);
|
||||||
setFieldValue('receipt_number_manually', settings.transactionNumber);
|
setFieldValue('receipt_number_manually', '');
|
||||||
|
|
||||||
|
if (settings.incrementMode !== 'auto') {
|
||||||
|
setFieldValue('receipt_number_manually', settings.transactionNumber);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ const ReceiptFormReceiptNumberField = R.compose(
|
|||||||
const handleReceiptNoBlur = (event) => {
|
const handleReceiptNoBlur = (event) => {
|
||||||
const newValue = event.target.value;
|
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) {
|
if (values.receipt_number !== newValue && receiptAutoIncrement) {
|
||||||
openDialog('receipt-number-form', {
|
openDialog('receipt-number-form', {
|
||||||
initialFormValues: {
|
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) {
|
if (!receiptAutoIncrement) {
|
||||||
setFieldValue('receipt_number', newValue);
|
setFieldValue('receipt_number', newValue);
|
||||||
setFieldValue('receipt_number_manually', newValue);
|
setFieldValue('receipt_number_manually', newValue);
|
||||||
@@ -98,6 +102,7 @@ const ReceiptFormReceiptNumberField = R.compose(
|
|||||||
value={values.receipt_number}
|
value={values.receipt_number}
|
||||||
asyncControl={true}
|
asyncControl={true}
|
||||||
onBlur={handleReceiptNoBlur}
|
onBlur={handleReceiptNoBlur}
|
||||||
|
onChange={() => {}}
|
||||||
/>
|
/>
|
||||||
<InputPrependButton
|
<InputPrependButton
|
||||||
buttonProps={{
|
buttonProps={{
|
||||||
|
|||||||
@@ -57,10 +57,13 @@ export const ReceiptSyncIncrementSettingsToForm = R.compose(
|
|||||||
const { setFieldValue } = useFormikContext();
|
const { setFieldValue } = useFormikContext();
|
||||||
|
|
||||||
useUpdateEffect(() => {
|
useUpdateEffect(() => {
|
||||||
|
// Do not update if the receipt auto-increment mode is disabled.
|
||||||
if (!receiptAutoIncrement) return;
|
if (!receiptAutoIncrement) return;
|
||||||
|
|
||||||
const receiptNo = transactionNumber(receiptNumberPrefix, receiptNextNumber);
|
setFieldValue(
|
||||||
setFieldValue('receipt_number', receiptNo);
|
'receipt_number',
|
||||||
|
transactionNumber(receiptNumberPrefix, receiptNextNumber),
|
||||||
|
);
|
||||||
}, [
|
}, [
|
||||||
setFieldValue,
|
setFieldValue,
|
||||||
receiptNumberPrefix,
|
receiptNumberPrefix,
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ export const defaultReceipt = {
|
|||||||
customer_id: '',
|
customer_id: '',
|
||||||
deposit_account_id: '',
|
deposit_account_id: '',
|
||||||
receipt_number: '',
|
receipt_number: '',
|
||||||
|
// Holds the receipt number that entered manually only.
|
||||||
|
receipt_number_manually: '',
|
||||||
receipt_date: moment(new Date()).format('YYYY-MM-DD'),
|
receipt_date: moment(new Date()).format('YYYY-MM-DD'),
|
||||||
reference_no: '',
|
reference_no: '',
|
||||||
receipt_message: '',
|
receipt_message: '',
|
||||||
|
|||||||
Reference in New Issue
Block a user