This commit is contained in:
a.bouhuolia
2021-01-02 15:49:13 +02:00
7 changed files with 90 additions and 23 deletions

View File

@@ -146,6 +146,20 @@ function CustomersList({
setBulkDelete(false); setBulkDelete(false);
}, []); }, []);
const transformApiErrors = (errors) => {
if (
errors.find(
(error) => error.type === 'SOME.CUSTOMERS.HAVE.SALES_INVOICES',
)
) {
AppToaster.show({
message: formatMessage({
id: 'some_customers_have_sales_invoices',
}),
intent: Intent.DANGER,
});
}
};
// Handle confirm customers bulk delete. // Handle confirm customers bulk delete.
const handleConfirmBulkDelete = useCallback(() => { const handleConfirmBulkDelete = useCallback(() => {
requestDeleteBulkCustomers(bulkDelete) requestDeleteBulkCustomers(bulkDelete)
@@ -158,7 +172,8 @@ function CustomersList({
intent: Intent.SUCCESS, intent: Intent.SUCCESS,
}); });
}) })
.catch((error) => { .catch((errors) => {
transformApiErrors(errors);
setBulkDelete(false); setBulkDelete(false);
}); });
}, [requestDeleteBulkCustomers, bulkDelete, formatMessage]); }, [requestDeleteBulkCustomers, bulkDelete, formatMessage]);

View File

@@ -80,8 +80,16 @@ function ItemCategoryFormDialogContent({
[], [],
); );
const transformErrors = (errors, { setErrors }) => {
if (errors.find((error) => error.type === 'CATEGORY_NAME_EXISTS')) {
setErrors({
name: formatMessage({ id: 'category_name_exists' }),
});
}
};
// Handles the form submit. // Handles the form submit.
const handleFormSubmit = (values, { setSubmitting }) => { const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
setSubmitting(true); setSubmitting(true);
const form = { ...values }; const form = { ...values };
const afterSubmit = () => { const afterSubmit = () => {
@@ -100,7 +108,9 @@ function ItemCategoryFormDialogContent({
}); });
afterSubmit(response); afterSubmit(response);
}; };
const onError = ({ response }) => {
const onError = (errors) => {
transformErrors(errors, { setErrors });
setSubmitting(false); setSubmitting(false);
}; };
if (isNewMode) { if (isNewMode) {

View File

@@ -163,11 +163,10 @@ function ItemForm({
history.push('/items'); history.push('/items');
} }
}; };
const onError = ({ response }) => { const onError = (errors) => {
setSubmitting(false); setSubmitting(false);
if (errors) {
if (response.data.errors) { const _errors = transformApiErrors(errors);
const _errors = transformApiErrors(response.data.errors);
setErrors({ ..._errors }); setErrors({ ..._errors });
} }
}; };

View File

@@ -78,17 +78,36 @@ function InvoiceList({
setDeleteInvoice(false); setDeleteInvoice(false);
}, [setDeleteInvoice]); }, [setDeleteInvoice]);
// handleConfirm delete invoice const handleDeleteErrors = (errors) => {
const handleConfirmInvoiceDelete = useCallback(() => { if (
requestDeleteInvoice(deleteInvoice.id).then(() => { errors.find(
(error) => error.type === 'INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES',
)
) {
AppToaster.show({ AppToaster.show({
message: formatMessage({ message: formatMessage({
id: 'the_invocie_has_been_successfully_deleted', id: 'the_invoice_cannot_be_deleted',
}), }),
intent: Intent.SUCCESS, intent: Intent.DANGER,
});
}
};
// handleConfirm delete invoice
const handleConfirmInvoiceDelete = useCallback(() => {
requestDeleteInvoice(deleteInvoice.id)
.then(() => {
AppToaster.show({
message: formatMessage({
id: 'the_invocie_has_been_successfully_deleted',
}),
intent: Intent.SUCCESS,
});
})
.catch((errors) => {
handleDeleteErrors(errors);
setDeleteInvoice(false);
}); });
setDeleteInvoice(false);
});
}, [deleteInvoice, requestDeleteInvoice, formatMessage]); }, [deleteInvoice, requestDeleteInvoice, formatMessage]);
// Handle cancel/confirm invoice deliver. // Handle cancel/confirm invoice deliver.

View File

@@ -929,11 +929,15 @@ export default {
'Are you sure you want to activate this item? You will be able to inactivate it later', 'Are you sure you want to activate this item? You will be able to inactivate it later',
inactivate_item: 'Inactivate Item', inactivate_item: 'Inactivate Item',
activate_item: 'Activate Item', activate_item: 'Activate Item',
all_payments:'All Payments', all_payments: 'All Payments',
hide_customizer: 'Hide Customizer', hide_customizer: 'Hide Customizer',
opening_quantity_: 'Opening quantity', opening_quantity_: 'Opening quantity',
opening_average_cost: 'Opening average cost', opening_average_cost: 'Opening average cost',
opening_cost_: 'Opening cost ', opening_cost_: 'Opening cost ',
opening_date_: 'Opening date ', opening_date_: 'Opening date ',
no_results:'No results.' no_results: 'No results.',
the_invoice_cannot_be_deleted:
'The invoice cannot be deleted cause has associated payment transactions',
category_name_exists: 'Category name exists',
some_customers_have_sales_invoices: 'Some customers have sales invoices',
}; };

View File

@@ -2,11 +2,20 @@ import ApiService from 'services/ApiService';
import t from 'store/types'; import t from 'store/types';
export const submitItemCategory = ({ form }) => { export const submitItemCategory = ({ form }) => {
return (dispatch) => { return (dispatch) =>
return ApiService.post('item_categories', { ...form }); new Promise((resolve, reject) => {
}; ApiService.post('item_categories', form)
}; .then((response) => {
resolve(response);
})
.catch((error) => {
const { response } = error;
const { data } = response;
reject(data?.errors);
});
});
};
export const fetchItemCategories = ({ query }) => { export const fetchItemCategories = ({ query }) => {
return (dispatch, getState) => return (dispatch, getState) =>
new Promise((resolve, reject) => { new Promise((resolve, reject) => {

View File

@@ -2,9 +2,20 @@ import ApiService from 'services/ApiService';
import t from 'store/types'; import t from 'store/types';
export const submitItem = ({ form }) => { export const submitItem = ({ form }) => {
return (dispatch) => ApiService.post(`items`, form); return (dispatch) =>
}; new Promise((resolve, reject) => {
ApiService.post('items', form)
.then((response) => {
resolve(response);
})
.catch((error) => {
const { response } = error;
const { data } = response;
reject(data?.errors);
});
});
};
export const editItem = ({ id, form }) => { export const editItem = ({ id, form }) => {
return (dispatch) => ApiService.post(`items/${id}`, form); return (dispatch) => ApiService.post(`items/${id}`, form);
}; };