From 2d34baa7a577c7b43d53f3bf7623106a9cb40c45 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Tue, 8 Mar 2022 15:47:28 +0200 Subject: [PATCH] feat(branches & warehouses): fix api. --- .../MakeJournal/MakeJournalEntriesForm.js | 2 +- .../MakeJournal/MakeJournalProvider.js | 10 ++++++++-- src/containers/Accounting/MakeJournal/utils.js | 2 +- .../MoneyInDialog/MoneyInDialogProvider.js | 7 ++++++- .../MoneyOutDialog/MoneyOutDialogProvider.js | 9 ++++++++- .../QuickPaymentMadeFormProvider.js | 10 ++++++++-- .../QuickPaymentReceiveFormProvider.js | 10 +++++++--- .../RefundCreditNoteFormProvider.js | 16 +++++++++++++--- .../RefundVendorCreditFormProvider.js | 10 ++++++++-- .../APAgingSummaryHeaderDimensionsProvider.js | 13 ++++++++++--- .../ARAgingSummaryHeaderDimensionsProvider.js | 13 ++++++++++--- .../BalanceSheetHeaderDimensionsProvider.js | 12 ++++++++++-- .../CashFlowStatementDimensionsPanelProvider.js | 14 +++++++++++--- ...eneralLedgerHeaderDimensionsPanelProvider.js | 12 ++++++++++-- ...yItemDetailsHeaderDimensionsPanelProvider.js | 14 ++++++++++++-- ...oryValuationHeaderDimensionsPanelProvider.js | 14 ++++++++++++-- .../JournalSheetHeaderDimensionsProvider.js | 11 +++++++++-- .../ProfitLossSheetHeaderDimensionsProvider.js | 12 ++++++++++-- ...BalanceSheetHeaderDimensionsPanelProvider.js | 17 ++++++++++++++--- .../Bills/BillForm/BillFormProvider.js | 14 ++++++++++---- .../VendorCreditNoteFormProvider.js | 12 +++++++++--- .../CreditNoteForm/CreditNoteFormProvider.js | 11 +++++++++-- .../EstimateForm/EstimateFormProvider.js | 15 +++++++++++---- .../Invoices/InvoiceForm/InvoiceFormProvider.js | 11 +++++++++-- .../Receipts/ReceiptForm/ReceiptFormProvider.js | 14 ++++++++++---- .../WarehouseTransferFormProvider.js | 8 +++++++- 26 files changed, 233 insertions(+), 60 deletions(-) diff --git a/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js index 09a6ebf42..91ee4a397 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js +++ b/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js @@ -108,7 +108,7 @@ function MakeJournalEntriesForm({ return; } const form = { - ...omit(values, ['journal_number', 'journal_number_manually']), + ...omit(values, ['journal_number_manually']), ...(values.journal_number_manually && { journal_number: values.journal_number, }), diff --git a/src/containers/Accounting/MakeJournal/MakeJournalProvider.js b/src/containers/Accounting/MakeJournal/MakeJournalProvider.js index e4b25553c..ab127c698 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalProvider.js +++ b/src/containers/Accounting/MakeJournal/MakeJournalProvider.js @@ -1,5 +1,7 @@ import React, { createContext, useState } from 'react'; import { isEqual, isUndefined } from 'lodash'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { useAccounts, @@ -18,7 +20,11 @@ const MakeJournalFormContext = createContext(); /** * Make journal form provider. */ -function MakeJournalProvider({ journalId, baseCurrency, ...props }) { +function MakeJournalProvider({ journalId, query, baseCurrency, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Load the accounts list. const { data: accounts, isLoading: isAccountsLoading } = useAccounts(); @@ -48,7 +54,7 @@ function MakeJournalProvider({ journalId, baseCurrency, ...props }) { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches(query, { enabled: isBranchFeatureCan }); // Submit form payload. const [submitPayload, setSubmitPayload] = useState({}); diff --git a/src/containers/Accounting/MakeJournal/utils.js b/src/containers/Accounting/MakeJournal/utils.js index eb77cc534..c6dd073ec 100644 --- a/src/containers/Accounting/MakeJournal/utils.js +++ b/src/containers/Accounting/MakeJournal/utils.js @@ -46,7 +46,7 @@ export const defaultManualJournal = { currency_code: '', publish: '', branch_id: '', - exchange_rate: '', + exchange_rate: 1, entries: [...repeatValue(defaultEntry, 4)], }; diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js index f339bd58c..0319a74eb 100644 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js @@ -1,5 +1,7 @@ import React from 'react'; import { DialogContent } from 'components'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useCreateCashflowTransaction, useAccount, @@ -20,6 +22,9 @@ function MoneyInDialogProvider({ dialogName, ...props }) { + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches accounts list. const { isFetching: isAccountsLoading, data: accounts } = useAccounts(); @@ -33,7 +38,7 @@ function MoneyInDialogProvider({ data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Fetch cash flow list . const { data: cashflowAccounts, isLoading: isCashFlowAccountsLoading } = diff --git a/src/containers/Dialogs/MoneyOutDialog/MoneyOutDialogProvider.js b/src/containers/Dialogs/MoneyOutDialog/MoneyOutDialogProvider.js index 497cc6bd9..67e99cf00 100644 --- a/src/containers/Dialogs/MoneyOutDialog/MoneyOutDialogProvider.js +++ b/src/containers/Dialogs/MoneyOutDialog/MoneyOutDialogProvider.js @@ -1,5 +1,7 @@ import React from 'react'; import { DialogContent } from 'components'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useAccounts, useAccount, @@ -15,6 +17,10 @@ const MoneyInDialogContent = React.createContext(); * Money out dialog provider. */ function MoneyOutProvider({ accountId, accountType, dialogName, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches accounts list. const { isLoading: isAccountsLoading, data: accounts } = useAccounts(); @@ -28,7 +34,8 @@ function MoneyOutProvider({ accountId, accountType, dialogName, ...props }) { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); + // Fetch cash flow list . const { data: cashflowAccounts, isLoading: isCashFlowAccountsLoading } = useCashflowAccounts({}, { keepPreviousData: true }); diff --git a/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js index 449c80d6e..a85ffc609 100644 --- a/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js +++ b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js @@ -6,6 +6,8 @@ import { useBranches, useCreatePaymentMade, } from 'hooks/query'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { pick } from 'lodash'; @@ -14,7 +16,11 @@ const QuickPaymentMadeContext = React.createContext(); /** * Quick payment made dialog provider. */ -function QuickPaymentMadeFormProvider({ billId, dialogName, ...props }) { +function QuickPaymentMadeFormProvider({ query, billId, dialogName, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch bill details. const { isLoading: isBillLoading, data: bill } = useBill(billId, { enabled: !!billId, @@ -31,7 +37,7 @@ function QuickPaymentMadeFormProvider({ billId, dialogName, ...props }) { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches(query, { enabled: isBranchFeatureCan }); // State provider. const provider = { diff --git a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js index 736c2672f..9c3914cad 100644 --- a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js +++ b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js @@ -1,6 +1,8 @@ import React, { useContext, createContext } from 'react'; import { pick } from 'lodash'; import { DialogContent } from 'components'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useAccounts, useInvoice, @@ -15,11 +17,15 @@ const QuickPaymentReceiveContext = createContext(); * Quick payment receive dialog provider. */ function QuickPaymentReceiveFormProvider({ + query, invoiceId, dialogName, baseCurrency, ...props }) { + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch accounts data. const { data: accounts, isLoading: isAccountsLoading } = useAccounts(); @@ -38,9 +44,7 @@ function QuickPaymentReceiveFormProvider({ data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); - - + } = useBranches(query, { enabled: isBranchFeatureCan }); // State provider. const provider = { diff --git a/src/containers/Dialogs/RefundCreditNoteDialog/RefundCreditNoteFormProvider.js b/src/containers/Dialogs/RefundCreditNoteDialog/RefundCreditNoteFormProvider.js index 05cec7d2c..62b255e2e 100644 --- a/src/containers/Dialogs/RefundCreditNoteDialog/RefundCreditNoteFormProvider.js +++ b/src/containers/Dialogs/RefundCreditNoteDialog/RefundCreditNoteFormProvider.js @@ -1,7 +1,8 @@ import React from 'react'; import { DialogContent } from 'components'; import { pick } from 'lodash'; - +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useAccounts, useCreditNote, @@ -14,7 +15,16 @@ const RefundCreditNoteContext = React.createContext(); /** * Refund credit note form provider. */ -function RefundCreditNoteFormProvider({ creditNoteId, dialogName, ...props }) { +function RefundCreditNoteFormProvider({ + creditNoteId, + dialogName, + query, + ...props +}) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch accounts data. const { data: accounts, isLoading: isAccountsLoading } = useAccounts(); @@ -31,7 +41,7 @@ function RefundCreditNoteFormProvider({ creditNoteId, dialogName, ...props }) { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches(query, { enabled: isBranchFeatureCan }); // Create and edit credit note mutations. const { mutateAsync: createRefundCreditNoteMutate } = diff --git a/src/containers/Dialogs/RefundVendorCreditDialog/RefundVendorCreditFormProvider.js b/src/containers/Dialogs/RefundVendorCreditDialog/RefundVendorCreditFormProvider.js index c01e41565..1e42e3a2e 100644 --- a/src/containers/Dialogs/RefundVendorCreditDialog/RefundVendorCreditFormProvider.js +++ b/src/containers/Dialogs/RefundVendorCreditDialog/RefundVendorCreditFormProvider.js @@ -1,7 +1,8 @@ import React from 'react'; import { DialogContent } from 'components'; import { pick } from 'lodash'; - +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useAccounts, useVendorCredit, @@ -14,8 +15,13 @@ const RefundVendorCreditContext = React.createContext(); function RefundVendorCreditFormProvider({ vendorCreditId, dialogName, + query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch accounts data. const { data: accounts, isLoading: isAccountsLoading } = useAccounts(); @@ -24,7 +30,7 @@ function RefundVendorCreditFormProvider({ data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches(query, { enabled: isBranchFeatureCan }); // Handle fetch vendor credit details. const { data: vendorCredit, isLoading: isVendorCreditLoading } = diff --git a/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderDimensionsProvider.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderDimensionsProvider.js index 1c38bcf1b..d3a9e733b 100644 --- a/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderDimensionsProvider.js +++ b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderDimensionsProvider.js @@ -1,5 +1,6 @@ import React from 'react'; - +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useBranches } from 'hooks/query'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; @@ -9,9 +10,15 @@ const APAgingSummaryHeaderDimensonsContext = React.createContext(); * APAging summary header dismensions provider. * @returns */ -function APAgingSummaryHeaderDimensionsProvider({ ...props }) { +function APAgingSummaryHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderDimensionsProvider.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderDimensionsProvider.js index 6db04e9fc..fdd7c278b 100644 --- a/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderDimensionsProvider.js +++ b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderDimensionsProvider.js @@ -1,5 +1,6 @@ import React from 'react'; - +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useBranches } from 'hooks/query'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; @@ -9,9 +10,15 @@ const ARAgingSummaryHeaderDimensonsContext = React.createContext(); * ARAging summary header dismensions provider. * @returns */ -function ARAgingSummaryHeaderDimensionsProvider({ ...props }) { +function ARAgingSummaryHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderDimensionsProvider.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderDimensionsProvider.js index 183f22fdf..aaa1fe40a 100644 --- a/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderDimensionsProvider.js +++ b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderDimensionsProvider.js @@ -1,6 +1,8 @@ import React from 'react'; +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const BalanceSheetHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,15 @@ const BalanceSheetHeaderDimensionsPanelContext = React.createContext(); * BL sheet header provider. * @returns */ -function BalanceSheetHeaderDimensionsProvider({ ...props }) { +function BalanceSheetHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementDimensionsPanelProvider.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementDimensionsPanelProvider.js index 90f304924..9b4ac1a79 100644 --- a/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementDimensionsPanelProvider.js +++ b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementDimensionsPanelProvider.js @@ -1,6 +1,7 @@ import React from 'react'; - +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const CashFlowStatementDimensionsPanelContext = React.createContext(); @@ -9,9 +10,16 @@ const CashFlowStatementDimensionsPanelContext = React.createContext(); * cash flow statement dimensions panel provider. * @returns */ -function CashFlowStatementDimensionsPanelProvider({ ...props }) { +function CashFlowStatementDimensionsPanelProvider({ query,...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches( + query, + { enabled: isBranchFeatureCan }, + ); // Provider const provider = { diff --git a/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderDimensionsPanelProvider.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderDimensionsPanelProvider.js index eb72ff66b..bdc93a85c 100644 --- a/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderDimensionsPanelProvider.js +++ b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderDimensionsPanelProvider.js @@ -1,6 +1,8 @@ import React from 'react'; +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const GeneralLedgerHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,15 @@ const GeneralLedgerHeaderDimensionsPanelContext = React.createContext(); * General Ledger Header Dimensions Panel provider. * @returns */ -function GeneralLedgerHeaderDimensionsPanelProvider({ ...props }) { +function GeneralLedgerHeaderDimensionsPanelProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderDimensionsPanelProvider.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderDimensionsPanelProvider.js index e87584a8e..356d88670 100644 --- a/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderDimensionsPanelProvider.js +++ b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderDimensionsPanelProvider.js @@ -1,6 +1,8 @@ import React from 'react'; +import { Features } from 'common'; import { useWarehouses } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const InventoryItemDetailsHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,17 @@ const InventoryItemDetailsHeaderDimensionsPanelContext = React.createContext(); * Inventory Item details header provider. * @returns */ -function InventoryItemDetailsHeaderDimensionsProvider({ ...props }) { +function InventoryItemDetailsHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + // Fetch warehouses list. - const { data: warehouses, isLoading: isWarehouesLoading } = useWarehouses(); + const { data: warehouses, isLoading: isWarehouesLoading } = useWarehouses( + query, + { enabled: isWarehouseFeatureCan }, + ); // Provider const provider = { diff --git a/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderDimensionsPanelProvider.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderDimensionsPanelProvider.js index 7e96209c8..c9763e679 100644 --- a/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderDimensionsPanelProvider.js +++ b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderDimensionsPanelProvider.js @@ -1,6 +1,8 @@ import React from 'react'; import { useWarehouses } from 'hooks/query'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const InventoryValuationHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,17 @@ const InventoryValuationHeaderDimensionsPanelContext = React.createContext(); * Inventory valuation header provider. * @returns */ -function InventoryValuationHeaderDimensionsProvider({ ...props }) { +function InventoryValuationHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + // Fetch warehouses list. - const { data: warehouses, isLoading: isWarehouesLoading } = useWarehouses(); + const { data: warehouses, isLoading: isWarehouesLoading } = useWarehouses( + query, + { enabled: isWarehouseFeatureCan }, + ); // Provider const provider = { diff --git a/src/containers/FinancialStatements/Journal/JournalSheetHeaderDimensionsProvider.js b/src/containers/FinancialStatements/Journal/JournalSheetHeaderDimensionsProvider.js index 90b873a76..771bedd3f 100644 --- a/src/containers/FinancialStatements/Journal/JournalSheetHeaderDimensionsProvider.js +++ b/src/containers/FinancialStatements/Journal/JournalSheetHeaderDimensionsProvider.js @@ -1,6 +1,8 @@ import React from 'react'; +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const JournalSheetHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,14 @@ const JournalSheetHeaderDimensionsPanelContext = React.createContext(); * Journal sheet header provider. * @returns */ -function JournalSheetHeaderDimensionsProvider({ ...props }) { +function JournalSheetHeaderDimensionsProvider({ query, ...props }) { + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderDimensionsProvider.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderDimensionsProvider.js index eeb903458..b1ac95e97 100644 --- a/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderDimensionsProvider.js +++ b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderDimensionsProvider.js @@ -1,6 +1,8 @@ import React from 'react'; +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const ProfitLossSheetHeaderDimensionsPanelContext = React.createContext(); @@ -9,9 +11,15 @@ const ProfitLossSheetHeaderDimensionsPanelContext = React.createContext(); * profit loss sheet header provider. * @returns */ -function ProfitLossSheetHeaderDimensionsProvider({ ...props }) { +function ProfitLossSheetHeaderDimensionsProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { diff --git a/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderDimensionsPanelProvider.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderDimensionsPanelProvider.js index 23d942903..ece357e23 100644 --- a/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderDimensionsPanelProvider.js +++ b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderDimensionsPanelProvider.js @@ -1,5 +1,7 @@ import React from 'react'; +import { Features } from 'common'; import { useBranches } from 'hooks/query'; +import { useFeatureCan } from 'hooks/state'; import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton'; const TrialBLSheetHeaderDimensionsContext = React.createContext(); @@ -8,9 +10,15 @@ const TrialBLSheetHeaderDimensionsContext = React.createContext(); * Trial BL sheet header provider. * @returns */ -function TrialBLHeaderDimensionsPanelProvider({ ...props }) { +function TrialBLHeaderDimensionsPanelProvider({ query, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetches the branches list. - const { isLoading: isBranchesLoading, data: branches } = useBranches(); + const { isLoading: isBranchesLoading, data: branches } = useBranches(query, { + enabled: isBranchFeatureCan, + }); // Provider const provider = { @@ -28,4 +36,7 @@ function TrialBLHeaderDimensionsPanelProvider({ ...props }) { const useTrialBalanceSheetPanelContext = () => React.useContext(TrialBLSheetHeaderDimensionsContext); -export { TrialBLHeaderDimensionsPanelProvider, useTrialBalanceSheetPanelContext }; +export { + TrialBLHeaderDimensionsPanelProvider, + useTrialBalanceSheetPanelContext, +}; diff --git a/src/containers/Purchases/Bills/BillForm/BillFormProvider.js b/src/containers/Purchases/Bills/BillForm/BillFormProvider.js index f75863496..f6c74d663 100644 --- a/src/containers/Purchases/Bills/BillForm/BillFormProvider.js +++ b/src/containers/Purchases/Bills/BillForm/BillFormProvider.js @@ -1,6 +1,7 @@ import React, { createContext, useState } from 'react'; -import {isEqual, isUndefined } from 'lodash'; - +import { isEqual, isUndefined } from 'lodash'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { useAccounts, @@ -38,6 +39,11 @@ const stringifiedFilterRoles = JSON.stringify([ * Bill form provider. */ function BillFormProvider({ billId, baseCurrency, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch accounts. const { data: accounts, isLoading: isAccountsLoading } = useAccounts(); @@ -66,14 +72,14 @@ function BillFormProvider({ billId, baseCurrency, ...props }) { data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Handle fetching bill settings. const { isFetching: isSettingLoading } = useSettings(); diff --git a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormProvider.js b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormProvider.js index fb9988c8d..10c27045f 100644 --- a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormProvider.js +++ b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormProvider.js @@ -3,6 +3,8 @@ import { useLocation } from 'react-router-dom'; import { isEmpty, pick, isEqual, isUndefined } from 'lodash'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { transformToEditForm } from './utils'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useCreateVendorCredit, useEditVendorCredit, @@ -26,9 +28,13 @@ function VendorCreditNoteFormProvider({ ...props }) { const { state } = useLocation(); - const billId = state?.billId; + // Features guard. + const { featureCan } = useFeatureCan(); + const isBranchFeatureCan = featureCan(Features.Branches); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + // Handle fetching the items table based on the given query. const { data: { items }, @@ -62,14 +68,14 @@ function VendorCreditNoteFormProvider({ data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Form submit payload. const [submitPayload, setSubmitPayload] = React.useState(); diff --git a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormProvider.js b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormProvider.js index 5d762e1ae..b320f617f 100644 --- a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormProvider.js +++ b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormProvider.js @@ -3,6 +3,8 @@ import { useLocation } from 'react-router-dom'; import { isEmpty, pick, isEqual, isUndefined } from 'lodash'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { transformToEditForm } from './utils'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { useCreditNote, @@ -25,6 +27,11 @@ function CreditNoteFormProvider({ creditNoteId, baseCurrency, ...props }) { const { state } = useLocation(); const invoiceId = state?.invoiceId; + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + const isBranchFeatureCan = featureCan(Features.Branches); + // Handle fetch customers data table or list const { data: { customers }, @@ -56,14 +63,14 @@ function CreditNoteFormProvider({ creditNoteId, baseCurrency, ...props }) { data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Handle fetching settings. useSettingsCreditNotes(); diff --git a/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js index a157ed6f8..93ec695d9 100644 --- a/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js +++ b/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js @@ -12,6 +12,8 @@ import { useCreateEstimate, useEditEstimate, } from 'hooks/query'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { ITEMS_FILTER_ROLES } from './utils'; const EstimateFormContext = createContext(); @@ -19,7 +21,12 @@ const EstimateFormContext = createContext(); /** * Estimate form provider. */ -function EstimateFormProvider({ estimateId, baseCurrency, ...props }) { +function EstimateFormProvider({ query, estimateId, baseCurrency, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + const isBranchFeatureCan = featureCan(Features.Branches); + const { data: estimate, isFetching: isEstimateFetching, @@ -48,14 +55,14 @@ function EstimateFormProvider({ estimateId, baseCurrency, ...props }) { data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses(query, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches(query, { enabled: isBranchFeatureCan }); // Handle fetch settings. useSettingsEstimates(); @@ -103,7 +110,7 @@ function EstimateFormProvider({ estimateId, baseCurrency, ...props }) { selectCustomer, setSelectCustomer, baseCurrency, - + createEstimateMutate, editEstimateMutate, }; diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js index d542dd138..46c850c05 100644 --- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js +++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js @@ -1,6 +1,8 @@ import React, { createContext, useState } from 'react'; import { isEmpty, pick, isEqual, isUndefined } from 'lodash'; import { useLocation } from 'react-router-dom'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { transformToEditForm, ITEMS_FILTER_ROLES_QUERY } from './utils'; import { @@ -24,6 +26,11 @@ function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) { const { state } = useLocation(); const estimateId = state?.action; + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + const isBranchFeatureCan = featureCan(Features.Branches); + const { data: invoice, isLoading: isInvoiceLoading } = useInvoice(invoiceId, { enabled: !!invoiceId, }); @@ -60,14 +67,14 @@ function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) { data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Handle fetching settings. const { isLoading: isSettingsLoading } = useSettingsInvoices(); diff --git a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js index 599d3b8aa..339acbc14 100644 --- a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js +++ b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js @@ -1,6 +1,7 @@ import React, { createContext, useState } from 'react'; -import { isEmpty, pick, isEqual, isUndefined } from 'lodash'; - +import {isEqual, isUndefined } from 'lodash'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { useReceipt, @@ -20,6 +21,11 @@ const ReceiptFormContext = createContext(); * Receipt form provider. */ function ReceiptFormProvider({ receiptId, baseCurrency, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + const isBranchFeatureCan = featureCan(Features.Branches); + // Fetch sale receipt details. const { data: receipt, isLoading: isReceiptLoading } = useReceipt(receiptId, { enabled: !!receiptId, @@ -38,14 +44,14 @@ function ReceiptFormProvider({ receiptId, baseCurrency, ...props }) { data: warehouses, isLoading: isWarehouesLoading, isSuccess: isWarehousesSuccess, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Fetches the branches list. const { data: branches, isLoading: isBranchesLoading, isSuccess: isBranchesSuccess, - } = useBranches(); + } = useBranches({}, { enabled: isBranchFeatureCan }); // Filter all sellable items only. const stringifiedFilterRoles = React.useMemo( diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js index 1570ad160..8bd24b3fb 100644 --- a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js +++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js @@ -7,6 +7,8 @@ import { useCreateWarehouseTransfer, useEditWarehouseTransfer, } from 'hooks/query'; +import { Features } from 'common'; +import { useFeatureCan } from 'hooks/state'; import { ITEMS_FILTER_ROLES_QUERY } from './utils.js'; const WarehouseFormContext = React.createContext(); @@ -15,6 +17,10 @@ const WarehouseFormContext = React.createContext(); * Warehouse transfer form provider. */ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) { + // Features guard. + const { featureCan } = useFeatureCan(); + const isWarehouseFeatureCan = featureCan(Features.Warehouses); + // Handle fetch Items data table or list const { data: { items }, @@ -36,7 +42,7 @@ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) { data: warehouses, isFetching: isWarehouesFetching, isLoading: isWarehouesLoading, - } = useWarehouses(); + } = useWarehouses({}, { enabled: isWarehouseFeatureCan }); // Create and edit warehouse mutations. const { mutateAsync: createWarehouseTransferMutate } =