All files / libs/payout-definition/plans/views/hub/rule-designer/src/lib/compute/result use-adjustments-payout.tsx

0% Statements 0/38
0% Branches 0/1
0% Functions 0/1
0% Lines 0/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                                                             
import { useMemo } from 'react';
import { useIntl } from 'react-intl';

import { Typography } from '@allshares/studio-design-system';
import { FormattedAmount } from '@amalia/kernel/intl/components';

import { useRuleDesignerComputeContext } from '../RuleDesignerCompute.context';

export const useAdjustmentsPayout = () => {
  const { formatMessage } = useIntl();

  // Adjustments are on the achieved statement.
  const { statement } = useRuleDesignerComputeContext();

  return useMemo(() => {
    if (!statement) {
      return null;
    }
    const total = (statement.adjustments ?? []).reduce((acc, curr) => acc + curr.amount, 0);

    return total === 0
      ? null
      : {
          currencyAmount: { value: total, symbol: statement.currency },
          definition: null,
          label: formatMessage({ defaultMessage: 'Adjustments' }),
          amount: (
            <Typography variant="bodySmallMedium">
              <FormattedAmount
                currencySymbol={statement.currency}
                value={total}
              />
            </Typography>
          ),
          help: null,
        };
  }, [statement, formatMessage]);
};