import React from 'react'; import intl from 'react-intl-universal'; import styled from 'styled-components'; import { Button, Popover, Tooltip, PopoverInteractionKind, Position, MenuItem, Menu, Intent, Tag, } from '@blueprintjs/core'; import { getColumnWidth } from 'utils'; import { FormatNumberCell, Icon, FormattedMessage as T, Choose, Can, TextOverviewTooltipCell, } from 'components'; import { SaleInvoiceAction, AbilitySubject, } from '../../../common/abilityOption'; import { useInvoiceDetailDrawerContext } from './InvoiceDetailDrawerProvider'; /** * Retrieve invoice readonly details table columns. */ export const useInvoiceReadonlyEntriesColumns = () => { // Invoice details drawer context. const { invoice: { entries }, } = useInvoiceDetailDrawerContext(); return React.useMemo( () => [ { Header: intl.get('product_and_service'), accessor: 'item.name', Cell: TextOverviewTooltipCell, disableSortBy: true, textOverview: true, width: 150, }, { Header: intl.get('description'), accessor: 'description', Cell: TextOverviewTooltipCell, disableSortBy: true, textOverview: true, width: 75, }, { Header: intl.get('quantity'), accessor: 'quantity', Cell: FormatNumberCell, align: 'right', disableSortBy: true, textOverview: true, width: getColumnWidth(entries, 'quantity', { minWidth: 60, magicSpacing: 5, }), }, { Header: intl.get('rate'), accessor: 'rate', Cell: FormatNumberCell, align: 'right', disableSortBy: true, textOverview: true, width: getColumnWidth(entries, 'rate', { minWidth: 60, magicSpacing: 5, }), }, { Header: intl.get('amount'), accessor: 'amount', Cell: FormatNumberCell, align: 'right', disableSortBy: true, textOverview: true, width: getColumnWidth(entries, 'amount', { minWidth: 60, magicSpacing: 5, }), }, ], [], ); }; /** * Invoice details more actions menu. * @returns {React.JSX} */ export const BadDebtMenuItem = ({ payload: { onCancelBadDebt, onBadDebt, onNotifyViaSMS, onConvert }, }) => { const { invoice } = useInvoiceDetailDrawerContext(); return ( } onClick={onBadDebt} /> } /> } /> } /> } >