mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
Merge branch 'master' of https://github.com/abouolia/Ratteb
This commit is contained in:
@@ -59,7 +59,7 @@ function CustomersList({
|
||||
['resource-views', 'customers'],
|
||||
(key, resourceName) => requestFetchResourceViews(resourceName),
|
||||
);
|
||||
|
||||
|
||||
const fetchCustomers = useQuery(
|
||||
['customers-table', customersTableQuery],
|
||||
(key, query) => requestFetchCustomers({ ...query }),
|
||||
@@ -146,6 +146,20 @@ function CustomersList({
|
||||
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.
|
||||
const handleConfirmBulkDelete = useCallback(() => {
|
||||
requestDeleteBulkCustomers(bulkDelete)
|
||||
@@ -158,7 +172,8 @@ function CustomersList({
|
||||
intent: Intent.SUCCESS,
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
.catch((errors) => {
|
||||
transformApiErrors(errors);
|
||||
setBulkDelete(false);
|
||||
});
|
||||
}, [requestDeleteBulkCustomers, bulkDelete, formatMessage]);
|
||||
|
||||
@@ -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.
|
||||
const handleFormSubmit = (values, { setSubmitting }) => {
|
||||
const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
|
||||
setSubmitting(true);
|
||||
const form = { ...values };
|
||||
const afterSubmit = () => {
|
||||
@@ -100,7 +108,9 @@ function ItemCategoryFormDialogContent({
|
||||
});
|
||||
afterSubmit(response);
|
||||
};
|
||||
const onError = ({ response }) => {
|
||||
|
||||
const onError = (errors) => {
|
||||
transformErrors(errors, { setErrors });
|
||||
setSubmitting(false);
|
||||
};
|
||||
if (isNewMode) {
|
||||
|
||||
@@ -163,11 +163,10 @@ function ItemForm({
|
||||
history.push('/items');
|
||||
}
|
||||
};
|
||||
const onError = ({ response }) => {
|
||||
const onError = (errors) => {
|
||||
setSubmitting(false);
|
||||
|
||||
if (response.data.errors) {
|
||||
const _errors = transformApiErrors(response.data.errors);
|
||||
if (errors) {
|
||||
const _errors = transformApiErrors(errors);
|
||||
setErrors({ ..._errors });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -78,17 +78,36 @@ function InvoiceList({
|
||||
setDeleteInvoice(false);
|
||||
}, [setDeleteInvoice]);
|
||||
|
||||
// handleConfirm delete invoice
|
||||
const handleConfirmInvoiceDelete = useCallback(() => {
|
||||
requestDeleteInvoice(deleteInvoice.id).then(() => {
|
||||
const handleDeleteErrors = (errors) => {
|
||||
if (
|
||||
errors.find(
|
||||
(error) => error.type === 'INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES',
|
||||
)
|
||||
) {
|
||||
AppToaster.show({
|
||||
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]);
|
||||
|
||||
// Handle cancel/confirm invoice deliver.
|
||||
|
||||
@@ -929,11 +929,15 @@ export default {
|
||||
'Are you sure you want to activate this item? You will be able to inactivate it later',
|
||||
inactivate_item: 'Inactivate Item',
|
||||
activate_item: 'Activate Item',
|
||||
all_payments:'All Payments',
|
||||
all_payments: 'All Payments',
|
||||
hide_customizer: 'Hide Customizer',
|
||||
opening_quantity_: 'Opening quantity',
|
||||
opening_average_cost: 'Opening average cost',
|
||||
opening_cost_: 'Opening cost ',
|
||||
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',
|
||||
};
|
||||
|
||||
@@ -2,11 +2,20 @@ import ApiService from 'services/ApiService';
|
||||
import t from 'store/types';
|
||||
|
||||
export const submitItemCategory = ({ form }) => {
|
||||
return (dispatch) => {
|
||||
return ApiService.post('item_categories', { ...form });
|
||||
};
|
||||
};
|
||||
return (dispatch) =>
|
||||
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 }) => {
|
||||
return (dispatch, getState) =>
|
||||
new Promise((resolve, reject) => {
|
||||
|
||||
@@ -2,9 +2,20 @@ import ApiService from 'services/ApiService';
|
||||
import t from 'store/types';
|
||||
|
||||
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 }) => {
|
||||
return (dispatch) => ApiService.post(`items/${id}`, form);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user