mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 12:50:38 +00:00
142 lines
3.3 KiB
TypeScript
142 lines
3.3 KiB
TypeScript
// @ts-nocheck
|
|
import React from 'react';
|
|
import intl from 'react-intl-universal';
|
|
import {
|
|
Button,
|
|
Popover,
|
|
PopoverInteractionKind,
|
|
Position,
|
|
MenuItem,
|
|
Menu,
|
|
Tag,
|
|
Intent,
|
|
} from '@blueprintjs/core';
|
|
import { getColumnWidth } from '@/utils';
|
|
import {
|
|
Icon,
|
|
FormattedMessage as T,
|
|
TextOverviewTooltipCell,
|
|
FormatNumberCell,
|
|
Choose,
|
|
} from '@/components';
|
|
import { useCreditNoteDetailDrawerContext } from './CreditNoteDetailDrawerProvider';
|
|
|
|
export const useCreditNoteReadOnlyEntriesColumns = () => {
|
|
// credit note details drawer context.
|
|
const {
|
|
creditNote: { entries },
|
|
} = useCreditNoteDetailDrawerContext();
|
|
|
|
return React.useMemo(
|
|
() => [
|
|
{
|
|
Header: intl.get('product_and_service'),
|
|
accessor: 'item.name',
|
|
Cell: TextOverviewTooltipCell,
|
|
width: 150,
|
|
className: 'name',
|
|
disableSortBy: true,
|
|
textOverview: true,
|
|
},
|
|
{
|
|
Header: intl.get('description'),
|
|
accessor: 'description',
|
|
Cell: TextOverviewTooltipCell,
|
|
className: 'description',
|
|
disableSortBy: true,
|
|
textOverview: true,
|
|
},
|
|
{
|
|
Header: intl.get('quantity'),
|
|
accessor: 'quantity',
|
|
Cell: FormatNumberCell,
|
|
width: getColumnWidth(entries, 'quantity', {
|
|
minWidth: 60,
|
|
magicSpacing: 5,
|
|
}),
|
|
align: 'right',
|
|
disableSortBy: true,
|
|
textOverview: true,
|
|
},
|
|
{
|
|
Header: intl.get('rate'),
|
|
accessor: 'rate_formatted',
|
|
width: getColumnWidth(entries, 'rate_formatted', {
|
|
minWidth: 60,
|
|
magicSpacing: 5,
|
|
}),
|
|
align: 'right',
|
|
disableSortBy: true,
|
|
textOverview: true,
|
|
},
|
|
{
|
|
Header: intl.get('amount'),
|
|
accessor: 'total_formatted',
|
|
width: getColumnWidth(entries, 'total_formatted', {
|
|
minWidth: 60,
|
|
magicSpacing: 5,
|
|
}),
|
|
align: 'right',
|
|
disableSortBy: true,
|
|
textOverview: true,
|
|
},
|
|
],
|
|
[],
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Credit note more actions mneu.
|
|
* @returns {React.JSX}
|
|
*/
|
|
export function CreditNoteMenuItem({ payload: { onReconcile } }) {
|
|
return (
|
|
<Popover
|
|
minimal={true}
|
|
interactionKind={PopoverInteractionKind.CLICK}
|
|
position={Position.BOTTOM_LEFT}
|
|
modifiers={{
|
|
offset: { offset: '0, 4' },
|
|
}}
|
|
content={
|
|
<Menu>
|
|
<MenuItem
|
|
onClick={onReconcile}
|
|
text={<T id={'credit_note.action.reconcile_with_invoices'} />}
|
|
/>
|
|
</Menu>
|
|
}
|
|
>
|
|
<Button icon={<Icon icon="more-vert" iconSize={16} />} minimal={true} />
|
|
</Popover>
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Credit note details status.
|
|
* @returns {React.JSX}
|
|
*/
|
|
export function CreditNoteDetailsStatus({ creditNote }) {
|
|
return (
|
|
<Choose>
|
|
<Choose.When condition={creditNote.is_open}>
|
|
<Tag intent={Intent.WARNING} round={true}>
|
|
<T id={'open'} />
|
|
</Tag>
|
|
</Choose.When>
|
|
|
|
<Choose.When condition={creditNote.is_closed}>
|
|
<Tag intent={Intent.SUCCESS} round={true}>
|
|
<T id={'closed'} />
|
|
</Tag>
|
|
</Choose.When>
|
|
|
|
<Choose.When condition={creditNote.is_draft}>
|
|
<Tag intent={Intent.NONE} round={true} minimal={true}>
|
|
<T id={'draft'} />
|
|
</Tag>
|
|
</Choose.When>
|
|
</Choose>
|
|
);
|
|
}
|