import { Button, Space, Statistic } from "antd"; import Dinero from "dinero.js"; import _ from "lodash"; import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { reconcileByAssocLine, reconcileByPrice, } from "./job-reconciliation-totals.utility"; export default function JobReconciliationTotals({ billLines, jobLines, jobLineState, billLineState, }) { const [errors, setErrors] = useState([]); const { t } = useTranslation(); const selectedBillLines = billLineState[0]; const selectedJobLines = jobLineState[0]; const totals = useMemo(() => { const jlLookup = _.keyBy(selectedJobLines, (i) => i); const billLookup = _.keyBy(selectedBillLines, (i) => i); return { joblinesTotal: jobLines .filter((jl) => !!jlLookup[jl.id]) .reduce((acc, val) => { return acc.add( Dinero({ amount: Math.round((val.act_price || 0) * 100) }).multiply( val.part_qty || 1 ) ); }, Dinero()), billLinesTotal: billLines .filter((bl) => !!billLookup[bl.id]) .reduce((acc, val) => { return acc.add( Dinero({ amount: Math.round((val.actual_price || 0) * 100), }) .multiply(val.quantity || 1) .multiply(val.bill.is_credit_memo ? -1 : 1) ); }, Dinero()), }; }, [billLines, jobLines, selectedBillLines, selectedJobLines]); return (