feat(webapp): wip printing financial reports

This commit is contained in:
Ahmed Bouhuolia
2024-02-17 00:15:20 +02:00
parent d67189587e
commit 27fed5f18a
62 changed files with 303 additions and 244 deletions

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { useMemo, createContext, useContext } from 'react'; import { useMemo, createContext, useContext } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useAPAgingSummaryReport } from '@/hooks/query'; import { useAPAgingSummaryReport } from '@/hooks/query';
@@ -12,22 +12,22 @@ const APAgingSummaryContext = createContext();
*/ */
function APAgingSummaryProvider({ filter, ...props }) { function APAgingSummaryProvider({ filter, ...props }) {
// Transformers the filter from to the Url query. // Transformers the filter from to the Url query.
const query = useMemo(() => transformFilterFormToQuery(filter), [filter]); const httpQuery = useMemo(() => transformFilterFormToQuery(filter), [filter]);
const { const {
data: APAgingSummary, data: APAgingSummary,
isLoading: isAPAgingLoading, isLoading: isAPAgingLoading,
isFetching: isAPAgingFetching, isFetching: isAPAgingFetching,
refetch, refetch,
} = useAPAgingSummaryReport(query, { keepPreviousData: true }); } = useAPAgingSummaryReport(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
APAgingSummary, APAgingSummary,
isAPAgingLoading, isAPAgingLoading,
isAPAgingFetching, isAPAgingFetching,
refetch, refetch,
query, query: httpQuery,
httpQuery,
}; };
return ( return (

View File

@@ -49,11 +49,8 @@ export function APAgingSummarySheetLoadingBar() {
*/ */
export function APAgingSummaryExportMenu() { export function APAgingSummaryExportMenu() {
const toastKey = useRef(null); const toastKey = useRef(null);
const commonToastConfig = { const commonToastConfig = { isCloseButtonShown: true, timeout: 2000 };
isCloseButtonShown: true, const { httpQuery } = useAPAgingSummaryContext();
timeout: 2000,
};
const { query } = useAPAgingSummaryContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -70,7 +67,7 @@ export function APAgingSummaryExportMenu() {
); );
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useAPAgingSheetXlsxExport(query, { const { mutateAsync: xlsxExport } = useAPAgingSheetXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -89,7 +86,7 @@ export function APAgingSummaryExportMenu() {
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useAPAgingSheetCsvExport(query, { const { mutateAsync: csvExport } = useAPAgingSheetCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useAPAgingSummaryPdf } from '@/hooks/query'; import { useAPAgingSummaryPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useAPAgingSummaryContext } from '../../APAgingSummaryProvider';
export default function APAgingSummaryPdfDialogContent() { export default function APAgingSummaryPdfDialogContent() {
const { isLoading, pdfUrl } = useAPAgingSummaryPdf(); const { httpQuery } = useAPAgingSummaryContext();
const { isLoading, pdfUrl } = useAPAgingSummaryPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { useState, useCallback, useEffect } from 'react'; import { useCallback, useEffect } from 'react';
import moment from 'moment'; import moment from 'moment';
import ARAgingSummaryHeader from './ARAgingSummaryHeader'; import ARAgingSummaryHeader from './ARAgingSummaryHeader';
@@ -13,9 +13,9 @@ import { ARAgingSummaryBody } from './ARAgingSummaryBody';
import withARAgingSummaryActions from './withARAgingSummaryActions'; import withARAgingSummaryActions from './withARAgingSummaryActions';
import { useARAgingSummaryQuery } from './common'; import { useARAgingSummaryQuery } from './common';
import { compose } from '@/utils';
import { ARAgingSummaryPdfDialog } from './dialogs/ARAgingSummaryPdfDialog'; import { ARAgingSummaryPdfDialog } from './dialogs/ARAgingSummaryPdfDialog';
import { DialogsName } from '@/constants/dialogs'; import { DialogsName } from '@/constants/dialogs';
import { compose } from '@/utils';
/** /**
* A/R aging summary report. * A/R aging summary report.

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { useMemo, createContext, useContext } from 'react'; import { useMemo, createContext, useContext } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useARAgingSummaryReport } from '@/hooks/query'; import { useARAgingSummaryReport } from '@/hooks/query';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
@@ -11,10 +11,7 @@ const ARAgingSummaryContext = createContext();
*/ */
function ARAgingSummaryProvider({ filter, ...props }) { function ARAgingSummaryProvider({ filter, ...props }) {
// Transformes the filter from to the url query. // Transformes the filter from to the url query.
const requestQuery = useMemo( const httpQuery = useMemo(() => transformFilterFormToQuery(filter), [filter]);
() => transformFilterFormToQuery(filter),
[filter],
);
// A/R aging summary sheet context. // A/R aging summary sheet context.
const { const {
@@ -22,13 +19,14 @@ function ARAgingSummaryProvider({ filter, ...props }) {
isLoading: isARAgingLoading, isLoading: isARAgingLoading,
isFetching: isARAgingFetching, isFetching: isARAgingFetching,
refetch, refetch,
} = useARAgingSummaryReport(requestQuery, { keepPreviousData: true }); } = useARAgingSummaryReport(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
ARAgingSummary, ARAgingSummary,
isARAgingLoading, isARAgingLoading,
isARAgingFetching, isARAgingFetching,
refetch, refetch,
httpQuery,
}; };
return ( return (

View File

@@ -53,7 +53,7 @@ export function ARAgingSummaryExportMenu() {
isCloseButtonShown: true, isCloseButtonShown: true,
timeout: 2000, timeout: 2000,
}; };
const { query } = useARAgingSummaryContext(); const { httpQuery } = useARAgingSummaryContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -71,7 +71,7 @@ export function ARAgingSummaryExportMenu() {
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useARAgingSheetXlsxExport(query, { const { mutateAsync: xlsxExport } = useARAgingSheetXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -90,7 +90,7 @@ export function ARAgingSummaryExportMenu() {
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useARAgingSheetCsvExport(query, { const { mutateAsync: csvExport } = useARAgingSheetCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -20,7 +20,7 @@ function ARAgingSummaryPdfDialogRoot({ dialogName, payload, isOpen }) {
return ( return (
<Dialog <Dialog
name={dialogName} name={dialogName}
title={'AR Aging Summary Print Preview'} title={'A/R Aging Summary Print Preview'}
className={classNames(CLASSES.DIALOG_PDF_PREVIEW)} className={classNames(CLASSES.DIALOG_PDF_PREVIEW)}
autoFocus={true} autoFocus={true}
canEscapeKeyClose={true} canEscapeKeyClose={true}

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useARAgingSummaryPdf } from '@/hooks/query'; import { useARAgingSummaryPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useARAgingSummaryContext } from '../../ARAgingSummaryProvider';
export default function ARAgingSummaryPdfDialogContent() { export default function ARAgingSummaryPdfDialogContent() {
const { isLoading, pdfUrl } = useARAgingSummaryPdf(); const { httpQuery } = useARAgingSummaryContext();
const { isLoading, pdfUrl } = useARAgingSummaryPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -85,7 +85,6 @@ function BalanceSheetActionsBar({
active={balanceSheetDrawerFilter} active={balanceSheetDrawerFilter}
/> />
<NavbarDivider /> <NavbarDivider />
<Popover <Popover
content={ content={
<NumberFormatDropdown <NumberFormatDropdown
@@ -118,7 +117,6 @@ function BalanceSheetActionsBar({
</Popover> </Popover>
<NavbarDivider /> <NavbarDivider />
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
onClick={handlePdfPrintBtnSubmit} onClick={handlePdfPrintBtnSubmit}

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { createContext, useContext } from 'react'; import { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useBalanceSheet } from '@/hooks/query'; import { useBalanceSheet } from '@/hooks/query';
@@ -9,9 +9,7 @@ const BalanceSheetContext = createContext();
function BalanceSheetProvider({ filter, ...props }) { function BalanceSheetProvider({ filter, ...props }) {
// Transformes the given filter to query. // Transformes the given filter to query.
const query = React.useMemo(() => transformFilterFormToQuery(filter), [ const httpQuery = useMemo(() => transformFilterFormToQuery(filter), [filter]);
filter,
]);
// Fetches the balance sheet report. // Fetches the balance sheet report.
const { const {
@@ -19,15 +17,14 @@ function BalanceSheetProvider({ filter, ...props }) {
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useBalanceSheet(query, { keepPreviousData: true }); } = useBalanceSheet(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
balanceSheet, balanceSheet,
isFetching, isFetching,
isLoading, isLoading,
refetchBalanceSheet: refetch, refetchBalanceSheet: refetch,
httpQuery,
query,
filter, filter,
}; };
return ( return (

View File

@@ -96,7 +96,7 @@ export const BalanceSheetExportMenu = () => {
isCloseButtonShown: true, isCloseButtonShown: true,
timeout: 2000, timeout: 2000,
}; };
const { query } = useBalanceSheetContext(); const { httpQuery } = useBalanceSheetContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -114,7 +114,7 @@ export const BalanceSheetExportMenu = () => {
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useBalanceSheetXlsxExport(query, { const { mutateAsync: xlsxExport } = useBalanceSheetXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -132,8 +132,9 @@ export const BalanceSheetExportMenu = () => {
} }
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useBalanceSheetCsvExport(query, { const { mutateAsync: csvExport } = useBalanceSheetCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useBalanceSheetPdf } from '@/hooks/query'; import { useBalanceSheetPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useBalanceSheetContext } from '../../BalanceSheetProvider';
export default function BalanceSheetPdfDialogContent() { export default function BalanceSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useBalanceSheetPdf(); const { httpQuery } = useBalanceSheetContext();
const { isLoading, pdfUrl } = useBalanceSheetPdf({ ...httpQuery });
return ( return (
<DialogContent> <DialogContent>

View File

@@ -10,27 +10,27 @@ const CashFLowStatementContext = React.createContext();
* Cash flow statement provider. * Cash flow statement provider.
*/ */
function CashFlowStatementProvider({ filter, ...props }) { function CashFlowStatementProvider({ filter, ...props }) {
// transforms the given filter to query. // Transforms the given state query to http query.
const query = React.useMemo( const httpQuery = React.useMemo(
() => transformFilterFormToQuery(filter), () => transformFilterFormToQuery(filter),
[filter], [filter],
); );
// Fetching the cash flow statement report.
// fetch the cash flow statement report.
const { const {
data: cashFlowStatement, data: cashFlowStatement,
isFetching: isCashFlowFetching, isFetching: isCashFlowFetching,
isLoading: isCashFlowLoading, isLoading: isCashFlowLoading,
refetch: refetchCashFlow, refetch: refetchCashFlow,
} = useCashFlowStatementReport(query, { keepPreviousData: true }); } = useCashFlowStatementReport(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
cashFlowStatement, cashFlowStatement,
isCashFlowFetching, isCashFlowFetching,
isCashFlowLoading, isCashFlowLoading,
refetchCashFlow, refetchCashFlow,
query, query: httpQuery,
filter, filter,
httpQuery,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useCashflowSheetPdf } from '@/hooks/query'; import { useCashflowSheetPdf } from '@/hooks/query';
import { useCashFlowStatementContext } from '../CashFlowStatementProvider';
export default function CashflowSheetPdfDialogContent() { export default function CashflowSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useCashflowSheetPdf(); const { httpQuery } = useCashFlowStatementContext();
const { isLoading, pdfUrl } = useCashflowSheetPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -95,7 +95,7 @@ export function CashflowSheetExportMenu() {
isCloseButtonShown: true, isCloseButtonShown: true,
timeout: 2000, timeout: 2000,
}; };
const { query } = useCashFlowStatementContext(); const { httpQuery } = useCashFlowStatementContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -113,26 +113,30 @@ export function CashflowSheetExportMenu() {
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useCashFlowStatementXlsxExport(query, { const { mutateAsync: xlsxExport } = useCashFlowStatementXlsxExport(
onDownloadProgress: (xlsxExportProgress: number) => { httpQuery,
if (!toastKey.current) { {
toastKey.current = AppToaster.show({ onDownloadProgress: (xlsxExportProgress: number) => {
message: openProgressToast(xlsxExportProgress), if (!toastKey.current) {
...commonToastConfig, toastKey.current = AppToaster.show({
});
} else {
AppToaster.show(
{
message: openProgressToast(xlsxExportProgress), message: openProgressToast(xlsxExportProgress),
...commonToastConfig, ...commonToastConfig,
}, });
toastKey.current, } else {
); AppToaster.show(
} {
message: openProgressToast(xlsxExportProgress),
...commonToastConfig,
},
toastKey.current,
);
}
},
}, },
}); );
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useCashFlowStatementCsvExport(query, { const { mutateAsync: csvExport } = useCashFlowStatementCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useCustomerBalanceSummaryPdf } from '@/hooks/query'; import { useCustomerBalanceSummaryPdf } from '@/hooks/query';
import { useCustomersBalanceSummaryContext } from '../CustomersBalanceSummaryProvider';
export default function CustomerBalanceSummaryPdfDialogContent() { export default function CustomerBalanceSummaryPdfDialogContent() {
const { isLoading, pdfUrl } = useCustomerBalanceSummaryPdf(); const { httpQuery } = useCustomersBalanceSummaryContext();
const { isLoading, pdfUrl } = useCustomerBalanceSummaryPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function CustomerBalanceSummaryPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'invoice.pdf'} download={'customer-balance-summary.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -29,9 +29,9 @@ function CustomersBalanceSummaryProvider({ filter, ...props }) {
CustomerBalanceSummary, CustomerBalanceSummary,
isCustomersBalanceFetching, isCustomersBalanceFetching,
isCustomersBalanceLoading, isCustomersBalanceLoading,
refetch, refetch,
query query,
httpQuery: query
}; };
return ( return (
<FinancialReportPage name={'customers-balance-summary'}> <FinancialReportPage name={'customers-balance-summary'}>

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { createContext, useContext, useMemo } from 'react'; import { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useCustomersTransactionsReport } from '@/hooks/query'; import { useCustomersTransactionsReport } from '@/hooks/query';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
@@ -10,9 +10,7 @@ const CustomersTransactionsContext = createContext();
* Customers transactions provider. * Customers transactions provider.
*/ */
function CustomersTransactionsProvider({ filter, ...props }) { function CustomersTransactionsProvider({ filter, ...props }) {
const query = useMemo(() => transformFilterFormToQuery(filter), [ const query = useMemo(() => transformFilterFormToQuery(filter), [filter]);
filter,
]);
// Fetches the customers transactions. // Fetches the customers transactions.
const { const {
@@ -29,7 +27,8 @@ function CustomersTransactionsProvider({ filter, ...props }) {
CustomersTransactionsRefetch, CustomersTransactionsRefetch,
filter, filter,
query query,
httpQuery: query,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useCustomersTransactionsPdfExport } from '@/hooks/query'; import { useCustomersTransactionsPdfExport } from '@/hooks/query';
import { useCustomersTransactionsContext } from '../../CustomersTransactionsProvider';
export default function CashflowSheetPdfDialogContent() { export default function CashflowSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useCustomersTransactionsPdfExport(); const { httpQuery } = useCustomersTransactionsContext();
const { isLoading, pdfUrl } = useCustomersTransactionsPdfExport(httpQuery);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function CashflowSheetPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'invoice.pdf'} download={'customer-transactions.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -12,24 +12,23 @@ const GeneralLedgerContext = createContext();
*/ */
function GeneralLedgerProvider({ query, ...props }) { function GeneralLedgerProvider({ query, ...props }) {
// Transformes the report query to request query. // Transformes the report query to request query.
const requestQuery = React.useMemo( const httpQuery = React.useMemo(
() => transformFilterFormToQuery(query), () => transformFilterFormToQuery(query),
[query], [query],
); );
const { const {
data: generalLedger, data: generalLedger,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useGeneralLedgerSheet(requestQuery, { keepPreviousData: true }); } = useGeneralLedgerSheet(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
generalLedger, generalLedger,
sheetRefresh: refetch, sheetRefresh: refetch,
isFetching, isFetching,
isLoading, isLoading,
httpRequest: requestQuery httpQuery,
}; };
return ( return (
<FinancialReportPage name={'general-ledger-sheet'}> <FinancialReportPage name={'general-ledger-sheet'}>

View File

@@ -79,7 +79,7 @@ export const GeneralLedgerSheetExportMenu = () => {
isCloseButtonShown: true, isCloseButtonShown: true,
timeout: 2000, timeout: 2000,
}; };
const { httpRequest } = useGeneralLedgerContext(); const { httpQuery } = useGeneralLedgerContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -97,7 +97,7 @@ export const GeneralLedgerSheetExportMenu = () => {
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useGeneralLedgerSheetXlsxExport( const { mutateAsync: xlsxExport } = useGeneralLedgerSheetXlsxExport(
httpRequest, httpQuery,
{ {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
@@ -118,27 +118,24 @@ export const GeneralLedgerSheetExportMenu = () => {
}, },
); );
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useGeneralLedgerSheetCsvExport( const { mutateAsync: csvExport } = useGeneralLedgerSheetCsvExport(httpQuery, {
httpRequest, onDownloadProgress: (xlsxExportProgress: number) => {
{ if (!toastKey.current) {
onDownloadProgress: (xlsxExportProgress: number) => { toastKey.current = AppToaster.show({
if (!toastKey.current) { message: openProgressToast(xlsxExportProgress),
toastKey.current = AppToaster.show({ ...commonToastConfig,
});
} else {
AppToaster.show(
{
message: openProgressToast(xlsxExportProgress), message: openProgressToast(xlsxExportProgress),
...commonToastConfig, ...commonToastConfig,
}); },
} else { toastKey.current,
AppToaster.show( );
{ }
message: openProgressToast(xlsxExportProgress),
...commonToastConfig,
},
toastKey.current,
);
}
},
}, },
); });
// Handle csv export button click. // Handle csv export button click.
const handleCsvExportBtnClick = () => { const handleCsvExportBtnClick = () => {
csvExport(); csvExport();

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useGeneralLedgerPdf } from '@/hooks/query'; import { useGeneralLedgerPdf } from '@/hooks/query';
import { useGeneralLedgerContext } from '../../GeneralLedgerProvider';
export default function GeneralLedgerPdfDialogContent() { export default function GeneralLedgerPdfDialogContent() {
const { isLoading, pdfUrl } = useGeneralLedgerPdf(); const { httpQuery } = useGeneralLedgerContext();
const { isLoading, pdfUrl } = useGeneralLedgerPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function GeneralLedgerPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'invoice.pdf'} download={'general-ledger.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -28,8 +28,8 @@ function InventoryItemDetailsProvider({ query, ...props }) {
isInventoryItemDetailsFetching, isInventoryItemDetailsFetching,
isInventoryItemDetailsLoading, isInventoryItemDetailsLoading,
inventoryItemDetailsRefetch, inventoryItemDetailsRefetch,
query, query,
httpQuery: requestQuery
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useInventoryItemDetailsPdf } from '@/hooks/query'; import { useInventoryItemDetailsPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useInventoryItemDetailsContext } from '../../InventoryItemDetailsProvider';
export default function InventoryItemDetailsPdfDialogContent() { export default function InventoryItemDetailsPdfDialogContent() {
const { isLoading, pdfUrl } = useInventoryItemDetailsPdf(); const { httpQuery } = useInventoryItemDetailsContext();
const { isLoading, pdfUrl } = useInventoryItemDetailsPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function InventoryItemDetailsPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'invoice.pdf'} download={'inventory-item-details.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -11,7 +11,7 @@ const InventoryValuationContext = React.createContext();
*/ */
function InventoryValuationProvider({ query, ...props }) { function InventoryValuationProvider({ query, ...props }) {
// Transformes the filter form query to request query. // Transformes the filter form query to request query.
const requestQuery = React.useMemo( const httpQuery = React.useMemo(
() => transformFilterFormToQuery(query), () => transformFilterFormToQuery(query),
[query], [query],
); );
@@ -21,9 +21,7 @@ function InventoryValuationProvider({ query, ...props }) {
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useInventoryValuationTable(requestQuery, { } = useInventoryValuationTable(httpQuery, { keepPreviousData: true });
keepPreviousData: true,
});
// Provider data. // Provider data.
const provider = { const provider = {
@@ -31,6 +29,7 @@ function InventoryValuationProvider({ query, ...props }) {
isLoading, isLoading,
isFetching, isFetching,
refetchSheet: refetch, refetchSheet: refetch,
httpQuery
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useInventoryValuationPdf } from '@/hooks/query'; import { useInventoryValuationPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useInventoryValuationContext } from '../../InventoryValuationProvider';
export default function InventoryValuationPdfDialogContent() { export default function InventoryValuationPdfDialogContent() {
const { isLoading, pdfUrl } = useInventoryValuationPdf(); const { httpQuery } = useInventoryValuationContext();
const { isLoading, pdfUrl } = useInventoryValuationPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function InventoryValuationPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'invoice.pdf'} download={'inventory-valuation-summary.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -11,24 +11,23 @@ const JournalSheetContext = createContext();
*/ */
function JournalSheetProvider({ query, ...props }) { function JournalSheetProvider({ query, ...props }) {
// Transforms the sheet query to request query. // Transforms the sheet query to request query.
const requestQuery = React.useMemo( const httpQuery = React.useMemo(
() => transformFilterFormToQuery(query), () => transformFilterFormToQuery(query),
[query], [query],
); );
const { const {
data: journalSheet, data: journalSheet,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useJournalSheet(requestQuery, { keepPreviousData: true }); } = useJournalSheet(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
journalSheet, journalSheet,
isLoading, isLoading,
isFetching, isFetching,
refetchSheet: refetch, refetchSheet: refetch,
httpQuery: requestQuery httpQuery,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useJournalSheetPdf } from '@/hooks/query'; import { useJournalSheetPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useJournalSheetContext } from '../../JournalProvider';
export default function JournalSheetPdfDialogContent() { export default function JournalSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useJournalSheetPdf(); const { httpQuery } = useJournalSheetContext();
const { isLoading, pdfUrl } = useJournalSheetPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -1,7 +1,7 @@
// @ts-nocheck // @ts-nocheck
import React, { createContext, useContext, useMemo } from 'react'; import { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage';
import { useProfitLossSheet } from '@/hooks/query'; import { useProfitLossSheet } from '@/hooks/query';
import FinancialReportPage from '../FinancialReportPage';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
const ProfitLossSheetContext = createContext(); const ProfitLossSheetContext = createContext();
@@ -11,27 +11,22 @@ const ProfitLossSheetContext = createContext();
* @returns {React.JSX} * @returns {React.JSX}
*/ */
function ProfitLossSheetProvider({ query, ...props }) { function ProfitLossSheetProvider({ query, ...props }) {
const httpQuery = useMemo(() => transformFilterFormToQuery(query), [query]);
const innerQuery = useMemo(() => {
return transformFilterFormToQuery(query);
}, [query]);
const { const {
data: profitLossSheet, data: profitLossSheet,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useProfitLossSheet( } = useProfitLossSheet(httpQuery, { keepPreviousData: true });
innerQuery,
{ keepPreviousData: true },
);
const provider = { const provider = {
profitLossSheet, profitLossSheet,
isLoading, isLoading,
isFetching, isFetching,
sheetRefetch: refetch, sheetRefetch: refetch,
query: innerQuery query: httpQuery,
httpQuery,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useProfitLossSheetPdf } from '@/hooks/query'; import { useProfitLossSheetPdf } from '@/hooks/query';
import { useProfitLossSheetContext } from '../ProfitLossProvider';
export default function ProfitLossSheetPdfDialogContent() { export default function ProfitLossSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useProfitLossSheetPdf(); const { httpQuery } = useProfitLossSheetContext();
const { isLoading, pdfUrl } = useProfitLossSheetPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { useRef } from 'react'; import { useRef } from 'react';
import { import {
Button, Button,
Classes, Classes,
@@ -78,7 +78,7 @@ export const ProfitLossSheetExportMenu = () => {
isCloseButtonShown: true, isCloseButtonShown: true,
timeout: 2000, timeout: 2000,
}; };
const { query } = useProfitLossSheetContext(); const { httpQuery } = useProfitLossSheetContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -96,7 +96,7 @@ export const ProfitLossSheetExportMenu = () => {
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useProfitLossSheetXlsxExport(query, { const { mutateAsync: xlsxExport } = useProfitLossSheetXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -115,7 +115,7 @@ export const ProfitLossSheetExportMenu = () => {
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useProfitLossSheetCsvExport(query, { const { mutateAsync: csvExport } = useProfitLossSheetCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { createContext, useContext } from 'react'; import React, { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { usePurchasesByItemsTable } from '@/hooks/query'; import { usePurchasesByItemsTable } from '@/hooks/query';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
@@ -7,26 +7,23 @@ import { transformFilterFormToQuery } from '../common';
const PurchasesByItemsContext = createContext(); const PurchasesByItemsContext = createContext();
function PurchasesByItemsProvider({ query, ...props }) { function PurchasesByItemsProvider({ query, ...props }) {
// Transformes the report query to http query.
const httpQuery = useMemo(() => transformFilterFormToQuery(query), [query]);
// Handle fetching the purchases by items report based on the given query. // Handle fetching the purchases by items report based on the given query.
const { const {
data: purchaseByItems, data: purchaseByItems,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = usePurchasesByItemsTable( } = usePurchasesByItemsTable(httpQuery, { keepPreviousData: true });
{
...transformFilterFormToQuery(query),
},
{
keepPreviousData: true,
},
);
const provider = { const provider = {
purchaseByItems, purchaseByItems,
isFetching, isFetching,
isLoading, isLoading,
refetchSheet: refetch, refetchSheet: refetch,
httpQuery,
}; };
return ( return (
<FinancialReportPage name={'purchase-by-items'}> <FinancialReportPage name={'purchase-by-items'}>

View File

@@ -37,11 +37,8 @@ export function PurchasesByItemsLoadingBar() {
*/ */
export const PurchasesByItemsExportMenu = () => { export const PurchasesByItemsExportMenu = () => {
const toastKey = useRef(null); const toastKey = useRef(null);
const commonToastConfig = { const commonToastConfig = { isCloseButtonShown: true, timeout: 2000 };
isCloseButtonShown: true, const { httpQuery } = usePurchaseByItemsContext();
timeout: 2000,
};
const { query } = usePurchaseByItemsContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -57,9 +54,8 @@ export const PurchasesByItemsExportMenu = () => {
</Stack> </Stack>
); );
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = usePurchasesByItemsXlsxExport(query, { const { mutateAsync: xlsxExport } = usePurchasesByItemsXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -78,7 +74,7 @@ export const PurchasesByItemsExportMenu = () => {
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = usePurchasesByItemsCsvExport(query, { const { mutateAsync: csvExport } = usePurchasesByItemsCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { import {
DialogContent, DialogContent,
@@ -5,9 +6,11 @@ import {
FormattedMessage as T, FormattedMessage as T,
} from '@/components'; } from '@/components';
import { usePurchasesByItemsPdfExport } from '@/hooks/query'; import { usePurchasesByItemsPdfExport } from '@/hooks/query';
import { usePurchasesByItemsQuery } from '../../utils';
export default function PurchasesByItemsPdfDialogContent() { export default function PurchasesByItemsPdfDialogContent() {
const { isLoading, pdfUrl } = usePurchasesByItemsPdfExport(); const { httpQuery } = usePurchasesByItemsQuery();
const { isLoading, pdfUrl } = usePurchasesByItemsPdfExport(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import { createContext, useContext } from 'react'; import { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useSalesByItemsTable } from '@/hooks/query'; import { useSalesByItemsTable } from '@/hooks/query';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
@@ -7,25 +7,22 @@ import { transformFilterFormToQuery } from '../common';
const SalesByItemsContext = createContext(); const SalesByItemsContext = createContext();
function SalesByItemProvider({ query, ...props }) { function SalesByItemProvider({ query, ...props }) {
// Transformes the sheet query to http query.
const httpQuery = useMemo(() => transformFilterFormToQuery(query), [query]);
const { const {
data: salesByItems, data: salesByItems,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useSalesByItemsTable( } = useSalesByItemsTable({ ...httpQuery }, { keepPreviousData: true });
{
...transformFilterFormToQuery(query),
},
{
keepPreviousData: true,
},
);
const provider = { const provider = {
salesByItems, salesByItems,
isFetching, isFetching,
isLoading, isLoading,
refetchSheet: refetch, refetchSheet: refetch,
httpQuery,
}; };
return ( return (
<FinancialReportPage name={'sales-by-items'}> <FinancialReportPage name={'sales-by-items'}>

View File

@@ -1,13 +1,9 @@
// @ts-nocheck // @ts-nocheck
import { useMemo, useRef } from 'react'; import { useRef } from 'react';
import intl from 'react-intl-universal';
import classNames from 'classnames'; import classNames from 'classnames';
import { Classes } from '@blueprintjs/core'; import { Classes } from '@blueprintjs/core';
import { getColumnWidth } from '@/utils';
import { AppToaster, If, Stack } from '@/components'; import { AppToaster, If, Stack } from '@/components';
import { Align } from '@/constants';
import { CellTextSpan } from '@/components/Datatable/Cells';
import { useSalesByItemsContext } from './SalesByItemProvider'; import { useSalesByItemsContext } from './SalesByItemProvider';
import FinancialLoadingBar from '../FinancialLoadingBar'; import FinancialLoadingBar from '../FinancialLoadingBar';
import { Intent, Menu, MenuItem, ProgressBar, Text } from '@blueprintjs/core'; import { Intent, Menu, MenuItem, ProgressBar, Text } from '@blueprintjs/core';
@@ -34,11 +30,8 @@ export function SalesByItemsLoadingBar() {
*/ */
export const SalesByItemsSheetExportMenu = () => { export const SalesByItemsSheetExportMenu = () => {
const toastKey = useRef(null); const toastKey = useRef(null);
const commonToastConfig = { const commonToastConfig = { isCloseButtonShown: true, timeout: 2000, };
isCloseButtonShown: true, const { httpQuery } = useSalesByItemsContext();
timeout: 2000,
};
const { query } = useSalesByItemsContext();
const openProgressToast = (amount: number) => { const openProgressToast = (amount: number) => {
return ( return (
@@ -54,9 +47,8 @@ export const SalesByItemsSheetExportMenu = () => {
</Stack> </Stack>
); );
}; };
// Export the report to xlsx. // Export the report to xlsx.
const { mutateAsync: xlsxExport } = useSalesByItemsXlsxExport(query, { const { mutateAsync: xlsxExport } = useSalesByItemsXlsxExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({
@@ -75,7 +67,7 @@ export const SalesByItemsSheetExportMenu = () => {
}, },
}); });
// Export the report to csv. // Export the report to csv.
const { mutateAsync: csvExport } = useSalesByItemsCsvExport(query, { const { mutateAsync: csvExport } = useSalesByItemsCsvExport(httpQuery, {
onDownloadProgress: (xlsxExportProgress: number) => { onDownloadProgress: (xlsxExportProgress: number) => {
if (!toastKey.current) { if (!toastKey.current) {
toastKey.current = AppToaster.show({ toastKey.current = AppToaster.show({

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useSalesByItemsPdfExport } from '@/hooks/query'; import { useSalesByItemsPdfExport } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useSalesByItemsContext } from '../../SalesByItemProvider';
export default function SalesByItemsPdfDialogContent() { export default function SalesByItemsPdfDialogContent() {
const { isLoading, pdfUrl } = useSalesByItemsPdfExport(); const { httpQuery } = useSalesByItemsContext();
const { isLoading, pdfUrl } = useSalesByItemsPdfExport(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useSalesTaxLiabilitySummaryPdf } from '@/hooks/query'; import { useSalesTaxLiabilitySummaryPdf } from '@/hooks/query';
import { useSalesTaxLiabilitySummaryContext } from '../SalesTaxLiabilitySummaryBoot';
export default function SalesTaxLiabilityPdfDialogContent() { export default function SalesTaxLiabilityPdfDialogContent() {
const { isLoading, pdfUrl } = useSalesTaxLiabilitySummaryPdf(); const { query } = useSalesTaxLiabilitySummaryContext();
const { isLoading, pdfUrl } = useSalesTaxLiabilitySummaryPdf(query);
return ( return (
<DialogContent> <DialogContent>
@@ -23,7 +26,7 @@ export default function SalesTaxLiabilityPdfDialogContent() {
<AnchorButton <AnchorButton
href={pdfUrl} href={pdfUrl}
download={'profit_loss_sheet.pdf'} download={'sales-tax-liability-summary.pdf'}
minimal={true} minimal={true}
outlined={true} outlined={true}
> >

View File

@@ -59,7 +59,6 @@ function SalesTaxLiabilitySummaryActionsBar({
openDialog(DialogsName.SalesTaxLiabilitySummaryPdfPreview) openDialog(DialogsName.SalesTaxLiabilitySummaryPdfPreview)
}; };
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>

View File

@@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import React, { createContext, useContext } from 'react'; import { createContext, useContext, useMemo } from 'react';
import FinancialReportPage from '../FinancialReportPage'; import FinancialReportPage from '../FinancialReportPage';
import { useTrialBalanceSheet } from '@/hooks/query'; import { useTrialBalanceSheet } from '@/hooks/query';
import { transformFilterFormToQuery } from '../common'; import { transformFilterFormToQuery } from '../common';
@@ -7,25 +7,21 @@ import { transformFilterFormToQuery } from '../common';
const TrialBalanceSheetContext = createContext(); const TrialBalanceSheetContext = createContext();
function TrialBalanceSheetProvider({ query, ...props }) { function TrialBalanceSheetProvider({ query, ...props }) {
const httpQuery = useMemo(() => transformFilterFormToQuery(query), [query]);
const { const {
data: trialBalanceSheet, data: trialBalanceSheet,
isFetching, isFetching,
isLoading, isLoading,
refetch, refetch,
} = useTrialBalanceSheet( } = useTrialBalanceSheet({ ...httpQuery }, { keepPreviousData: true });
{
...transformFilterFormToQuery(query),
},
{
keepPreviousData: true,
},
);
const provider = { const provider = {
trialBalanceSheet, trialBalanceSheet,
isLoading, isLoading,
isFetching, isFetching,
refetchSheet: refetch, refetchSheet: refetch,
httpQuery,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useTrialBalanceSheetPdf } from '@/hooks/query'; import { useTrialBalanceSheetPdf } from '@/hooks/query';
import { useTrialBalanceSheetContext } from '../../TrialBalanceProvider';
export default function TrialBalanceSheetPdfDialogContent() { export default function TrialBalanceSheetPdfDialogContent() {
const { isLoading, pdfUrl } = useTrialBalanceSheetPdf(); const { httpQuery } = useTrialBalanceSheetContext();
const { isLoading, pdfUrl } = useTrialBalanceSheetPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -10,26 +10,25 @@ const VendorsBalanceSummaryContext = React.createContext();
* Vendors balance summary provider. * Vendors balance summary provider.
*/ */
function VendorsBalanceSummaryProvider({ filter, ...props }) { function VendorsBalanceSummaryProvider({ filter, ...props }) {
const query = React.useMemo(() => transformFilterFormToQuery(filter), [ const httpQuery = React.useMemo(
filter, () => transformFilterFormToQuery(filter),
]); [filter],
);
// Fetching vendors balance summary report based on the given query. // Fetching vendors balance summary report based on the given query.
const { const {
data: VendorBalanceSummary, data: VendorBalanceSummary,
isLoading: isVendorsBalanceLoading, isLoading: isVendorsBalanceLoading,
isFetching: isVendorsBalanceFetching, isFetching: isVendorsBalanceFetching,
refetch, refetch,
} = useVendorsBalanceSummaryReport(query, { } = useVendorsBalanceSummaryReport(httpQuery, { keepPreviousData: true });
keepPreviousData: true,
});
// Provider. // Provider.
const provider = { const provider = {
VendorBalanceSummary, VendorBalanceSummary,
isVendorsBalanceLoading, isVendorsBalanceLoading,
isVendorsBalanceFetching, isVendorsBalanceFetching,
refetch, refetch,
httpQuery,
}; };
return ( return (

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
@@ -5,9 +6,11 @@ import {
} from '@/components'; } from '@/components';
import { useVendorBalanceSummaryPdfExport } from '@/hooks/query'; import { useVendorBalanceSummaryPdfExport } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { AnchorButton } from '@blueprintjs/core';
import { useVendorsBalanceSummaryContext } from '../../VendorsBalanceSummaryProvider';
export default function VendorTransactionsPdfDialogContent() { export default function VendorTransactionsPdfDialogContent() {
const { isLoading, pdfUrl } = useVendorBalanceSummaryPdfExport(); const { httpQuery } = useVendorsBalanceSummaryContext();
const { isLoading, pdfUrl } = useVendorBalanceSummaryPdfExport(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -14,7 +14,7 @@ import withVendorsTransactionsActions from './withVendorsTransactionsActions';
import { compose } from '@/utils'; import { compose } from '@/utils';
import { useVendorsTransactionsQuery } from './_utils'; import { useVendorsTransactionsQuery } from './_utils';
import { VendorBalanceDialogs } from '../VendorsBalanceSummary/VendorBalanceDialogs'; import { VendorTransactionsDialogs } from './VendorTransactionsDialogs';
/** /**
* Vendors transactions. * Vendors transactions.
@@ -67,7 +67,7 @@ function VendorsTransactions({
</FinancialStatement> </FinancialStatement>
</DashboardPageContent> </DashboardPageContent>
<VendorBalanceDialogs /> <VendorTransactionsDialogs />
</VendorsTransactionsProvider> </VendorsTransactionsProvider>
); );
} }

View File

@@ -10,7 +10,7 @@ const VendorsTransactionsContext = createContext();
* Vendors transactions provider. * Vendors transactions provider.
*/ */
function VendorsTransactionsProvider({ filter, ...props }) { function VendorsTransactionsProvider({ filter, ...props }) {
const query = useMemo(() => transformFilterFormToQuery(filter), [filter]); const httpQuery = useMemo(() => transformFilterFormToQuery(filter), [filter]);
// Fetch vendors transactions based on the given query. // Fetch vendors transactions based on the given query.
const { const {
@@ -18,16 +18,15 @@ function VendorsTransactionsProvider({ filter, ...props }) {
isFetching: isVendorsTransactionFetching, isFetching: isVendorsTransactionFetching,
isLoading: isVendorsTransactionsLoading, isLoading: isVendorsTransactionsLoading,
refetch, refetch,
} = useVendorsTransactionsReport(query, { keepPreviousData: true }); } = useVendorsTransactionsReport(httpQuery, { keepPreviousData: true });
const provider = { const provider = {
vendorsTransactions, vendorsTransactions,
isVendorsTransactionsLoading, isVendorsTransactionsLoading,
isVendorsTransactionFetching, isVendorsTransactionFetching,
refetch, refetch,
filter, filter,
query, httpQuery,
}; };
return ( return (

View File

@@ -54,8 +54,11 @@ export const useAPAgingSheetCsvExport = (query, args) => {
}; };
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves the A/P aging summary pdf document.
*/ */
export function useAPAgingSummaryPdf() { export function useAPAgingSummaryPdf(query = {}) {
return useRequestPdf(`financial_statements/payable_aging_summary`); return useRequestPdf({
url: `/api/financial_statements/payable_aging_summary`,
params: query,
});
} }

View File

@@ -55,6 +55,9 @@ export const useARAgingSheetCsvExport = (query, args) => {
/** /**
* Retrieves the A/R aging summary pdf document data. * Retrieves the A/R aging summary pdf document data.
*/ */
export function useARAgingSummaryPdf() { export function useARAgingSummaryPdf(query = {}) {
return useRequestPdf(`financial_statements/receivable_aging_summary`); return useRequestPdf({
url: `/api/financial_statements/receivable_aging_summary`,
params: query,
});
} }

View File

@@ -56,6 +56,9 @@ export const useBalanceSheetCsvExport = (query, args) => {
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves the balance sheet pdf document data.
*/ */
export function useBalanceSheetPdf() { export function useBalanceSheetPdf(query = {}) {
return useRequestPdf(`financial_statements/balance_sheet`); return useRequestPdf({
url: `/api/financial_statements/balance_sheet`,
params: query,
});
} }

View File

@@ -73,8 +73,11 @@ export const useCashFlowStatementCsvExport = (query, args) => {
}; };
/** /**
* Retrieves the cashflow sheet pdf document data. * Retrieves the cashflow sheet pdf document.
*/ */
export function useCashflowSheetPdf() { export function useCashflowSheetPdf(query = {}) {
return useRequestPdf(`financial_statements/cash-flow`); return useRequestPdf({
url: `/api/financial_statements/cash-flow`,
params: query,
});
} }

View File

@@ -61,8 +61,11 @@ export const useCustomerBalanceSummaryCsvExport = (query, args) => {
}; };
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves the pdf content of customers balance summary.
*/ */
export function useCustomerBalanceSummaryPdf() { export function useCustomerBalanceSummaryPdf(query = {}) {
return useRequestPdf(`financial_statements/customer-balance-summary`); return useRequestPdf({
url: `/api/financial_statements/customer-balance-summary`,
params: query,
});
} }

View File

@@ -64,6 +64,12 @@ export const useCustomersTransactionsCsvExport = (query, args) => {
}); });
}; };
export const useCustomersTransactionsPdfExport = () => { /**
return useRequestPdf('/financial_statements/transactions-by-customers'); * Retrieves the pdf content of customers transactions.
*/
export const useCustomersTransactionsPdfExport = (query = {}) => {
return useRequestPdf({
url: '/api/financial_statements/transactions-by-customers',
params: query,
});
}; };

View File

@@ -55,6 +55,9 @@ export const useGeneralLedgerSheetCsvExport = (query, args) => {
/** /**
* Retrieves the general ledger pdf document data. * Retrieves the general ledger pdf document data.
*/ */
export function useGeneralLedgerPdf() { export function useGeneralLedgerPdf(query = {}) {
return useRequestPdf(`financial_statements/general_ledger`); return useRequestPdf({
url: `/api/financial_statements/general_ledger`,
params: query
});
} }

View File

@@ -67,6 +67,9 @@ export const useInventoryItemDetailsCsvExport = (query, args) => {
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves the balance sheet pdf document data.
*/ */
export function useInventoryItemDetailsPdf() { export function useInventoryItemDetailsPdf(query = {}) {
return useRequestPdf(`financial_statements/inventory-item-details`); return useRequestPdf({
url: `/api/financial_statements/inventory-item-details`,
params: query,
});
} }

View File

@@ -58,13 +58,6 @@ export const useInventoryValuationXlsxExport = (query, args) => {
}); });
}; };
/**
* Retrieves the inventory valuation pdf document data.
*/
export function useInventoryValuationPdf() {
return useRequestPdf(`financial_statements/inventory-valuation`);
}
export const useInventoryValuationCsvExport = (query, args) => { export const useInventoryValuationCsvExport = (query, args) => {
return useDownloadFile({ return useDownloadFile({
url: '/financial_statements/inventory-valuation', url: '/financial_statements/inventory-valuation',
@@ -78,3 +71,13 @@ export const useInventoryValuationCsvExport = (query, args) => {
...args, ...args,
}); });
}; };
/**
* Retrieves the inventory valuation pdf document data.
*/
export function useInventoryValuationPdf(query = {}) {
return useRequestPdf({
url: `/api/financial_statements/inventory-valuation`,
params: query,
});
}

View File

@@ -57,5 +57,8 @@ export const useJournalSheetCsvExport = (query, args) => {
* Retrieves the journal sheet pdf content. * Retrieves the journal sheet pdf content.
*/ */
export const useJournalSheetPdf = (query = {}) => { export const useJournalSheetPdf = (query = {}) => {
return useRequestPdf(`financial_statements/journal`); return useRequestPdf({
url: `/api/financial_statements/journal`,
params: query,
});
}; };

View File

@@ -54,8 +54,11 @@ export const useProfitLossSheetCsvExport = (query, args) => {
}; };
/** /**
* Retrieves the cashflow sheet pdf document data. * Retrieves the profit/loss sheet pdf document data.
*/ */
export function useProfitLossSheetPdf() { export function useProfitLossSheetPdf(query = {}) {
return useRequestPdf(`financial_statements/profit_loss_sheet`); return useRequestPdf({
url: `/api/financial_statements/profit_loss_sheet`,
params: query,
});
} }

View File

@@ -69,9 +69,11 @@ export const usePurchasesByItemsXlsxExport = (query, args) => {
}; };
/** /**
* * Retrieves the pdf document of purchases by items.
* @returns
*/ */
export const usePurchasesByItemsPdfExport = () => { export const usePurchasesByItemsPdfExport = (query = {}) => {
return useRequestPdf('/financial_statements/purchases-by-items'); return useRequestPdf({
url: '/api/financial_statements/purchases-by-items',
params: query,
});
}; };

View File

@@ -70,6 +70,9 @@ export const useSalesByItemsXlsxExport = (query, args) => {
}); });
}; };
export const useSalesByItemsPdfExport = () => { export const useSalesByItemsPdfExport = (query = {}) => {
return useRequestPdf('/financial_statements/sales-by-items'); return useRequestPdf({
url: '/api/financial_statements/sales-by-items',
params: query,
});
}; };

View File

@@ -54,8 +54,11 @@ export const useSalesTaxLiabilitySummaryCsvExport = (query, args) => {
}; };
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves pdf document data of sales tax liability summary.
*/ */
export function useSalesTaxLiabilitySummaryPdf() { export function useSalesTaxLiabilitySummaryPdf(query = {}) {
return useRequestPdf(`financial_statements/sales-tax-liability-summary`); return useRequestPdf({
url: `/api/financial_statements/sales-tax-liability-summary`,
params: query,
});
} }

View File

@@ -56,6 +56,9 @@ export const useTrialBalanceSheetCsvExport = (query, args) => {
/** /**
* Retrieves the trial balance sheet pdf document data. * Retrieves the trial balance sheet pdf document data.
*/ */
export function useTrialBalanceSheetPdf() { export function useTrialBalanceSheetPdf(query = {}) {
return useRequestPdf(`financial_statements/trial_balance_sheet`); return useRequestPdf({
url: `/api/financial_statements/trial_balance_sheet`,
params: query,
});
} }

View File

@@ -63,6 +63,9 @@ export const useVendorBalanceSummaryCsvExport = (args) => {
}); });
}; };
export const useVendorBalanceSummaryPdfExport = () => { export const useVendorBalanceSummaryPdfExport = (query = {}) => {
return useRequestPdf('/financial_statements/vendor-balance-summary'); return useRequestPdf({
url: '/api/financial_statements/vendor-balance-summary',
params: query,
});
}; };

View File

@@ -64,8 +64,11 @@ export const useVendorsTransactionsCsvExport = (query, args) => {
}); });
}; };
/** /**
* Retrieves the balance sheet pdf document data. * Retrieves pdf document data of the transactions by vendor sheet.
*/ */
export function useTransactionsByVendorsPdf() { export function useTransactionsByVendorsPdf(query = {}) {
return useRequestPdf(`financial_statements/transactions-by-vendors`); return useRequestPdf({
url: `/api/financial_statements/transactions-by-vendors`,
params: query,
});
} }