refactoring: invoice form.

refactoring: receipt form.
refactoring: bill form.
refactoring: estimate form.
This commit is contained in:
a.bouhuolia
2021-02-15 16:23:58 +02:00
parent 151bd9bc54
commit e8458e2b36
37 changed files with 410 additions and 903 deletions

View File

@@ -22,17 +22,9 @@ import withSettings from 'containers/Settings/withSettings';
import { AppToaster } from 'components';
import { ERROR } from 'common/errors';
import {
compose,
orderingLinesIndexes,
transactionNumber,
} from 'utils';
import { compose, orderingLinesIndexes, transactionNumber } from 'utils';
import { useInvoiceFormContext } from './InvoiceFormProvider';
import { transformToEditForm } from './utils';
import {
MIN_LINES_NUMBER,
defaultInitialValues
} from './constants';
import { transformToEditForm, defaultInvoice } from './utils';
/**
* Invoice form.
@@ -64,11 +56,11 @@ function InvoiceForm({
const initialValues = useMemo(
() => ({
...(!isEmpty(invoice)
? transformToEditForm(invoice, defaultInitialValues, MIN_LINES_NUMBER)
? transformToEditForm(invoice)
: {
...defaultInitialValues,
...defaultInvoice,
invoice_no: invoiceNumber,
entries: orderingLinesIndexes(defaultInitialValues.entries),
entries: orderingLinesIndexes(defaultInvoice.entries),
}),
}),
[invoice, invoiceNumber],

View File

@@ -1,26 +0,0 @@
import { moment } from 'moment';
import { repeatValue } from 'utils';
export const MIN_LINES_NUMBER = 4;
export const defaultInvoice = {
index: 0,
item_id: '',
rate: '',
discount: 0,
quantity: 1,
description: '',
total: 0,
};
export const defaultInitialValues = {
customer_id: '',
invoice_date: moment(new Date()).format('YYYY-MM-DD'),
due_date: moment(new Date()).format('YYYY-MM-DD'),
delivered: '',
invoice_no: '',
reference_no: '',
invoice_message: '',
terms_conditions: '',
entries: [...repeatValue(defaultInvoice, MIN_LINES_NUMBER)],
};

View File

@@ -1,16 +1,43 @@
import moment from 'moment';
import { transformToForm, repeatValue } from 'utils';
export const MIN_LINES_NUMBER = 4;
export function transformToEditForm(invoice, defaultInvoice, linesNumber) {
export const defaultInvoiceEntry = {
index: 0,
item_id: '',
rate: '',
discount: 0,
quantity: 1,
description: '',
total: 0,
};
export const defaultInvoice = {
customer_id: '',
invoice_date: moment(new Date()).format('YYYY-MM-DD'),
due_date: moment().format('YYYY-MM-DD'),
delivered: '',
invoice_no: '',
reference_no: '',
invoice_message: '',
terms_conditions: '',
entries: [...repeatValue(defaultInvoiceEntry, MIN_LINES_NUMBER)],
};
/**
* Transform invoice to initial values in edit mode.
*/
export function transformToEditForm(invoice) {
return {
...transformToForm(invoice, defaultInvoice),
entries: [
...invoice.entries.map((invoice) => ({
...transformToForm(invoice, defaultInvoice.entries[0]),
...transformToForm(invoice, defaultInvoiceEntry),
})),
...repeatValue(
defaultInvoice,
Math.max(linesNumber - invoice.entries.length, 0),
defaultInvoiceEntry,
Math.max(MIN_LINES_NUMBER - invoice.entries.length, 0),
),
],
};