diff --git a/src/common/itemPaymentTranactionsOption.js b/src/common/itemPaymentTranactionsOption.js
index 1df2bb456..0811c5183 100644
--- a/src/common/itemPaymentTranactionsOption.js
+++ b/src/common/itemPaymentTranactionsOption.js
@@ -1,8 +1,51 @@
import intl from 'react-intl-universal';
+import {
+ AbilitySubject,
+ SaleEstimateAction,
+ SaleReceiptAction,
+ SaleInvoiceAction,
+ BillAction,
+} from '../common/abilityOption';
+import { useAbilitiesFilter } from '../hooks';
-export default [
- { name: 'invoices', label: intl.get('invoices') },
- { name: 'estimates', label: intl.get('estimates') },
- { name: 'receipts', label: intl.get('receipts') },
- { name: 'bills', label: intl.get('bills') },
+export const getItemPaymentTransactions = () => [
+ {
+ name: 'invoices',
+ label: intl.get('invoices'),
+ permission: {
+ subject: AbilitySubject.Invoice,
+ ability: SaleInvoiceAction.View,
+ },
+ },
+ {
+ name: 'estimates',
+ label: intl.get('estimates'),
+ permission: {
+ subject: AbilitySubject.Estimate,
+ ability: SaleEstimateAction.View,
+ },
+ },
+ {
+ name: 'receipts',
+ label: intl.get('receipts'),
+ permission: {
+ subject: AbilitySubject.Receipt,
+ ability: SaleReceiptAction.View,
+ },
+ },
+ {
+ name: 'bills',
+ label: intl.get('bills'),
+ permission: {
+ subject: AbilitySubject.Bill,
+ ability: BillAction.View,
+ },
+ },
];
+
+export const useGetItemPaymentTransactionsMenu = () => {
+ const itemTransactionMenu = getItemPaymentTransactions();
+ const abilitiesFilter = useAbilitiesFilter();
+
+ return abilitiesFilter(itemTransactionMenu);
+};
diff --git a/src/containers/Drawers/BillDrawer/BillDrawerDetails.js b/src/containers/Drawers/BillDrawer/BillDrawerDetails.js
index 5042ed12a..62ddb5aa6 100644
--- a/src/containers/Drawers/BillDrawer/BillDrawerDetails.js
+++ b/src/containers/Drawers/BillDrawer/BillDrawerDetails.js
@@ -3,8 +3,11 @@ import { Tab } from '@blueprintjs/core';
import intl from 'react-intl-universal';
import styled from 'styled-components';
-import { DrawerMainTabs } from 'components';
-
+import { Can, DrawerMainTabs } from 'components';
+import {
+ PaymentMadeAction,
+ AbilitySubject,
+} from '../../../common/abilityOption';
import BillDetailTab from './BillDetailTab';
import LocatedLandedCostTable from './LocatedLandedCostTable';
import BillGLEntriesTable from './BillGLEntriesTable';
@@ -30,12 +33,13 @@ function BillDetailsTabs() {
id={'journal_entries'}
panel={}
/>
-
- }
- />
+ {/* */}
+ }
+ />
+ {/* */}
- }
- text={intl.get('invoice_transactions.action.edit_transaction')}
- onClick={safeCallback(onEdit, original)}
- />
- }
- />
+
+ }
+ text={intl.get('invoice_transactions.action.edit_transaction')}
+ onClick={safeCallback(onEdit, original)}
+ />
+
+
+ }
+ />
+
);
}
diff --git a/src/containers/Drawers/BillDrawer/components.js b/src/containers/Drawers/BillDrawer/components.js
index 184a120f0..daf163214 100644
--- a/src/containers/Drawers/BillDrawer/components.js
+++ b/src/containers/Drawers/BillDrawer/components.js
@@ -3,7 +3,9 @@ import intl from 'react-intl-universal';
import styled from 'styled-components';
import { Intent, MenuItem, Menu } from '@blueprintjs/core';
import { safeCallback } from 'utils';
-import { Icon } from 'components';
+import { Can, Icon } from 'components';
+import { BillAction, AbilitySubject } from '../../../common/abilityOption';
+
/**
* Actions menu.
*/
diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js
index a7d169efe..968644e2f 100644
--- a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js
+++ b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js
@@ -3,12 +3,16 @@ import { Tab } from '@blueprintjs/core';
import styled from 'styled-components';
import intl from 'react-intl-universal';
-import { DrawerMainTabs } from 'components';
+import { Can, DrawerMainTabs } from 'components';
import CreditNoteDetailActionsBar from './CreditNoteDetailActionsBar';
import CreditNoteDetailPanel from './CreditNoteDetailPanel';
import RefundCreditNoteTransactionsTable from './RefundCreditNoteTransactions/RefundCreditNoteTransactionsTable';
import ReconcileCreditNoteTransactionsTable from './ReconcileCreditNoteTransactions/ReconcileCreditNoteTransactionsTable';
import { CreditNoteGLEntriesTable } from './JournalEntriesTransactions/JournalEntriesTransactionsTable';
+import {
+ CreditNoteAction,
+ AbilitySubject,
+} from '../../../common/abilityOption';
/**
* Credit Note view detail.
@@ -40,6 +44,7 @@ function CreditNoteDetailsTabs() {
id={'journal_entries'}
panel={}
/>
+ {/* */}
}
/>
+ {/* */}
);
}
diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js
index 112a8f556..08cf85250 100644
--- a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js
+++ b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js
@@ -14,7 +14,17 @@ import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions';
import withDrawerActions from 'containers/Drawer/withDrawerActions';
-import { DrawerActionsBar, Icon, FormattedMessage as T, If } from 'components';
+import {
+ DrawerActionsBar,
+ Can,
+ Icon,
+ FormattedMessage as T,
+ If,
+} from 'components';
+import {
+ CreditNoteAction,
+ AbilitySubject,
+} from '../../../common/abilityOption';
import { compose } from 'utils';
import { CreditNoteMenuItem } from './utils';
@@ -58,37 +68,45 @@ function CreditNoteDetailActionsBar({
return (
- }
- text={}
- onClick={handleEditCreditNote}
- />
-
-
+
}
- text={}
- onClick={handleRefundCreditNote}
+ icon={}
+ text={}
+ onClick={handleEditCreditNote}
/>
-
- }
- text={}
- intent={Intent.DANGER}
- onClick={handleDeleteCreditNote}
- />
-
-
-
+
+
+ }
+ text={}
+ onClick={handleRefundCreditNote}
+ />
+
+
+
+
+ }
+ text={}
+ intent={Intent.DANGER}
+ onClick={handleDeleteCreditNote}
/>
-
+
+
+
+
+
+
+
);
diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/ReconcileCreditNoteTransactions/components.js b/src/containers/Drawers/CreditNoteDetailDrawer/ReconcileCreditNoteTransactions/components.js
index 30bce0ddb..3398cf8e3 100644
--- a/src/containers/Drawers/CreditNoteDetailDrawer/ReconcileCreditNoteTransactions/components.js
+++ b/src/containers/Drawers/CreditNoteDetailDrawer/ReconcileCreditNoteTransactions/components.js
@@ -1,8 +1,12 @@
import React from 'react';
import { Intent, MenuItem, Menu } from '@blueprintjs/core';
import intl from 'react-intl-universal';
-import { FormatDateCell, Icon } from 'components';
+import { Can, FormatDateCell, Icon } from 'components';
import { safeCallback } from 'utils';
+import {
+ CreditNoteAction,
+ AbilitySubject,
+} from '../../../../common/abilityOption';
/**
* Actions menu.
@@ -10,12 +14,14 @@ import { safeCallback } from 'utils';
export function ActionsMenu({ payload: { onDelete }, row: { original } }) {
return (
);
}
diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/RefundCreditNoteTransactions/components.js b/src/containers/Drawers/CreditNoteDetailDrawer/RefundCreditNoteTransactions/components.js
index fd6a95782..f815408b6 100644
--- a/src/containers/Drawers/CreditNoteDetailDrawer/RefundCreditNoteTransactions/components.js
+++ b/src/containers/Drawers/CreditNoteDetailDrawer/RefundCreditNoteTransactions/components.js
@@ -1,8 +1,12 @@
import React from 'react';
import { Intent, MenuItem, Menu } from '@blueprintjs/core';
import intl from 'react-intl-universal';
-import { FormatDateCell, Icon } from 'components';
+import { Can, FormatDateCell, Icon } from 'components';
import { safeCallback } from 'utils';
+import {
+ CreditNoteAction,
+ AbilitySubject,
+} from '../../../../common/abilityOption';
/**
* Actions menu.
@@ -10,12 +14,14 @@ import { safeCallback } from 'utils';
export function ActionsMenu({ payload: { onDelete }, row: { original } }) {
return (
);
}
@@ -39,7 +45,9 @@ export function useRefundCreditTransactionsTableColumns() {
},
{
id: 'from_account',
- Header: intl.get('refund_credit_transactions.column.withdrawal_account'),
+ Header: intl.get(
+ 'refund_credit_transactions.column.withdrawal_account',
+ ),
accessor: ({ from_account }) => from_account.name,
width: 100,
className: 'from_account',
diff --git a/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js
index 5d7758507..1e9176bbf 100644
--- a/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js
+++ b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js
@@ -1,9 +1,13 @@
import React from 'react';
import { Tab } from '@blueprintjs/core';
import styled from 'styled-components';
+import intl from 'react-intl-universal';
-import { DrawerMainTabs } from 'components';
-
+import { Can, DrawerMainTabs } from 'components';
+import {
+ PaymentReceiveAction,
+ AbilitySubject,
+} from '../../../common/abilityOption';
import InvoiceDetailActionsBar from './InvoiceDetailActionsBar';
import InvoiceGLEntriesTable from './InvoiceGLEntriesTable';
import InvoicePaymentTransactionsTable from './InvoicePaymentTransactions/InvoicePaymentTransactionsTable';
@@ -19,17 +23,23 @@ function InvoiceDetailsTabs() {
renderActiveTabPanelOnly={true}
defaultSelectedTabId="details"
>
- } />
}
+ />
+ }
/>
+ {/* */}
}
/>
+ {/* */}
);
}
diff --git a/src/containers/Drawers/InvoiceDetailDrawer/InvoicePaymentTransactions/components.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoicePaymentTransactions/components.js
index 3333a986b..3461c7a97 100644
--- a/src/containers/Drawers/InvoiceDetailDrawer/InvoicePaymentTransactions/components.js
+++ b/src/containers/Drawers/InvoiceDetailDrawer/InvoicePaymentTransactions/components.js
@@ -3,8 +3,12 @@ import intl from 'react-intl-universal';
import { Intent, Menu, MenuItem } from '@blueprintjs/core';
import clsx from 'classnames';
import { CLASSES } from '../../../../common/classes';
-import { FormatDateCell, Icon } from '../../../../components';
+import { FormatDateCell, Icon, Can } from '../../../../components';
import { safeCallback } from 'utils';
+import {
+ PaymentReceiveAction,
+ AbilitySubject,
+} from '../../../../common/abilityOption';
/**
* Table actions menu.
@@ -15,17 +19,21 @@ export function ActionsMenu({
}) {
return (
);
}
diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactions/components.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactions/components.js
index 78a24e58a..2ad0f7690 100644
--- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactions/components.js
+++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactions/components.js
@@ -4,8 +4,12 @@ import { Intent, Menu, MenuItem } from '@blueprintjs/core';
import clsx from 'classnames';
import { CLASSES } from '../../../../../common/classes';
-import { FormatDateCell, Icon } from '../../../../../components';
+import { Can, FormatDateCell, Icon } from '../../../../../components';
import { safeCallback } from 'utils';
+import {
+ BillAction,
+ AbilitySubject,
+} from '../../../../../common/abilityOption';
/**
* Table actions menu.
@@ -16,17 +20,21 @@ export function ActionsMenu({
}) {
return (
);
}
diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactions/components.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactions/components.js
index 1d9f8832e..bced5a35c 100644
--- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactions/components.js
+++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactions/components.js
@@ -4,8 +4,12 @@ import { Intent, Menu, MenuItem } from '@blueprintjs/core';
import clsx from 'classnames';
import { CLASSES } from '../../../../../common/classes';
-import { FormatDateCell, Icon } from '../../../../../components';
+import { Can, FormatDateCell, Icon } from '../../../../../components';
import { safeCallback } from 'utils';
+import {
+ SaleEstimateAction,
+ AbilitySubject,
+} from '../../../../../common/abilityOption';
/**
* Table actions menu.
@@ -16,17 +20,21 @@ export function ActionsMenu({
}) {
return (
);
}
diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactions/components.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactions/components.js
index c7bd451ac..f9e2584b5 100644
--- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactions/components.js
+++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactions/components.js
@@ -4,9 +4,12 @@ import { Intent, Menu, MenuItem } from '@blueprintjs/core';
import clsx from 'classnames';
import { CLASSES } from '../../../../../common/classes';
-import { FormatDateCell ,Icon} from '../../../../../components';
+import { Can, FormatDateCell, Icon } from '../../../../../components';
import { safeCallback } from 'utils';
-
+import {
+ SaleInvoiceAction,
+ AbilitySubject,
+} from '../../../../../common/abilityOption';
/**
* Table actions menu.
@@ -17,17 +20,21 @@ export function ActionsMenu({
}) {
return (
);
}
diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactions/components.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactions/components.js
index ef3569d58..d6e93bedb 100644
--- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactions/components.js
+++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactions/components.js
@@ -4,8 +4,12 @@ import { Intent, Menu, MenuItem } from '@blueprintjs/core';
import clsx from 'classnames';
import { CLASSES } from '../../../../../common/classes';
-import { FormatDateCell, Icon } from '../../../../../components';
+import { Can, FormatDateCell, Icon } from '../../../../../components';
import { safeCallback } from 'utils';
+import {
+ SaleReceiptAction,
+ AbilitySubject,
+} from '../../../../../common/abilityOption';
/**
* Table actions menu.
@@ -16,17 +20,21 @@ export function ActionsMenu({
}) {
return (
);
}
diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js
index a8efc015f..c07f85dfd 100644
--- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js
+++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js
@@ -10,16 +10,21 @@ import {
import styled from 'styled-components';
import { FormattedMessage as T } from 'components';
import { useItemDetailDrawerContext } from '../ItemDetailDrawerProvider';
-import transactions from '../../../../common/itemPaymentTranactionsOption';
+import { useGetItemPaymentTransactionsMenu } from '../../../../common/itemPaymentTranactionsOption';
export const ItemManuTransaction = ({ onChange }) => {
const { value, setValue } = useItemDetailDrawerContext();
+ const itemTransactionMenu = useGetItemPaymentTransactionsMenu();
+
+ if (itemTransactionMenu.length === 0) {
+ return null;
+ }
const handleClickItem = (item) => {
onChange && onChange(item);
};
- const content = transactions.map(({ name, label }) => (
+ const content = itemTransactionMenu.map(({ name, label }) => (