diff --git a/client/src/components/job-totals-table/job-totals.table.totals.component.jsx b/client/src/components/job-totals-table/job-totals.table.totals.component.jsx index c38b5c642..ac18af0b5 100644 --- a/client/src/components/job-totals-table/job-totals.table.totals.component.jsx +++ b/client/src/components/job-totals-table/job-totals.table.totals.component.jsx @@ -1,228 +1,205 @@ -import {Table} from "antd"; -import Dinero from "dinero.js"; -import React, {useMemo} from "react"; -import {useTranslation} from "react-i18next"; +import { Table } from 'antd'; +import Dinero from 'dinero.js'; +import React, { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; -import {connect} from "react-redux"; -import {createStructuredSelector} from "reselect"; -import {selectBodyshop} from "../../redux/user/user.selectors"; +import { connect } from 'react-redux'; +import { createStructuredSelector } from 'reselect'; +import { selectBodyshop } from '../../redux/user/user.selectors'; import InstanceRenderManager from '../../utils/instanceRenderMgr'; const mapStateToProps = createStructuredSelector({ - //currentUser: selectCurrentUser - bodyshop: selectBodyshop, + //currentUser: selectCurrentUser + bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) + //setUserLanguage: language => dispatch(setUserLanguage(language)) }); -export default connect( - mapStateToProps, - mapDispatchToProps -)(JobTotalsTableTotals); +export default connect(mapStateToProps, mapDispatchToProps)(JobTotalsTableTotals); -export function JobTotalsTableTotals({bodyshop, job}) { - const {t} = useTranslation(); +export function JobTotalsTableTotals({ bodyshop, job }) { + const { t } = useTranslation(); - const data = useMemo(() => { - return [ - { - key: t("jobs.labels.subtotal"), - total: job.job_totals.totals.subtotal, + const data = useMemo(() => { + return [ + { + key: t('jobs.labels.subtotal'), + total: job.job_totals.totals.subtotal, + bold: true, + }, + ...InstanceRenderManager({ + imex: [ + { + key: t('jobs.labels.local_tax_amt'), + total: job.job_totals.totals.local_tax, + }, + { + key: t('jobs.labels.state_tax_amt'), + total: job.job_totals.totals.state_tax, + }, + ...(bodyshop.region_config === 'CA_BC' + ? [ + { + key: t('jobs.fields.ca_bc_pvrt'), + total: job.job_totals.additional.pvrt, + }, + ] + : []), + { + key: t('jobs.labels.federal_tax_amt'), + total: job.job_totals.totals.federal_tax, + }, + ], + promanager: 'USE_ROME', + rome: job.job_totals.totals.us_sales_tax_breakdown + ? [ + { + key: `${bodyshop.md_responsibility_centers.taxes.tax_ty1?.tax_type1 || 'T1'} - ${[ + job.cieca_pft.ty1_rate1, + job.cieca_pft.ty1_rate2, + job.cieca_pft.ty1_rate3, + job.cieca_pft.ty1_rate4, + job.cieca_pft.ty1_rate5, + ] + .filter((i) => i > 0) + .join(', ')}%`, + total: job.job_totals.totals.us_sales_tax_breakdown.ty1Tax, + }, + { + key: `${bodyshop.md_responsibility_centers.taxes.tax_ty2?.tax_type2 || 'T2'} - ${[ + job.cieca_pft.ty2_rate1, + job.cieca_pft.ty2_rate2, + job.cieca_pft.ty2_rate3, + job.cieca_pft.ty2_rate4, + job.cieca_pft.ty2_rate5, + ] + .filter((i) => i > 0) + .join(', ')}%`, + total: job.job_totals.totals.us_sales_tax_breakdown.ty2Tax, + }, + { + key: `${bodyshop.md_responsibility_centers.taxes.tax_ty3?.tax_type3 || 'T3'} - ${[ + job.cieca_pft.ty3_rate1, + job.cieca_pft.ty3_rate2, + job.cieca_pft.ty3_rate3, + job.cieca_pft.ty3_rate4, + job.cieca_pft.ty3_rate5, + ] + .filter((i) => i > 0) + .join(', ')}%`, + total: job.job_totals.totals.us_sales_tax_breakdown.ty3Tax, + }, + { + key: `${bodyshop.md_responsibility_centers.taxes.tax_ty4?.tax_type4 || 'T4'} - ${[ + job.cieca_pft.ty4_rate1, + job.cieca_pft.ty4_rate2, + job.cieca_pft.ty4_rate3, + job.cieca_pft.ty4_rate4, + job.cieca_pft.ty4_rate5, + ] + .filter((i) => i > 0) + .join(', ')}%`, + total: job.job_totals.totals.us_sales_tax_breakdown.ty4Tax, + }, + { + key: `${bodyshop.md_responsibility_centers.taxes.tax_ty5?.tax_type5 || 'TT'} - ${[ + job.cieca_pft.ty5_rate1, + job.cieca_pft.ty5_rate2, + job.cieca_pft.ty5_rate3, + job.cieca_pft.ty5_rate4, + job.cieca_pft.ty5_rate5, + ] + .filter((i) => i > 0) + .join(', ')}%`, + total: job.job_totals.totals.us_sales_tax_breakdown.ty5Tax, + }, + { + key: t('jobs.labels.total_sales_tax'), bold: true, - }, -...InstanceRenderManager({imex: [ { - key: t("jobs.labels.local_tax_amt"), - total: job.job_totals.totals.local_tax, -}, -{ - key: t("jobs.labels.state_tax_amt"), - total: job.job_totals.totals.state_tax, -}, -...(bodyshop.region_config === "CA_BC" - ? [ - { - key: t("jobs.fields.ca_bc_pvrt"), - total: job.job_totals.additional.pvrt, - }, - ] - : []), -{ - key: t("jobs.labels.federal_tax_amt"), - total: job.job_totals.totals.federal_tax, -},], - promanager: "USE_ROME", -rome: [(job.job_totals.totals.us_sales_tax_breakdown - ? [ - { - key: `${ - bodyshop.md_responsibility_centers.taxes.tax_ty1?.tax_type1 || - "T1" - } - ${[ - job.cieca_pft.ty1_rate1, - job.cieca_pft.ty1_rate2, - job.cieca_pft.ty1_rate3, - job.cieca_pft.ty1_rate4, - job.cieca_pft.ty1_rate5, - ] - .filter((i) => i > 0) - .join(", ")}%`, - total: job.job_totals.totals.us_sales_tax_breakdown.ty1Tax, - }, - { - key: `${ - bodyshop.md_responsibility_centers.taxes.tax_ty2?.tax_type2 || - "T2" - } - ${[ - job.cieca_pft.ty2_rate1, - job.cieca_pft.ty2_rate2, - job.cieca_pft.ty2_rate3, - job.cieca_pft.ty2_rate4, - job.cieca_pft.ty2_rate5, - ] - .filter((i) => i > 0) - .join(", ")}%`, - total: job.job_totals.totals.us_sales_tax_breakdown.ty2Tax, - }, - { - key: `${ - bodyshop.md_responsibility_centers.taxes.tax_ty3?.tax_type3 || - "T3" - } - ${[ - job.cieca_pft.ty3_rate1, - job.cieca_pft.ty3_rate2, - job.cieca_pft.ty3_rate3, - job.cieca_pft.ty3_rate4, - job.cieca_pft.ty3_rate5, - ] - .filter((i) => i > 0) - .join(", ")}%`, - total: job.job_totals.totals.us_sales_tax_breakdown.ty3Tax, - }, - { - key: `${ - bodyshop.md_responsibility_centers.taxes.tax_ty4?.tax_type4 || - "T4" - } - ${[ - job.cieca_pft.ty4_rate1, - job.cieca_pft.ty4_rate2, - job.cieca_pft.ty4_rate3, - job.cieca_pft.ty4_rate4, - job.cieca_pft.ty4_rate5, - ] - .filter((i) => i > 0) - .join(", ")}%`, - total: job.job_totals.totals.us_sales_tax_breakdown.ty4Tax, - }, - { - key: `${ - bodyshop.md_responsibility_centers.taxes.tax_ty5?.tax_type5 || - "TT" - } - ${[ - job.cieca_pft.ty5_rate1, - job.cieca_pft.ty5_rate2, - job.cieca_pft.ty5_rate3, - job.cieca_pft.ty5_rate4, - job.cieca_pft.ty5_rate5, - ] - .filter((i) => i > 0) - .join(", ")}%`, - total: job.job_totals.totals.us_sales_tax_breakdown.ty5Tax, - }, - { - key: t("jobs.labels.total_sales_tax"), - bold: true, - total: Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty1Tax) - .add( - Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty2Tax) - ) - .add( - Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty3Tax) - ) - .add( - Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty4Tax) - ) - .add( - Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty5Tax) - ).toJSON(), - }, - ].filter((item) => item.total.amount !== 0) - : [ - { - key: t("jobs.labels.state_tax_amt"), - total: job.job_totals.totals.state_tax, - }, - ])] -}), - + total: Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty1Tax) + .add(Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty2Tax)) + .add(Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty3Tax)) + .add(Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty4Tax)) + .add(Dinero(job.job_totals.totals.us_sales_tax_breakdown.ty5Tax)) + .toJSON(), + }, + ].filter((item) => item.total.amount !== 0) + : [ + { + key: t('jobs.labels.state_tax_amt'), + total: job.job_totals.totals.state_tax, + }, + ], + }), - { - key: t("jobs.labels.total_repairs"), - total: job.job_totals.totals.total_repairs, - bold: true, - }, - { - key: t("jobs.fields.ded_amt"), - total: job.job_totals.totals.custPayable.deductible, - }, - // { - // key: t("jobs.fields.federal_tax_payable"), - // total: job.job_totals.totals.custPayable.federal_tax, - // }, - { - key: t("jobs.fields.other_amount_payable"), - total: job.job_totals.totals.custPayable.other_customer_amount, - }, - { - key: t("jobs.fields.depreciation_taxes"), - total: job.job_totals.totals.custPayable.dep_taxes, - }, + { + key: t('jobs.labels.total_repairs'), + total: job.job_totals.totals.total_repairs, + bold: true, + }, + { + key: t('jobs.fields.ded_amt'), + total: job.job_totals.totals.custPayable.deductible, + }, + // { + // key: t("jobs.fields.federal_tax_payable"), + // total: job.job_totals.totals.custPayable.federal_tax, + // }, + { + key: t('jobs.fields.other_amount_payable'), + total: job.job_totals.totals.custPayable.other_customer_amount, + }, + { + key: t('jobs.fields.depreciation_taxes'), + total: job.job_totals.totals.custPayable.dep_taxes, + }, - { - key: t("jobs.labels.total_cust_payable"), - total: job.job_totals.totals.custPayable.total, - bold: true, - }, - { - key: t("jobs.labels.net_repairs"), - total: job.job_totals.totals.net_repairs, - bold: true, - }, - ]; - }, [job.job_totals, job.cieca_pft, t, bodyshop.md_responsibility_centers]); - - const columns = [ - { - //title: t("joblines.fields.part_type"), - dataIndex: "key", - key: "key", - width: "80%", - onCell: (record, rowIndex) => { - return {style: {fontWeight: record.bold && "bold"}}; - }, - }, - { - title: t("joblines.fields.total"), - dataIndex: "total", - key: "total", - align: "right", - render: (text, record) => Dinero(record.total).toFormat(), - width: "20%", - onCell: (record, rowIndex) => { - return {style: {fontWeight: record.bold && "bold"}}; - }, - }, + { + key: t('jobs.labels.total_cust_payable'), + total: job.job_totals.totals.custPayable.total, + bold: true, + }, + { + key: t('jobs.labels.net_repairs'), + total: job.job_totals.totals.net_repairs, + bold: true, + }, ]; + }, [job.job_totals, job.cieca_pft, t, bodyshop.md_responsibility_centers]); - return ( -