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, MODIFIER, } from 'components'; import { SaleInvoiceAction, AbilitySubject, } from '../../../common/abilityOption'; import { useInvoiceDetailDrawerContext } from './InvoiceDetailDrawerProvider'; export function TooltipAccessor({ cell: { value } }) { return ( {value} ); } /** * 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: TooltipAccessor, width: getColumnWidth(entries, 'item.name', { minWidth: 100, maxWidth: 150, magicSpacing: 5, }), className: 'name', disableSortBy: true, textOverview: true, }, { Header: intl.get('description'), accessor: 'description', // Cell: TooltipAccessor, className: 'description', width: getColumnWidth(entries, 'description', { minWidth: 100, maxWidth: 150, magicSpacing: 5, }), disableSortBy: true, textOverview: true, }, { Header: intl.get('quantity'), accessor: 'quantity', Cell: FormatNumberCell, width: 100, align: 'right', disableSortBy: true, }, { Header: intl.get('rate'), accessor: 'rate', Cell: FormatNumberCell, width: 100, align: 'right', disableSortBy: true, }, { Header: intl.get('amount'), accessor: 'amount', Cell: FormatNumberCell, width: 100, align: 'right', disableSortBy: true, }, ], [], ); }; /** * Invoice details more actions menu. * @returns {React.JSX} */ export const BadDebtMenuItem = ({ payload: { onCancelBadDebt, onBadDebt, onNotifyViaSMS, onConvert }, }) => { const { invoice } = useInvoiceDetailDrawerContext(); return ( } onClick={onBadDebt} /> } /> } /> } /> } >