mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 06:40:31 +00:00
feat: add receipt ability.
This commit is contained in:
@@ -14,8 +14,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 { Icon, FormattedMessage as T, MoreMenuItems } from 'components';
|
import { Can, Icon, FormattedMessage as T, MoreMenuItems } from 'components';
|
||||||
import { useReceiptDetailDrawerContext } from './ReceiptDetailDrawerProvider';
|
import { useReceiptDetailDrawerContext } from './ReceiptDetailDrawerProvider';
|
||||||
|
import {
|
||||||
|
Receipt_Abilities,
|
||||||
|
AbilitySubject,
|
||||||
|
} from '../../../common/abilityOption';
|
||||||
|
|
||||||
import { safeCallback, compose } from 'utils';
|
import { safeCallback, compose } from 'utils';
|
||||||
|
|
||||||
@@ -54,27 +58,33 @@ function ReceiptDetailActionBar({
|
|||||||
return (
|
return (
|
||||||
<DashboardActionsBar>
|
<DashboardActionsBar>
|
||||||
<NavbarGroup>
|
<NavbarGroup>
|
||||||
<Button
|
<Can I={Receipt_Abilities.Edit} a={AbilitySubject.Receipt}>
|
||||||
className={Classes.MINIMAL}
|
<Button
|
||||||
icon={<Icon icon="pen-18" />}
|
className={Classes.MINIMAL}
|
||||||
text={<T id={'edit_receipt'} />}
|
icon={<Icon icon="pen-18" />}
|
||||||
onClick={safeCallback(onEditReceipt)}
|
text={<T id={'edit_receipt'} />}
|
||||||
/>
|
onClick={safeCallback(onEditReceipt)}
|
||||||
<NavbarDivider />
|
/>
|
||||||
<Button
|
<NavbarDivider />
|
||||||
className={Classes.MINIMAL}
|
</Can>
|
||||||
icon={<Icon icon="print-16" />}
|
<Can I={Receipt_Abilities.View} a={AbilitySubject.Receipt}>
|
||||||
text={<T id={'print'} />}
|
<Button
|
||||||
onClick={safeCallback(onPrintReceipt)}
|
className={Classes.MINIMAL}
|
||||||
/>
|
icon={<Icon icon="print-16" />}
|
||||||
<Button
|
text={<T id={'print'} />}
|
||||||
className={Classes.MINIMAL}
|
onClick={safeCallback(onPrintReceipt)}
|
||||||
icon={<Icon icon={'trash-16'} iconSize={16} />}
|
/>
|
||||||
text={<T id={'delete'} />}
|
</Can>
|
||||||
intent={Intent.DANGER}
|
<Can I={Receipt_Abilities.Delete} a={AbilitySubject.Receipt}>
|
||||||
onClick={safeCallback(onDeleteReceipt)}
|
<Button
|
||||||
/>
|
className={Classes.MINIMAL}
|
||||||
<NavbarDivider />
|
icon={<Icon icon={'trash-16'} iconSize={16} />}
|
||||||
|
text={<T id={'delete'} />}
|
||||||
|
intent={Intent.DANGER}
|
||||||
|
onClick={safeCallback(onDeleteReceipt)}
|
||||||
|
/>
|
||||||
|
<NavbarDivider />
|
||||||
|
</Can>
|
||||||
<MoreMenuItems
|
<MoreMenuItems
|
||||||
payload={{
|
payload={{
|
||||||
onNotifyViaSMS: handleNotifyViaSMS,
|
onNotifyViaSMS: handleNotifyViaSMS,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import {
|
|||||||
DashboardRowsHeightButton,
|
DashboardRowsHeightButton,
|
||||||
} from 'components';
|
} from 'components';
|
||||||
|
|
||||||
import { If, DashboardActionViewsList } from 'components';
|
import { Can, If, DashboardActionViewsList } from 'components';
|
||||||
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
|
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
|
||||||
|
|
||||||
import withReceiptsActions from './withReceiptsActions';
|
import withReceiptsActions from './withReceiptsActions';
|
||||||
@@ -28,6 +28,11 @@ import withSettings from 'containers/Settings/withSettings';
|
|||||||
|
|
||||||
import { useReceiptsListContext } from './ReceiptsListProvider';
|
import { useReceiptsListContext } from './ReceiptsListProvider';
|
||||||
import { useRefreshReceipts } from 'hooks/query/receipts';
|
import { useRefreshReceipts } from 'hooks/query/receipts';
|
||||||
|
import {
|
||||||
|
Receipt_Abilities,
|
||||||
|
AbilitySubject,
|
||||||
|
} from '../../../../common/abilityOption';
|
||||||
|
|
||||||
import { compose } from 'utils';
|
import { compose } from 'utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,12 +92,14 @@ function ReceiptActionsBar({
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<NavbarDivider />
|
<NavbarDivider />
|
||||||
<Button
|
<Can I={Receipt_Abilities.Create} a={AbilitySubject.Receipt}>
|
||||||
className={Classes.MINIMAL}
|
<Button
|
||||||
icon={<Icon icon={'plus'} />}
|
className={Classes.MINIMAL}
|
||||||
text={<T id={'new_receipt'} />}
|
icon={<Icon icon={'plus'} />}
|
||||||
onClick={onClickNewReceipt}
|
text={<T id={'new_receipt'} />}
|
||||||
/>
|
onClick={onClickNewReceipt}
|
||||||
|
/>
|
||||||
|
</Can>
|
||||||
<AdvancedFilterPopover
|
<AdvancedFilterPopover
|
||||||
advancedFilterProps={{
|
advancedFilterProps={{
|
||||||
conditions: receiptsFilterConditions,
|
conditions: receiptsFilterConditions,
|
||||||
|
|||||||
@@ -15,7 +15,11 @@ import clsx from 'classnames';
|
|||||||
|
|
||||||
import { CLASSES } from '../../../../common/classes';
|
import { CLASSES } from '../../../../common/classes';
|
||||||
import { safeCallback } from 'utils';
|
import { safeCallback } from 'utils';
|
||||||
import { FormatDateCell, Choose, Money, Icon, If } from 'components';
|
import { FormatDateCell, Choose, Money, Icon, If, Can } from 'components';
|
||||||
|
import {
|
||||||
|
Receipt_Abilities,
|
||||||
|
AbilitySubject,
|
||||||
|
} from '../../../../common/abilityOption';
|
||||||
|
|
||||||
export function ActionsMenu({
|
export function ActionsMenu({
|
||||||
payload: { onEdit, onDelete, onClose, onDrawer, onViewDetails, onPrint },
|
payload: { onEdit, onDelete, onClose, onDrawer, onViewDetails, onPrint },
|
||||||
@@ -28,30 +32,37 @@ export function ActionsMenu({
|
|||||||
text={intl.get('view_details')}
|
text={intl.get('view_details')}
|
||||||
onClick={safeCallback(onViewDetails, receipt)}
|
onClick={safeCallback(onViewDetails, receipt)}
|
||||||
/>
|
/>
|
||||||
<MenuDivider />
|
<Can I={Receipt_Abilities.Edit} a={AbilitySubject.Receipt}>
|
||||||
<MenuItem
|
<MenuDivider />
|
||||||
icon={<Icon icon="pen-18" />}
|
|
||||||
text={intl.get('edit_receipt')}
|
|
||||||
onClick={safeCallback(onEdit, receipt)}
|
|
||||||
/>
|
|
||||||
<If condition={!receipt.is_closed}>
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
icon={<Icon icon={'check'} iconSize={18} />}
|
icon={<Icon icon="pen-18" />}
|
||||||
text={intl.get('mark_as_closed')}
|
text={intl.get('edit_receipt')}
|
||||||
onClick={safeCallback(onClose, receipt)}
|
onClick={safeCallback(onEdit, receipt)}
|
||||||
/>
|
/>
|
||||||
</If>
|
|
||||||
<MenuItem
|
<If condition={!receipt.is_closed}>
|
||||||
icon={<Icon icon={'print-16'} iconSize={16} />}
|
<MenuItem
|
||||||
text={intl.get('print')}
|
icon={<Icon icon={'check'} iconSize={18} />}
|
||||||
onClick={safeCallback(onPrint, receipt)}
|
text={intl.get('mark_as_closed')}
|
||||||
/>
|
onClick={safeCallback(onClose, receipt)}
|
||||||
<MenuItem
|
/>
|
||||||
text={intl.get('delete_receipt')}
|
</If>
|
||||||
intent={Intent.DANGER}
|
</Can>
|
||||||
onClick={safeCallback(onDelete, receipt)}
|
<Can I={Receipt_Abilities.View} a={AbilitySubject.Receipt}>
|
||||||
icon={<Icon icon="trash-16" iconSize={16} />}
|
<MenuItem
|
||||||
/>
|
icon={<Icon icon={'print-16'} iconSize={16} />}
|
||||||
|
text={intl.get('print')}
|
||||||
|
onClick={safeCallback(onPrint, receipt)}
|
||||||
|
/>
|
||||||
|
</Can>
|
||||||
|
<Can I={Receipt_Abilities.Delete} a={AbilitySubject.Receipt}>
|
||||||
|
<MenuItem
|
||||||
|
text={intl.get('delete_receipt')}
|
||||||
|
intent={Intent.DANGER}
|
||||||
|
onClick={safeCallback(onDelete, receipt)}
|
||||||
|
icon={<Icon icon="trash-16" iconSize={16} />}
|
||||||
|
/>
|
||||||
|
</Can>
|
||||||
</Menu>
|
</Menu>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user