diff --git a/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx b/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx
index 6b66e250d..d6574cea2 100644
--- a/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx
+++ b/packages/webapp/src/containers/TaxRates/alerts/TaxRateDeleteAlert.tsx
@@ -1,12 +1,7 @@
// @ts-nocheck
import React from 'react';
-import intl from 'react-intl-universal';
import { Intent, Alert } from '@blueprintjs/core';
-import {
- AppToaster,
- FormattedMessage as T,
- FormattedHTMLMessage,
-} from '@/components';
+import { AppToaster, FormattedMessage as T } from '@/components';
import { useDeleteTaxRate } from '@/hooks/query/taxRates';
@@ -40,7 +35,6 @@ function TaxRateDeleteAlert({
const handleCancelItemDelete = () => {
closeAlert(name);
};
-
// Handle confirm delete item.
const handleConfirmDeleteItem = () => {
deleteTaxRate(taxRateId)
diff --git a/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingTable.tsx b/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingTable.tsx
index c20ad9bc7..6af00de39 100644
--- a/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingTable.tsx
+++ b/packages/webapp/src/containers/TaxRates/containers/TaxRatesLandingTable.tsx
@@ -1,11 +1,12 @@
// @ts-nocheck
-import React, { useCallback } from 'react';
-import { useHistory } from 'react-router-dom';
+import React from 'react';
+import { Intent } from '@blueprintjs/core';
import {
DataTable,
DashboardContentTable,
TableSkeletonHeader,
TableSkeletonRows,
+ AppToaster,
} from '@/components';
import withAlertsActions from '@/containers/Alert/withAlertActions';
@@ -14,10 +15,6 @@ import withDialogActions from '@/containers/Dialog/withDialogActions';
import withDashboardActions from '@/containers/Dashboard/withDashboardActions';
import withSettings from '@/containers/Settings/withSettings';
-// import { useMemorizedColumnsWidths } from '@/hooks';
-// import { ActionsMenu } from './components';
-// import { useInvoicesListContext } from './InvoicesListProvider';
-
import { useTaxRatesTableColumns } from './_utils';
import { useTaxRatesLandingContext } from './TaxRatesLandingProvider';
import { TaxRatesLandingEmptyState } from './TaxRatesLandingEmptyState';
@@ -26,6 +23,10 @@ import { TaxRatesTableActionsMenu } from './_components';
import { compose } from '@/utils';
import { DRAWERS } from '@/constants/drawers';
import { DialogsName } from '@/constants/dialogs';
+import {
+ useActivateTaxRate,
+ useInactivateTaxRate,
+} from '@/hooks/query/taxRates';
/**
* Invoices datatable.
@@ -47,6 +48,9 @@ function TaxRatesDataTable({
// Invoices table columns.
const columns = useTaxRatesTableColumns();
+ const { mutateAsync: activateTaxRateMutate } = useActivateTaxRate();
+ const { mutateAsync: inactivateTaxRateMutate } = useInactivateTaxRate();
+
// Handle delete tax rate.
const handleDeleteTaxRate = ({ id }) => {
openAlert('tax-rate-delete', { taxRateId: id });
@@ -63,6 +67,38 @@ function TaxRatesDataTable({
const handleCellClick = (cell, event) => {
openDrawer(DRAWERS.TAX_RATE_DETAILS, { taxRateId: cell.row.original.id });
};
+ // Handles activating the given tax rate.
+ const handleActivateTaxRate = (taxRate) => {
+ activateTaxRateMutate(taxRate.id)
+ .then(() => {
+ AppToaster.show({
+ message: 'The tax rate has been activated successfully.',
+ intent: Intent.SUCCESS,
+ });
+ })
+ .catch(() => {
+ AppToaster.show({
+ message: 'Something went wrong.',
+ intent: Intent.DANGER,
+ });
+ });
+ };
+ // Handles inactivating the given tax rate.
+ const handleInactivateTaxRate = (taxRate) => {
+ inactivateTaxRateMutate(taxRate.id)
+ .then(() => {
+ AppToaster.show({
+ message: 'The tax rate has been inactivated successfully.',
+ intent: Intent.SUCCESS,
+ });
+ })
+ .catch(() => {
+ AppToaster.show({
+ message: 'Something went wrong.',
+ intent: Intent.DANGER,
+ });
+ });
+ };
// Display invoice empty status instead of the table.
if (isEmptyStatus) {
return ;
@@ -93,6 +129,8 @@ function TaxRatesDataTable({
onViewDetails: handleViewDetails,
onDelete: handleDeleteTaxRate,
onEdit: handleEditTaxRate,
+ onActivate: handleActivateTaxRate,
+ onInactivate: handleInactivateTaxRate,
}}
/>
diff --git a/packages/webapp/src/containers/TaxRates/containers/_components.tsx b/packages/webapp/src/containers/TaxRates/containers/_components.tsx
index 5c3e50a34..0442c5047 100644
--- a/packages/webapp/src/containers/TaxRates/containers/_components.tsx
+++ b/packages/webapp/src/containers/TaxRates/containers/_components.tsx
@@ -10,7 +10,7 @@ import { Intent, Menu, MenuDivider, MenuItem } from '@blueprintjs/core';
* @returns {JSX.Element}
*/
export function TaxRatesTableActionsMenu({
- payload: { onEdit, onDelete, onViewDetails },
+ payload: { onEdit, onDelete, onViewDetails, onActivate, onInactivate },
row: { original },
}) {
return (
@@ -28,6 +28,21 @@ export function TaxRatesTableActionsMenu({
onClick={safeCallback(onEdit, original)}
/>
+
+ {!original.active && (
+ }
+ text={'Activate Tax Rate'}
+ onClick={safeCallback(onActivate, original)}
+ />
+ )}
+ {original.active && (
+ }
+ text={'Inactivate Tax Rate'}
+ onClick={safeCallback(onInactivate, original)}
+ />
+ )}