From 92ac0dbd253cafe0b85f801c8dcf26b6c05343d8 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Fri, 22 Sep 2023 15:25:56 +0200 Subject: [PATCH] fix(webapp): code cleanup --- packages/webapp/src/constants/sidebarMenu.tsx | 5 +++++ .../InvoiceForm/InvoiceItemsEntriesEditorField.tsx | 3 ++- .../containers/Sales/Invoices/InvoiceForm/constants.ts | 6 +++--- .../containers/Sales/Invoices/InvoiceForm/utils.tsx | 8 +++++--- .../containers/TaxRates/alerts/TaxRateDeleteAlert.tsx | 7 ++++--- .../webapp/src/containers/TaxRates/alerts/index.ts | 6 ++---- .../TaxRates/containers/TaxRatesLandingProvider.tsx | 2 +- .../dialogs/TaxRateFormDialog/TaxRateFormDialog.tsx | 10 +++++----- .../TaxRateFormDialog/TaxRateFormDialogContent.tsx | 2 +- packages/webapp/src/hooks/query/financialReports.tsx | 5 ++--- packages/webapp/src/hooks/query/types.tsx | 1 + packages/webapp/src/routes/dashboard.tsx | 1 + 12 files changed, 32 insertions(+), 24 deletions(-) diff --git a/packages/webapp/src/constants/sidebarMenu.tsx b/packages/webapp/src/constants/sidebarMenu.tsx index 108ed860b..9f67bd4c5 100644 --- a/packages/webapp/src/constants/sidebarMenu.tsx +++ b/packages/webapp/src/constants/sidebarMenu.tsx @@ -24,6 +24,7 @@ import { ExpenseAction, CashflowAction, PreferencesAbility, + TaxRateAction, } from '@/constants/abilityOption'; import { DialogsName } from './dialogs'; @@ -410,6 +411,10 @@ export const SidebarMenu = [ text: 'Tax Rates', href: '/tax-rates', type: ISidebarMenuItemType.Link, + permission: { + subject: AbilitySubject.TaxRate, + ability: TaxRateAction.View, + }, }, ], }, diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.tsx index 7b47fdb37..0a0270b58 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.tsx @@ -4,6 +4,7 @@ import { FastField } from 'formik'; import ItemsEntriesTable from '@/containers/Entries/ItemsEntriesTable'; import { useInvoiceFormContext } from './InvoiceFormProvider'; import { entriesFieldShouldUpdate } from './utils'; +import { TaxType } from '@/interfaces/TaxRates'; /** * Invoice items entries editor field. @@ -33,7 +34,7 @@ export default function InvoiceItemsEntriesEditorField() { errors={error} linesNumber={4} currencyCode={values.currency_code} - isInclusiveTax={values.inclusive_exclusive_tax === 'inclusive'} + isInclusiveTax={values.inclusive_exclusive_tax === TaxType.Inclusive} /> )} diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/constants.ts b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/constants.ts index 5b35f08a3..4087e318b 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/constants.ts +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/constants.ts @@ -1,6 +1,6 @@ - +import { TaxType } from '@/interfaces/TaxRates'; export const InclusiveButtonOptions = [ - { key: 'inclusive', label: 'Inclusive of Tax' }, - { key: 'exclusive', label: 'Exclusive of Tax' }, + { key: TaxType.Inclusive, label: 'Inclusive of Tax' }, + { key: TaxType.Exclusive, label: 'Exclusive of Tax' }, ]; diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx index 25e93676a..d227dba44 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx @@ -46,7 +46,7 @@ export const defaultInvoice = { due_date: moment().format('YYYY-MM-DD'), delivered: '', invoice_no: '', - inclusive_exclusive_tax: 'inclusive', + inclusive_exclusive_tax: TaxType.Inclusive, // Holds the invoice number that entered manually only. invoice_no_manually: '', reference_no: '', @@ -172,8 +172,10 @@ export function transformValueToRequest(values) { ...(values.invoice_no_manually && { invoice_no: values.invoice_no, }), - is_inclusive_tax: values.inclusive_exclusive_tax === 'inclusive', - entries: entries.map((entry) => ({ ...omit(entry, ['amount']) })), + is_inclusive_tax: values.inclusive_exclusive_tax === TaxType.Inclusive, + entries: entries.map((entry) => ({ + ...omit(entry, ['amount', 'tax_amount', 'tax_rate']), + })), delivered: false, }; } diff --git a/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx b/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx index d6574cea2..32e6af28b 100644 --- a/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx +++ b/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx @@ -7,7 +7,6 @@ import { useDeleteTaxRate } from '@/hooks/query/taxRates'; import withAlertStoreConnect from '@/containers/Alert/withAlertStoreConnect'; import withAlertActions from '@/containers/Alert/withAlertActions'; -import withItemsActions from '@/containers/Items/withItemsActions'; import withDrawerActions from '@/containers/Drawer/withDrawerActions'; import { compose } from '@/utils'; @@ -51,7 +50,10 @@ function TaxRateDeleteAlert({ data: { errors }, }, }) => { - // handleDeleteErrors(errors); + AppToaster.show({ + message: 'Something went wrong.', + intent: Intent.DANGER, + }); }, ) .finally(() => { @@ -86,6 +88,5 @@ function TaxRateDeleteAlert({ export default compose( withAlertStoreConnect(), withAlertActions, - withItemsActions, withDrawerActions, )(TaxRateDeleteAlert); diff --git a/packages/webapp/src/containers/TaxRates/alerts/index.ts b/packages/webapp/src/containers/TaxRates/alerts/index.ts index 31680d125..7c40cbfb0 100644 --- a/packages/webapp/src/containers/TaxRates/alerts/index.ts +++ b/packages/webapp/src/containers/TaxRates/alerts/index.ts @@ -4,8 +4,6 @@ import React from 'react'; const TaxRateDeleteAlert = React.lazy(() => import('./TaxRateDeleteAlert')); /** - * Project alerts. + * Tax rates alerts. */ -export default [ - { name: 'tax-rate-delete', component: TaxRateDeleteAlert }, -]; +export default [{ name: 'tax-rate-delete', component: TaxRateDeleteAlert }]; diff --git a/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingProvider.tsx b/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingProvider.tsx index e49b1b3f3..c85170c07 100644 --- a/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingProvider.tsx +++ b/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingProvider.tsx @@ -29,7 +29,7 @@ function TaxRatesLandingProvider({ tableState, ...props }) { }; return ( - + ); diff --git a/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog.tsx b/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog.tsx index 328920567..263450edb 100644 --- a/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog.tsx +++ b/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog.tsx @@ -9,12 +9,8 @@ const TaxRateFormDialogContent = lazy( () => import('./TaxRateFormDialogContent'), ); -const TaxRateDialog = styled(Dialog)` - max-width: 450px; -`; - /** - * Account form dialog. + * Tax rate form dialog. */ function TaxRateFormDialog({ dialogName, @@ -39,4 +35,8 @@ function TaxRateFormDialog({ ); } +const TaxRateDialog = styled(Dialog)` + max-width: 450px; +`; + export default compose(withDialogRedux())(TaxRateFormDialog); diff --git a/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialogContent.tsx b/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialogContent.tsx index ecda9994c..b0c10b88f 100644 --- a/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialogContent.tsx +++ b/packages/webapp/src/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialogContent.tsx @@ -9,7 +9,7 @@ interface TaxRateFormDialogContentProps { } /** - * Account dialog content. + * Tax rate form dialog content. */ export default function TaxRateFormDialogContent({ dialogName, diff --git a/packages/webapp/src/hooks/query/financialReports.tsx b/packages/webapp/src/hooks/query/financialReports.tsx index 68afef7c0..e0919584d 100644 --- a/packages/webapp/src/hooks/query/financialReports.tsx +++ b/packages/webapp/src/hooks/query/financialReports.tsx @@ -445,13 +445,12 @@ export function useTransactionsByReference(query, props) { ); } - /** - * + * Retrieves the sales tax liability summary report. */ export function useSalesTaxLiabilitySummary(query, props) { return useRequestQuery( - [t.FINANCIAL_REPORT, t.BALANCE_SHEET, query], + [t.FINANCIAL_REPORT, t.SALES_TAX_LIABILITY_SUMMARY, query], { method: 'get', url: '/financial_statements/sales-tax-liability-summary', diff --git a/packages/webapp/src/hooks/query/types.tsx b/packages/webapp/src/hooks/query/types.tsx index 67ddd0761..c0173cab7 100644 --- a/packages/webapp/src/hooks/query/types.tsx +++ b/packages/webapp/src/hooks/query/types.tsx @@ -32,6 +32,7 @@ const FINANCIAL_REPORTS = { REALIZED_GAIN_OR_LOSS: 'REALIZED_GAIN_OR_LOSS', UNREALIZED_GAIN_OR_LOSS: 'UNREALIZED_GAIN_OR_LOSS', PROJECT_PROFITABILITY_SUMMARY: 'PROJECT_PROFITABILITY_SUMMARY', + SALES_TAX_LIABILITY_SUMMARY: 'SALES_TAX_LIABILITY_SUMMARY' }; const BILLS = { diff --git a/packages/webapp/src/routes/dashboard.tsx b/packages/webapp/src/routes/dashboard.tsx index f08a2628a..5193c63f8 100644 --- a/packages/webapp/src/routes/dashboard.tsx +++ b/packages/webapp/src/routes/dashboard.tsx @@ -1076,6 +1076,7 @@ export const getDashboardRoutes = () => [ import('@/containers/TaxRates/pages/TaxRatesLanding'), ), pageTitle: 'Tax Rates', + subscriptionActive: [SUBSCRIPTION_TYPE.MAIN], }, // Homepage {