feat: Bad Debt.

This commit is contained in:
elforjani13
2021-11-01 20:24:01 +02:00
parent 613454a862
commit 91b848f158
25 changed files with 734 additions and 12 deletions

View File

@@ -0,0 +1,70 @@
import React from 'react';
import {
Button,
NavbarGroup,
Classes,
NavbarDivider,
Popover,
PopoverInteractionKind,
Position,
Intent,
MenuItem,
Menu,
} from '@blueprintjs/core';
import { If, Icon, FormattedMessage as T } from 'components';
import { useInvoiceDetailDrawerContext } from './InvoiceDetailDrawerProvider';
import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions';
import { compose } from 'utils';
function BadDebtMenuItem({
// #withDialogActions
openDialog,
// #withAlertsActions
openAlert,
}) {
// Invoice detail drawer context.
const { invoiceId, invoice } = useInvoiceDetailDrawerContext();
const handleBadDebtInvoiceDialog = () => {
openDialog('invoice-bad-debt', { invoiceId });
};
const handleBadDebtInvoiceAlert = () => {
openAlert('bad-debt', { invoiceId });
};
return (
<Popover
content={
<Menu>
<If condition={invoice.is_writtenoff}>
<MenuItem
text={<T id={'badDebt.label_cancel_bad_debt'} />}
onClick={handleBadDebtInvoiceAlert}
/>
</If>
<MenuItem
text={
<T id={'badDebt.label'} onClick={handleBadDebtInvoiceDialog} />
}
/>
</Menu>
}
minimal={true}
interactionKind={PopoverInteractionKind.CLICK}
position={Position.BOTTOM_LEFT}
canOutsideClickClose={false}
usePortal={false}
modifiers={{
offset: { offset: '0, 4' },
}}
>
<Button icon={<Icon icon="more-vert" iconSize={16} />} minimal={true} />
</Popover>
);
}
export default compose(withDialogActions, withAlertsActions)(BadDebtMenuItem);

View File

@@ -30,6 +30,11 @@ export default function InvoiceDetail() {
id={'journal_entries'}
panel={<JournalEntriesTable transactions={transactions} />}
/>
<Tab
title={intl.get('payment_transactions')}
id={'payment_transactions'}
// panel={}
/>
</DrawerMainTabs>
</div>
);

View File

@@ -6,20 +6,33 @@ import {
NavbarGroup,
Classes,
NavbarDivider,
Popover,
PopoverInteractionKind,
Position,
Intent,
MenuItem,
Menu,
} from '@blueprintjs/core';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import { useInvoiceDetailDrawerContext } from './InvoiceDetailDrawerProvider';
import { moreVertOptions } from '../../../common/moreVertOptions';
import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions';
import withDrawerActions from 'containers/Drawer/withDrawerActions';
import { If, Icon, FormattedMessage as T } from 'components';
import {
If,
Icon,
FormattedMessage as T,
// MoreVertMenutItems,
} from 'components';
import { compose } from 'utils';
import BadDebtMenuItem from './BadDebtMenuItem';
/**
* Invoice details action bar.
*/
@@ -58,6 +71,13 @@ function InvoiceDetailActionsBar({
const handleQuickPaymentInvoice = () => {
openDialog('quick-payment-receive', { invoiceId });
};
const handleBadDebtInvoiceDialog = () => () => {
openDialog('invoice-bad-debt', { invoiceId });
};
const handleBadDebtInvoiceAlert = () => {
openAlert('bad-debt', { invoiceId });
};
return (
<DashboardActionsBar>
@@ -91,6 +111,8 @@ function InvoiceDetailActionsBar({
intent={Intent.DANGER}
onClick={handleDeleteInvoice}
/>
<NavbarDivider />
<BadDebtMenuItem />
</NavbarGroup>
</DashboardActionsBar>
);