refactoring: invoice, receipt, payment receive, estimate and journal number dialogs.

This commit is contained in:
a.bouhuolia
2021-02-23 10:52:25 +02:00
parent 6e00c2ef7d
commit 236bb896db
37 changed files with 467 additions and 204 deletions

View File

@@ -11,9 +11,11 @@ export function useCreateBill(props) {
const apiRequest = useApiRequest();
return useMutation((values) => apiRequest.post('purchases/bills', values), {
onSuccess: () => {
onSuccess: (res, values) => {
queryClient.invalidateQueries('BILLS');
queryClient.invalidateQueries('BILL');
queryClient.invalidateQueries(['VENDORS']);
queryClient.invalidateQueries(['VENDOR', values.vendor_id]);
},
...props,
});
@@ -29,9 +31,11 @@ export function useEditBill(props) {
return useMutation(
([id, values]) => apiRequest.post(`purchases/bills/${id}`, values),
{
onSuccess: () => {
onSuccess: (res, [id, values]) => {
queryClient.invalidateQueries('BILLS');
queryClient.invalidateQueries('BILL');
queryClient.invalidateQueries(['VENDORS']);
queryClient.invalidateQueries(['VENDOR', values.vendor_id]);
},
...props,
},
@@ -46,9 +50,10 @@ export function useDeleteBill(props) {
const apiRequest = useApiRequest();
return useMutation((id) => apiRequest.delete(`purchases/bills/${id}`), {
onSuccess: () => {
onSuccess: (res, id) => {
queryClient.invalidateQueries('BILLS');
queryClient.invalidateQueries('BILL');
queryClient.invalidateQueries(['VENDORS']);
},
...props,
});
@@ -122,6 +127,7 @@ export function useOpenBill(props) {
{
onSuccess: () => {
queryClient.invalidateQueries('BILLS');
queryClient.invalidateQueries(['VENDORS']);
},
...props,
},

View File

@@ -13,6 +13,7 @@ export function useCreateEstimate(props) {
return useMutation((values) => apiRequest.post('sales/estimates', values), {
onSuccess: () => {
queryClient.invalidateQueries('SALE_ESTIMATES');
queryClient.invalidateQueries(['SETTINGS', 'ESTIMATES']);
},
...props,
});

View File

@@ -10,7 +10,7 @@ export const useAuthInviteAccept = (props) => {
return useMutation(
([values, token]) => apiRequest.post(`invite/accept/${token}`, values),
props,
)
);
}
/**

View File

@@ -11,8 +11,11 @@ export function useCreateInvoice(props) {
const apiRequest = useApiRequest();
return useMutation((values) => apiRequest.post('sales/invoices', values), {
onSuccess: () => {
onSuccess: (values) => {
queryClient.invalidateQueries('SALE_INVOICES');
queryClient.invalidateQueries(['SETTINGS', 'INVOICES']);
queryClient.invalidateQueries('CUSTOMERS');
queryClient.invalidateQueries(['CUSTOMER', values.customer_id]);
},
...props,
});
@@ -28,9 +31,11 @@ export function useEditInvoice(props) {
return useMutation(
([id, values]) => apiRequest.post(`sales/invoices/${id}`, values),
{
onSuccess: (res, id) => {
onSuccess: (res, [id, values]) => {
queryClient.invalidateQueries('SALE_INVOICES');
queryClient.invalidateQueries(['SALE_INVOICE', id]);
queryClient.invalidateQueries('CUSTOMERS');
queryClient.invalidateQueries(['CUSTOMER', values.customer_id]);
},
...props,
},
@@ -48,6 +53,7 @@ export function useDeleteInvoice(props) {
onSuccess: (res, id) => {
queryClient.invalidateQueries('SALE_INVOICES');
queryClient.invalidateQueries(['SALE_INVOICE', id]);
queryClient.invalidateQueries('CUSTOMERS');
},
...props,
});
@@ -97,6 +103,7 @@ export function useDeliverInvoice(props) {
onSuccess: (res, id) => {
queryClient.invalidateQueries('SALE_INVOICES');
queryClient.invalidateQueries(['SALE_INVOICE', id]);
queryClient.invalidateQueries('CUSTOMERS');
},
...props,
});

View File

@@ -3,34 +3,6 @@ import { useDispatch } from 'react-redux';
import useApiRequest from '../useRequest';
import t from 'store/types';
/**
* Retrieve settings.
*/
export function useSettings(query, props) {
const dispatch = useDispatch();
const apiRequest = useApiRequest();
const settings = useQuery(
['SETTINGS', query],
async () => {
const {
data: { settings },
} = await apiRequest.get('settings', { params: query });
return settings;
},
{
initialData: [],
...props,
},
);
dispatch({
type: t.SETTING_SET,
options: settings.data,
});
return settings;
}
/**
* Saves the settings.
*/
@@ -45,3 +17,90 @@ export function useSaveSettings(props) {
...props,
});
}
function useSettingsQuery(key, query, props) {
const dispatch = useDispatch();
const apiRequest = useApiRequest();
return useQuery(
key,
() => apiRequest.get('settings', { params: query }),
{
select: (res) => res.data.settings,
initialDataUpdatedAt: 0,
initialData: {
data: {
settings: [],
},
},
onSuccess: (settings) => {
dispatch({ type: t.SETTING_SET, options: settings });
},
...props,
},
);
}
/**
* Retrieve the all settings of the organization.
*/
export function useSettings() {
return useSettingsQuery(['SETTINGS', 'ALL'], {});
}
/**
* Retrieve invoices settings.
*/
export function useSettingsInvoices(props) {
return useSettingsQuery(
['SETTINGS', 'INVOICES'],
{ group: 'sale_invoices' },
props,
);
}
/**
* Retrieve invoices settings.
*/
export function useSettingsEstimates(props) {
return useSettingsQuery(
['SETTINGS', 'ESTIMATES'],
{ group: 'sale_estimates' },
props,
);
}
/**
* Retrieve payment receives settings.
*/
export function useSettingsPaymentReceives(props) {
return useSettingsQuery(
['SETTINGS', 'PAYMENT_RECEIVES'],
{ group: 'payment_receives' },
props,
);
}
/**
* Retrieve sale receipts settings.
* @param {*} props
*/
export function useSettingsReceipts(props) {
return useSettingsQuery(
['SETTINGS', 'RECEIPTS'],
{ group: 'sale_receipts' },
props,
);
}
/**
* Retrieve sale receipts settings.
* @param {*} props
*/
export function useSettingsManualJournals(props) {
return useSettingsQuery(
['SETTINGS', 'MANUAL_JOURNALS'],
{ group: 'sale_receipts' },
props,
);
}