feat: notify by SMS.

This commit is contained in:
elforjani13
2021-11-06 21:47:17 +02:00
parent 2bd4c5f724
commit d26ef01afc
17 changed files with 307 additions and 106 deletions

View File

@@ -189,3 +189,38 @@ export function useRefreshEstimates() {
},
};
}
export function useCreateNotifyEstimateBySMS(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation(
(id) => apiRequest.post(`sales/estimates/${id}/notify-by-sms`),
{
onSuccess: (res, id) => {
// Common invalidate queries.
commonInvalidateQueries(queryClient);
// Invalidate sale estimate.
queryClient.invalidateQueries([t.NOTIFY_SALE_ESTIMATE_BY_SMS, id]);
},
...props,
},
);
}
export function useEstimateSMS(estimateId, props, requestProps) {
return useRequestQuery(
[t.SALE_ESTIMATE_SMS, estimateId],
{
method: 'get',
url: `sales/estimates/${estimateId}/sms-details`,
...requestProps,
},
{
select: (res) => res.data,
defaultData: {},
...props,
},
);
}

View File

@@ -219,14 +219,52 @@ export function useCancelBadDebt(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation((id) => apiRequest.post(`sales/invoices/${id}/writeoff/cancel`), {
onSuccess: (res, id) => {
// Invalidate
queryClient.invalidateQueries([t.CANCEL_BAD_DEBT, id]);
return useMutation(
(id) => apiRequest.post(`sales/invoices/${id}/writeoff/cancel`),
{
onSuccess: (res, id) => {
// Invalidate
queryClient.invalidateQueries([t.CANCEL_BAD_DEBT, id]);
// Common invalidate queries.
commonInvalidateQueries(queryClient);
// Common invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
},
...props,
});
);
}
export function useCreateNotifyInvoiceBySMS(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation(
(id) => apiRequest.post(`sales/invoices/${id}/notify-by-sms`),
{
onSuccess: (res, id) => {
// Invalidate
queryClient.invalidateQueries([t.NOTIFY_SALE_INVOICE_BY_SMS, id]);
// Common invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
},
);
}
export function useInvocieSMSDetails(invoiceId, props, requestProps) {
return useRequestQuery(
[t.SALE_INVOICE_SMS, invoiceId],
{
method: 'get',
url: `sales/invoices/${invoiceId}/sms-details`,
...requestProps,
},
{
select: (res) => res.data.data,
defaultData: {},
...props,
},
);
}

View File

@@ -174,3 +174,34 @@ export function useRefreshPaymentReceive() {
},
};
}
export function useCreateNotifyPaymentReceiveBySMS(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation(
(id) => apiRequest.post(`sales/payment_receives/${id}/notify-by-sms`),
{
onSuccess: (res, id) => {
// Invalidate
queryClient.invalidateQueries([t.NOTIFY_PAYMENT_RECEIVE_BY_SMS, id]);
// Common invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
},
);
}
export function usePaymentReceiveSMS(id, props, requestProps) {
return useRequestQuery(
[t.PAYMENT_RECEIVE_SMS, id],
{ method: 'get', url: `sales/payment_receives/${id}/sms-details`, ...requestProps },
{
select: (res) => res.data,
defaultData: {},
...props,
},
);
}

View File

@@ -23,7 +23,7 @@ const commonInvalidateQueries = (queryClient) => {
// Invalidate the cashflow transactions.
queryClient.invalidateQueries(t.CASH_FLOW_TRANSACTIONS);
queryClient.invalidateQueries(t.CASHFLOW_ACCOUNT_TRANSACTIONS_INFINITY);
// Invalidate the settings.
queryClient.invalidateQueries([t.SETTING, t.SETTING_RECEIPTS]);
};
@@ -163,3 +163,32 @@ export function useRefreshReceipts() {
},
};
}
export function useCreateNotifyReceiptBySMS(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation(
(id) => apiRequest.post(`sales/receipts/${id}/notify-by-sms`),
{
onSuccess: (res, id) => {
queryClient.invalidateQueries([t.NOTIFY_SALE_RECEIPT_BY_SMS, id]);
// Invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
},
);
}
export function useReceiptSMS(receiptId, props, requestProps) {
return useRequestQuery(
[t.SALE_RECEIPT_SMS, receiptId],
{ method: 'get', url: `sales/receipts/${receiptId}/sms-details`, ...requestProps },
{
select: (res) => res.data,
defaultData: {},
...props,
},
);
}

View File

@@ -123,3 +123,18 @@ export function useSettingCashFlow(props) {
props,
);
}
/**
* Retrieve SMS settings.
*/
export function useSettingSMSNotifications(props) {
return useRequestQuery(
[t.SETTING_SMS_NOTIFICATIONS],
{ method: 'get', url: `settings/sms-notifications` },
{
select: (res) => res.data.notifications,
defaultData: [],
...props,
},
);
}

View File

@@ -51,11 +51,15 @@ const ITEMS = {
const SALE_ESTIMATES = {
SALE_ESTIMATES: 'SALE_ESTIMATES',
SALE_ESTIMATE: 'SALE_ESTIMATE',
SALE_ESTIMATE_SMS: 'SALE_ESTIMATE_SMS',
NOTIFY_SALE_ESTIMATE_BY_SMS: 'NOTIFY_SALE_ESTIMATE_BY_SMS',
};
const SALE_RECEIPTS = {
SALE_RECEIPTS: 'SALE_RECEIPTS',
SALE_RECEIPT: 'SALE_RECEIPT',
SALE_RECEIPT_SMS: 'SALE_RECEIPT_SMS',
NOTIFY_SALE_RECEIPT_BY_SMS: 'NOTIFY_SALE_RECEIPT_BY_SMS',
};
const INVENTORY_ADJUSTMENTS = {
@@ -79,12 +83,16 @@ const PAYMENT_RECEIVES = {
PAYMENT_RECEIVE: 'PAYMENT_RECEIVE',
PAYMENT_RECEIVE_NEW_ENTRIES: 'PAYMENT_RECEIVE_NEW_ENTRIES',
PAYMENT_RECEIVE_EDIT_PAGE: 'PAYMENT_RECEIVE_EDIT_PAGE',
PAYMENT_RECEIVE_SMS: 'PAYMENT_RECEIVE_SMS',
NOTIFY_PAYMENT_RECEIVE_BY_SMS: 'NOTIFY_PAYMENT_RECEIVE_BY_SMS',
};
const SALE_INVOICES = {
SALE_INVOICES: 'SALE_INVOICES',
SALE_INVOICE: 'SALE_INVOICE',
SALE_INVOICES_DUE: 'SALE_INVOICES_DUE',
SALE_INVOICE_SMS: 'SALE_INVOICE_SMS',
NOTIFY_SALE_INVOICE_BY_SMS: 'NOTIFY_SALE_INVOICE_BY_SMS',
BAD_DEBT: 'BAD_DEBT',
CANCEL_BAD_DEBT: 'CANCEL_BAD_DEBT',
};
@@ -103,6 +111,7 @@ const SETTING = {
SETTING_MANUAL_JOURNALS: 'SETTING_MANUAL_JOURNALS',
SETTING_ITEMS: 'SETTING_ITEMS',
SETTING_CASHFLOW: 'SETTING_CASHFLOW',
SETTING_SMS_NOTIFICATIONS: 'SETTING_SMS_NOTIFICATIONS',
};
const ORGANIZATIONS = {