import { DeleteFilled, DownOutlined } from "@ant-design/icons"; import { Button, Card, Divider, Dropdown, Form, Input, InputNumber, Select, Space, Statistic, Switch, Typography } from "antd"; import Dinero from "dinero.js"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { determineDmsType } from "../../pages/dms/dms.container"; import { selectBodyshop } from "../../redux/user/user.selectors"; import i18n from "../../translations/i18n"; import dayjs from "../../utils/day"; import DmsCdkMakes from "../dms-cdk-makes/dms-cdk-makes.component"; import DmsCdkMakesRefetch from "../dms-cdk-makes/dms-cdk-makes.refetch.component"; import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component.jsx"; import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop }); const mapDispatchToProps = () => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect(mapStateToProps, mapDispatchToProps)(DmsPostForm); export function DmsPostForm({ bodyshop, socket, job, logsRef }) { const [form] = Form.useForm(); const { t } = useTranslation(); const handlePayerSelect = (value, index) => { form.setFieldsValue({ payers: form.getFieldValue("payers").map((payer, mapIndex) => { if (index !== mapIndex) return payer; const cdkPayer = bodyshop.cdk_configuration.payers && bodyshop.cdk_configuration.payers.find((i) => i.name === value); if (!cdkPayer) return payer; return { ...cdkPayer, dms_acctnumber: cdkPayer.dms_acctnumber, controlnumber: job && job[cdkPayer.control_type] }; }) }); }; const handleFinish = (values) => { socket.emit(`${determineDmsType(bodyshop)}-export-job`, { jobid: job.id, txEnvelope: values }); console.log(logsRef); if (logsRef) { console.log("executing", logsRef); logsRef.curent && logsRef.current.scrollIntoView({ behavior: "smooth" }); } }; return (
= (dayjs().year() + 1) % 100 ? 1900 + parseInt(job.v_model_yr) : 2000 + parseInt(job.v_model_yr)) : job.v_model_yr)) || 2019}-01-01` ) }} > {bodyshop.cdk_dealerid && (
)} {(fields, { add, remove }) => { return (
{fields.map((field, index) => ( {t("jobs.fields.dms.payer.controlnumber")}{" "} ({ key: idx, label: key.name, onClick: () => { form.setFieldsValue({ payers: form.getFieldValue("payers").map((row, mapIndex) => { if (index !== mapIndex) return row; return { ...row, controlnumber: key.controlnumber }; }) }); } })) }} > e.preventDefault()}>
} key={`${index}controlnumber`} name={[field.name, "controlnumber"]} rules={[ { required: true } ]} > {() => { const payers = form.getFieldValue("payers"); const row = payers && payers[index]; const cdkPayer = bodyshop.cdk_configuration.payers && bodyshop.cdk_configuration.payers.find((i) => i && row && i.name === row.name); if (i18n.exists(`jobs.fields.${cdkPayer?.control_type}`)) return
{cdkPayer && t(`jobs.fields.${cdkPayer?.control_type}`)}
; else if (i18n.exists(`jobs.fields.dms.control_type.${cdkPayer?.control_type}`)) { return
{cdkPayer && t(`jobs.fields.dms.control_type.${cdkPayer?.control_type}`)}
; } else { return null; } }}
{ remove(field.name); }} /> ))} ); }}
{() => { //Perform Calculation to determine discrepancy. let totalAllocated = Dinero(); const payers = form.getFieldValue("payers"); payers && payers.forEach((payer) => { totalAllocated = totalAllocated.add(Dinero({ amount: Math.round((payer?.amount || 0) * 100) })); }); const totals = socket.allocationsSummary && socket.allocationsSummary.reduce( (acc, val) => { return { totalSale: acc.totalSale.add(Dinero(val.sale)), totalCost: acc.totalCost.add(Dinero(val.cost)) }; }, { totalSale: Dinero(), totalCost: Dinero() } ); const discrep = totals ? totals.totalSale.subtract(totalAllocated) : Dinero(); return ( - = ); }}
); }