feat: add cashflow & vendor ability.

This commit is contained in:
elforjani13
2021-11-25 13:02:09 +02:00
parent 9ceee6d02e
commit 2630e0235d
5 changed files with 127 additions and 90 deletions

View File

@@ -4,9 +4,13 @@ import intl from 'react-intl-universal';
import { Intent, Menu, MenuItem, MenuDivider } from '@blueprintjs/core';
import { MaterialProgressBar } from 'components';
import { FormatDateCell, If, Icon } from 'components';
import { Can, FormatDateCell, If, Icon } from 'components';
import { useAccountTransactionsContext } from './AccountTransactionsProvider';
import { TRANSACRIONS_TYPE } from 'common/cashflowOptions';
import {
AbilitySubject,
Cashflow_Abilities,
} from '../../../common/abilityOption';
import { safeCallback } from 'utils';
export function ActionsMenu({
@@ -20,15 +24,17 @@ export function ActionsMenu({
text={intl.get('view_details')}
onClick={safeCallback(onViewDetails, original)}
/>
<If condition={TRANSACRIONS_TYPE.includes(original.reference_type)}>
<MenuDivider />
<MenuItem
text={intl.get('delete_transaction')}
intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)}
icon={<Icon icon="trash-16" iconSize={16} />}
/>
</If>
<Can I={Cashflow_Abilities.Delete} a={AbilitySubject.Cashflow}>
<If condition={TRANSACRIONS_TYPE.includes(original.reference_type)}>
<MenuDivider />
<MenuItem
text={intl.get('delete_transaction')}
intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)}
icon={<Icon icon="trash-16" iconSize={16} />}
/>
</If>
</Can>
</Menu>
);
}
@@ -83,7 +89,7 @@ export function useAccountTransactionsColumns() {
className: 'deposit',
textOverview: true,
align: 'right',
clickable: true
clickable: true,
},
{
id: 'withdrawal',
@@ -93,7 +99,7 @@ export function useAccountTransactionsColumns() {
width: 150,
textOverview: true,
align: 'right',
clickable: true
clickable: true,
},
{
id: 'running_balance',
@@ -103,7 +109,7 @@ export function useAccountTransactionsColumns() {
width: 150,
textOverview: true,
align: 'right',
clickable: true
clickable: true,
},
{
id: 'balance',

View File

@@ -7,8 +7,12 @@ import {
Alignment,
Switch,
} from '@blueprintjs/core';
import { Icon, FormattedMessage as T } from 'components';
import { Can, Icon, FormattedMessage as T } from 'components';
import { useRefreshCashflowAccounts } from 'hooks/query';
import {
Cashflow_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
@@ -56,19 +60,22 @@ function CashFlowAccountsActionsBar({
return (
<DashboardActionsBar>
<NavbarGroup>
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus-24'} iconSize={20} />}
text={<T id={'cash_flow.label.add_cash_account'} />}
onClick={handleAddBankAccount}
/>
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus-24'} iconSize={20} />}
text={<T id={'cash_flow.label.add_bank_account'} />}
onClick={handleAddCashAccount}
/>
<NavbarDivider />
<Can I={Cashflow_Abilities.Create} a={AbilitySubject.Cashflow}>
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus-24'} iconSize={20} />}
text={<T id={'cash_flow.label.add_cash_account'} />}
onClick={handleAddBankAccount}
/>
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus-24'} iconSize={20} />}
text={<T id={'cash_flow.label.add_bank_account'} />}
onClick={handleAddCashAccount}
/>
<NavbarDivider />
</Can>
<Button
className={Classes.MINIMAL}
icon={<Icon icon="print-16" iconSize={16} />}
@@ -85,13 +92,15 @@ function CashFlowAccountsActionsBar({
text={<T id={'import'} />}
/>
<NavbarDivider />
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={false}
onChange={handleInactiveSwitchChange}
/>
<Can I={Cashflow_Abilities.Edit} a={AbilitySubject.Cashflow}>
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={false}
onChange={handleInactiveSwitchChange}
/>
</Can>
</NavbarGroup>
<NavbarGroup align={Alignment.RIGHT}>
<Button
className={Classes.MINIMAL}

View File

@@ -13,7 +13,13 @@ import {
If,
Icon,
T,
Can,
} from '../../../components';
import {
Account_Abilities,
Cashflow_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { useCashFlowAccountsContext } from './CashFlowAccountsProvider';
@@ -222,48 +228,56 @@ function CashflowAccountContextMenu({
text={intl.get('view_details')}
onClick={safeCallback(onViewClick)}
/>
<MenuDivider />
<MenuItem
text={<T id={'cash_flow_money_in'} />}
icon={<Icon icon={'arrow-downward'} iconSize={16} />}
>
<CashflowAccountMoneyInContextMenu onClick={onMoneyInClick} />
</MenuItem>
<MenuItem
text={<T id={'cash_flow_money_out'} />}
icon={<Icon icon={'arrow-upward'} iconSize={16} />}
>
<CashflowAccountMoneyOutContextMenu onClick={onMoneyOutClick} />
</MenuItem>
<MenuDivider />
<MenuItem
icon={<Icon icon="pen-18" />}
text={intl.get('edit_account')}
onClick={safeCallback(onEditClick)}
/>
<MenuDivider />
<If condition={account.active}>
<Can I={Cashflow_Abilities.Create} a={AbilitySubject.Cashflow}>
<MenuDivider />
<MenuItem
text={intl.get('inactivate_account')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivateClick)}
/>
</If>
<If condition={!account.active}>
text={<T id={'cash_flow_money_in'} />}
icon={<Icon icon={'arrow-downward'} iconSize={16} />}
>
<CashflowAccountMoneyInContextMenu onClick={onMoneyInClick} />
</MenuItem>
<MenuItem
text={intl.get('activate_account')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivateClick)}
text={<T id={'cash_flow_money_out'} />}
icon={<Icon icon={'arrow-upward'} iconSize={16} />}
>
<CashflowAccountMoneyOutContextMenu onClick={onMoneyOutClick} />
</MenuItem>
</Can>
<Can I={Cashflow_Abilities.Edit} a={AbilitySubject.Cashflow}>
<MenuDivider />
<MenuItem
icon={<Icon icon="pen-18" />}
text={intl.get('edit_account')}
onClick={safeCallback(onEditClick)}
/>
</If>
<MenuItem
text={intl.get('delete_account')}
icon={<Icon icon="trash-16" iconSize={16} />}
intent={Intent.DANGER}
onClick={safeCallback(onDeleteClick)}
/>
</Can>
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<MenuDivider />
<If condition={account.active}>
<MenuItem
text={intl.get('inactivate_account')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivateClick)}
/>
</If>
<If condition={!account.active}>
<MenuItem
text={intl.get('activate_account')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivateClick)}
/>
</If>
</Can>
<Can I={Cashflow_Abilities.Delete} a={AbilitySubject.Cashflow}>
<MenuItem
text={intl.get('delete_account')}
icon={<Icon icon="trash-16" iconSize={16} />}
intent={Intent.DANGER}
onClick={safeCallback(onDeleteClick)}
/>
</Can>
</Menu>
);
}

View File

@@ -1,12 +1,15 @@
import React from 'react';
import Icon from 'components/Icon';
import { Button, Classes, NavbarGroup, Intent } from '@blueprintjs/core';
import { FormattedMessage as T } from 'components';
import { Can, FormattedMessage as T } from 'components';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import { useCashflowTransactionDrawerContext } from './CashflowTransactionDrawerProvider';
import withAlertsActions from 'containers/Alert/withAlertActions';
import {
AbilitySubject,
Cashflow_Abilities,
} from '../../../common/abilityOption';
import { compose } from 'utils';
/**
@@ -24,17 +27,19 @@ function CashflowTransactionDrawerActionBar({
};
return (
<DashboardActionsBar>
<NavbarGroup>
<Button
className={Classes.MINIMAL}
icon={<Icon icon="trash-16" iconSize={16} />}
text={<T id={'delete'} />}
intent={Intent.DANGER}
onClick={handleDeleteCashflowTransaction}
/>
</NavbarGroup>
</DashboardActionsBar>
<Can I={Cashflow_Abilities.Delete} a={AbilitySubject.Cashflow}>
<DashboardActionsBar>
<NavbarGroup>
<Button
className={Classes.MINIMAL}
icon={<Icon icon="trash-16" iconSize={16} />}
text={<T id={'delete'} />}
intent={Intent.DANGER}
onClick={handleDeleteCashflowTransaction}
/>
</NavbarGroup>
</DashboardActionsBar>
</Can>
);
}
export default compose(withAlertsActions)(CashflowTransactionDrawerActionBar);

View File

@@ -142,12 +142,15 @@ function VendorActionsBar({
onChange={handleTableRowSizeChange}
/>
<NavbarDivider />
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={vendorsInactiveMode}
onChange={handleInactiveSwitchChange}
/>
<Can I={Vendor_Abilities.Edit} a={AbilitySubject.Vendor}>
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={vendorsInactiveMode}
onChange={handleInactiveSwitchChange}
/>
</Can>
</NavbarGroup>
<NavbarGroup align={Alignment.RIGHT}>
<Button
className={Classes.MINIMAL}