import { DeleteFilled, DownOutlined } from "@ant-design/icons"; import { Button, Card, Divider, Dropdown, Form, Input, InputNumber, Menu, Select, Space, Statistic, Switch, Typography, } from "antd"; import Dinero from "dinero.js"; import moment from "moment"; import React from "react"; 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 DmsCdkMakes from "../dms-cdk-makes/dms-cdk-makes.component"; import DmsCdkMakesRefetch from "../dms-cdk-makes/dms-cdk-makes.refetch.component"; import FormDatePicker from "../form-date-picker/form-date-picker.component"; 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 = (dispatch) => ({ //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 (
{bodyshop.cdk_dealerid && (
)} {(fields, { add, remove }) => { return (
{fields.map((field, index) => ( {t("jobs.fields.dms.payer.controlnumber")}{" "} {bodyshop.cdk_configuration.controllist && bodyshop.cdk_configuration.controllist.map( (key, idx) => ( { form.setFieldsValue({ payers: form .getFieldValue("payers") .map((row, mapIndex) => { if (index !== mapIndex) return row; return { ...row, controlnumber: key.controlnumber, }; }), }); }} > {key.name} ) )} } > 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 ( - = ); }}
); }