feat: add bill & payment made ability.

This commit is contained in:
elforjani13
2021-11-23 20:29:35 +02:00
parent 3a8e1f5238
commit 1cba4b5f18
6 changed files with 143 additions and 89 deletions

View File

@@ -16,7 +16,12 @@ import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions'; import withAlertsActions from 'containers/Alert/withAlertActions';
import withDrawerActions from 'containers/Drawer/withDrawerActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions';
import { If, Icon, FormattedMessage as T } from 'components'; import { Can, If, Icon, FormattedMessage as T } from 'components';
import {
Bill_Abilities,
Payment_Made_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { safeCallback, compose } from 'utils'; import { safeCallback, compose } from 'utils';
@@ -53,6 +58,7 @@ function BillDetailActionsBar({
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<Can I={Bill_Abilities.Edit} a={AbilitySubject.Bill}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
@@ -60,6 +66,11 @@ function BillDetailActionsBar({
onClick={safeCallback(onEditBill)} onClick={safeCallback(onEditBill)}
/> />
<NavbarDivider /> <NavbarDivider />
</Can>
<Can
I={Payment_Made_Abilities.Create}
a={AbilitySubject.PaymentMade}
>
<If condition={bill.is_open && !bill.is_fully_paid}> <If condition={bill.is_open && !bill.is_fully_paid}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
@@ -69,6 +80,8 @@ function BillDetailActionsBar({
/> />
</If> </If>
<NavbarDivider /> <NavbarDivider />
</Can>
<Can I={Bill_Abilities.Delete} a={AbilitySubject.Bill}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon={'trash-16'} iconSize={16} />} icon={<Icon icon={'trash-16'} iconSize={16} />}
@@ -76,6 +89,7 @@ function BillDetailActionsBar({
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDeleteBill)} onClick={safeCallback(onDeleteBill)}
/> />
</Can>
</NavbarGroup> </NavbarGroup>
</DashboardActionsBar> </DashboardActionsBar>
); );

View File

@@ -16,8 +16,11 @@ import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions'; import withAlertsActions from 'containers/Alert/withAlertActions';
import withDrawerActions from 'containers/Drawer/withDrawerActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions';
import { Icon, FormattedMessage as T } from 'components'; import { Can, Icon, FormattedMessage as T } from 'components';
import {
Payment_Made_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { compose } from 'utils'; import { compose } from 'utils';
/** /**
@@ -48,6 +51,7 @@ function PaymentMadeDetailActionsBar({
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<Can I={Payment_Made_Abilities.Edit} a={AbilitySubject.PaymentMade}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
@@ -55,6 +59,8 @@ function PaymentMadeDetailActionsBar({
onClick={handleEditPaymentMade} onClick={handleEditPaymentMade}
/> />
<NavbarDivider /> <NavbarDivider />
</Can>
<Can I={Payment_Made_Abilities.Delete} a={AbilitySubject.PaymentMade}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon={'trash-16'} iconSize={16} />} icon={<Icon icon={'trash-16'} iconSize={16} />}
@@ -62,6 +68,7 @@ function PaymentMadeDetailActionsBar({
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={handleDeletePaymentMade} onClick={handleDeletePaymentMade}
/> />
</Can>
</NavbarGroup> </NavbarGroup>
</DashboardActionsBar> </DashboardActionsBar>
); );

View File

@@ -14,12 +14,14 @@ import { useHistory } from 'react-router-dom';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import { import {
If, If,
Can,
FormattedMessage as T, FormattedMessage as T,
DashboardActionViewsList, DashboardActionViewsList,
DashboardFilterButton, DashboardFilterButton,
AdvancedFilterPopover, AdvancedFilterPopover,
DashboardRowsHeightButton, DashboardRowsHeightButton,
} from 'components'; } from 'components';
import { Bill_Abilities, AbilitySubject } from '../../../../common/abilityOption';
import withBillsActions from './withBillsActions'; import withBillsActions from './withBillsActions';
import withBills from './withBills'; import withBills from './withBills';
@@ -86,12 +88,14 @@ function BillActionsBar({
onChange={handleTabChange} onChange={handleTabChange}
/> />
<NavbarDivider /> <NavbarDivider />
<Can I={Bill_Abilities.Create} a={AbilitySubject.Bill}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon={'plus'} />} icon={<Icon icon={'plus'} />}
text={<T id={'new_bill'} />} text={<T id={'new_bill'} />}
onClick={handleClickNewBill} onClick={handleClickNewBill}
/> />
</Can>
<AdvancedFilterPopover <AdvancedFilterPopover
advancedFilterProps={{ advancedFilterProps={{
conditions: billsConditionsRoles, conditions: billsConditionsRoles,

View File

@@ -16,8 +16,14 @@ import {
If, If,
Choose, Choose,
Money, Money,
Can,
} from 'components'; } from 'components';
import { formattedAmount, safeCallback, isBlank, calculateStatus } from 'utils'; import { formattedAmount, safeCallback, isBlank, calculateStatus } from 'utils';
import {
Bill_Abilities,
Payment_Made_Abilities,
AbilitySubject,
} from '../../../../common/abilityOption';
/** /**
* Actions menu. * Actions menu.
@@ -40,6 +46,7 @@ export function ActionsMenu({
text={intl.get('view_details')} text={intl.get('view_details')}
onClick={safeCallback(onViewDetails, original)} onClick={safeCallback(onViewDetails, original)}
/> />
<Can I={Bill_Abilities.Edit} a={AbilitySubject.Bill}>
<MenuDivider /> <MenuDivider />
<MenuItem <MenuItem
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
@@ -54,6 +61,8 @@ export function ActionsMenu({
onClick={safeCallback(onOpen, original)} onClick={safeCallback(onOpen, original)}
/> />
</If> </If>
</Can>
<Can I={Payment_Made_Abilities.Create} a={AbilitySubject.PaymentMade}>
<If condition={original.is_open && !original.is_fully_paid}> <If condition={original.is_open && !original.is_fully_paid}>
<MenuItem <MenuItem
icon={<Icon icon="quick-payment-16" iconSize={16} />} icon={<Icon icon="quick-payment-16" iconSize={16} />}
@@ -61,17 +70,20 @@ export function ActionsMenu({
onClick={safeCallback(onQuick, original)} onClick={safeCallback(onQuick, original)}
/> />
</If> </If>
</Can>
<MenuItem <MenuItem
icon={<Icon icon="receipt-24" iconSize={16} />} icon={<Icon icon="receipt-24" iconSize={16} />}
text={intl.get('allocate_landed_coast')} text={intl.get('allocate_landed_coast')}
onClick={safeCallback(onAllocateLandedCost, original)} onClick={safeCallback(onAllocateLandedCost, original)}
/> />
<Can I={Bill_Abilities.Delete} a={AbilitySubject.Bill}>
<MenuItem <MenuItem
text={intl.get('delete_bill')} text={intl.get('delete_bill')}
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)} onClick={safeCallback(onDelete, original)}
icon={<Icon icon="trash-16" iconSize={16} />} icon={<Icon icon="trash-16" iconSize={16} />}
/> />
</Can>
</Menu> </Menu>
); );
} }

View File

@@ -14,6 +14,7 @@ import { useHistory } from 'react-router-dom';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import { import {
If, If,
Can,
FormattedMessage as T, FormattedMessage as T,
DashboardActionViewsList, DashboardActionViewsList,
DashboardFilterButton, DashboardFilterButton,
@@ -29,6 +30,10 @@ import withSettings from 'containers/Settings/withSettings';
import { usePaymentMadesListContext } from './PaymentMadesListProvider'; import { usePaymentMadesListContext } from './PaymentMadesListProvider';
import { useRefreshPaymentMades } from 'hooks/query/paymentMades'; import { useRefreshPaymentMades } from 'hooks/query/paymentMades';
import {
Payment_Made_Abilities,
AbilitySubject,
} from '../../../../common/abilityOption';
import { compose } from 'utils'; import { compose } from 'utils';
@@ -85,12 +90,14 @@ function PaymentMadeActionsBar({
onChange={handleTabChange} onChange={handleTabChange}
/> />
<NavbarDivider /> <NavbarDivider />
<Can I={Payment_Made_Abilities.Create} a={AbilitySubject.PaymentMade}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon={'plus'} />} icon={<Icon icon={'plus'} />}
text={<T id={'new_payment_made'} />} text={<T id={'new_payment_made'} />}
onClick={handleClickNewPaymentMade} onClick={handleClickNewPaymentMade}
/> />
</Can>
<AdvancedFilterPopover <AdvancedFilterPopover
advancedFilterProps={{ advancedFilterProps={{
conditions: paymentMadesFilterConditions, conditions: paymentMadesFilterConditions,

View File

@@ -10,7 +10,12 @@ import {
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { Icon, Money, FormatDateCell } from 'components'; import { Icon, Money, FormatDateCell, Can } from 'components';
import {
Payment_Made_Abilities,
AbilitySubject,
} from '../../../../common/abilityOption';
import { safeCallback } from 'utils'; import { safeCallback } from 'utils';
export function AmountAccessor(row) { export function AmountAccessor(row) {
@@ -31,18 +36,23 @@ export function ActionsMenu({
text={intl.get('view_details')} text={intl.get('view_details')}
onClick={safeCallback(onViewDetails, original)} onClick={safeCallback(onViewDetails, original)}
/> />
<Can I={Payment_Made_Abilities.Edit} a={AbilitySubject.PaymentMade}>
<MenuDivider /> <MenuDivider />
<MenuItem <MenuItem
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
text={intl.get('edit_payment_made')} text={intl.get('edit_payment_made')}
onClick={safeCallback(onEdit, original)} onClick={safeCallback(onEdit, original)}
/> />
</Can>
<Can I={Payment_Made_Abilities.Delete} a={AbilitySubject.PaymentMade}>
<MenuItem <MenuItem
text={intl.get('delete_payment_made')} text={intl.get('delete_payment_made')}
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)} onClick={safeCallback(onDelete, original)}
icon={<Icon icon="trash-16" iconSize={16} />} icon={<Icon icon="trash-16" iconSize={16} />}
/> />
</Can>
</Menu> </Menu>
); );
} }