feat: convert estimate to invoice.

This commit is contained in:
elforjani3
2021-03-02 11:45:20 +02:00
parent 4d751f772e
commit aa8ba546aa
11 changed files with 111 additions and 40 deletions

View File

@@ -22,10 +22,9 @@ import withMediaActions from 'containers/Media/withMediaActions';
import withSettings from 'containers/Settings/withSettings';
import { AppToaster } from 'components';
import { ERROR } from 'common/errors';
import { compose, orderingLinesIndexes, transactionNumber } from 'utils';
import { useInvoiceFormContext } from './InvoiceFormProvider';
import { transformToEditForm, defaultInvoice } from './utils';
import { transformToEditForm, defaultInvoice, transformErrors } from './utils';
/**
* Invoice form.
@@ -42,6 +41,8 @@ function InvoiceForm({
const {
isNewMode,
invoice,
estimateId,
newInvoice,
createInvoiceMutate,
editInvoiceMutate,
submitPayload,
@@ -62,20 +63,12 @@ function InvoiceForm({
...defaultInvoice,
invoice_no: invoiceNumber,
entries: orderingLinesIndexes(defaultInvoice.entries),
...newInvoice,
}),
}),
[invoice, invoiceNumber],
[invoice, newInvoice,invoiceNumber],
);
// Handle form errors.
const handleErrors = (errors, { setErrors }) => {
if (errors.some((e) => e.type === ERROR.SALE_INVOICE_NUMBER_IS_EXISTS)) {
setErrors({
invoice_no: formatMessage({ id: 'sale_invoice_number_is_exists' }),
});
}
};
// Handles form submit.
const handleSubmit = (values, { setSubmitting, setErrors, resetForm }) => {
setSubmitting(true);
@@ -97,6 +90,7 @@ function InvoiceForm({
const form = {
...values,
delivered: submitPayload.deliver,
from_estimate_id: estimateId,
entries: entries.map((entry) => ({ ...omit(entry, ['total']) })),
};
// Handle the request success.
@@ -129,7 +123,7 @@ function InvoiceForm({
},
}) => {
if (errors) {
handleErrors(errors, { setErrors });
transformErrors(errors, { setErrors });
}
setSubmitting(false);
};