IO-2054 Improved spacing for QB Multi Payer
This commit is contained in:
@@ -3,6 +3,7 @@ import { useApolloClient, useMutation } from "@apollo/client";
|
|||||||
import {
|
import {
|
||||||
Alert,
|
Alert,
|
||||||
Button,
|
Button,
|
||||||
|
Col,
|
||||||
Divider,
|
Divider,
|
||||||
Form,
|
Form,
|
||||||
Input,
|
Input,
|
||||||
@@ -10,6 +11,7 @@ import {
|
|||||||
notification,
|
notification,
|
||||||
PageHeader,
|
PageHeader,
|
||||||
Popconfirm,
|
Popconfirm,
|
||||||
|
Row,
|
||||||
Select,
|
Select,
|
||||||
Space,
|
Space,
|
||||||
Statistic,
|
Statistic,
|
||||||
@@ -329,156 +331,162 @@ export function JobsCloseComponent({ job, bodyshop, jobRO }) {
|
|||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
<Divider>{t("jobs.labels.multipayers")}</Divider>
|
<Divider>{t("jobs.labels.multipayers")}</Divider>
|
||||||
{Qb_Multi_Ar.treatment === "on" && (
|
{Qb_Multi_Ar.treatment === "on" && (
|
||||||
<Space>
|
<Row gutter={[16, 16]}>
|
||||||
<Form.List
|
<Col lg={8} md={24}>
|
||||||
name={["qb_multiple_payers"]}
|
<Form.List
|
||||||
rules={[
|
name={["qb_multiple_payers"]}
|
||||||
({ getFieldValue }) => ({
|
rules={[
|
||||||
validator(_, value) {
|
({ getFieldValue }) => ({
|
||||||
let totalAllocated = Dinero();
|
validator(_, value) {
|
||||||
|
let totalAllocated = Dinero();
|
||||||
|
|
||||||
const payers = form.getFieldValue("qb_multiple_payers");
|
const payers = form.getFieldValue("qb_multiple_payers");
|
||||||
payers &&
|
payers &&
|
||||||
payers.forEach((payer) => {
|
payers.forEach((payer) => {
|
||||||
totalAllocated = totalAllocated.add(
|
totalAllocated = totalAllocated.add(
|
||||||
Dinero({
|
Dinero({
|
||||||
amount: Math.round((payer?.amount || 0) * 100),
|
amount: Math.round((payer?.amount || 0) * 100),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
const discrep = job.job_totals
|
const discrep = job.job_totals
|
||||||
? Dinero(job.job_totals.totals.total_repairs).subtract(
|
? Dinero(job.job_totals.totals.total_repairs).subtract(
|
||||||
totalAllocated
|
totalAllocated
|
||||||
)
|
|
||||||
: Dinero();
|
|
||||||
return discrep.getAmount() > 0
|
|
||||||
? Promise.resolve()
|
|
||||||
: Promise.reject(
|
|
||||||
new Error(
|
|
||||||
t("jobs.labels.additionalpayeroverallocation")
|
|
||||||
)
|
)
|
||||||
);
|
: Dinero();
|
||||||
},
|
return discrep.getAmount() > 0
|
||||||
}),
|
? Promise.resolve()
|
||||||
]}
|
: Promise.reject(
|
||||||
>
|
new Error(
|
||||||
{(fields, { add, remove }) => {
|
t("jobs.labels.additionalpayeroverallocation")
|
||||||
return (
|
)
|
||||||
<div>
|
);
|
||||||
{fields.map((field, index) => (
|
},
|
||||||
<Form.Item key={field.key}>
|
}),
|
||||||
<Space>
|
]}
|
||||||
<Form.Item
|
>
|
||||||
label={t("jobs.fields.qb_multiple_payers.name")}
|
{(fields, { add, remove }) => {
|
||||||
key={`${index}name`}
|
return (
|
||||||
name={[field.name, "name"]}
|
<div>
|
||||||
rules={[
|
{fields.map((field, index) => (
|
||||||
{
|
<Form.Item key={field.key}>
|
||||||
required: true,
|
<Space>
|
||||||
},
|
<Form.Item
|
||||||
]}
|
label={t("jobs.fields.qb_multiple_payers.name")}
|
||||||
>
|
key={`${index}name`}
|
||||||
<Select
|
name={[field.name, "name"]}
|
||||||
style={{ minWidth: "12rem" }}
|
rules={[
|
||||||
disabled={jobRO}
|
{
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
]}
|
||||||
>
|
>
|
||||||
{bodyshop.md_ins_cos.map((s) => (
|
<Select
|
||||||
<Select.Option key={s.name} value={s.name}>
|
style={{ minWidth: "12rem" }}
|
||||||
{s.name}
|
disabled={jobRO}
|
||||||
</Select.Option>
|
>
|
||||||
))}
|
{bodyshop.md_ins_cos.map((s) => (
|
||||||
</Select>
|
<Select.Option key={s.name} value={s.name}>
|
||||||
</Form.Item>
|
{s.name}
|
||||||
|
</Select.Option>
|
||||||
|
))}
|
||||||
|
</Select>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.qb_multiple_payers.amount")}
|
label={t("jobs.fields.qb_multiple_payers.amount")}
|
||||||
key={`${index}amount`}
|
key={`${index}amount`}
|
||||||
name={[field.name, "amount"]}
|
name={[field.name, "amount"]}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<CurrencyInput min={0} disabled={jobRO} />
|
<CurrencyInput min={0} disabled={jobRO} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<DeleteFilled
|
<DeleteFilled
|
||||||
disabled={jobRO}
|
disabled={jobRO}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
remove(field.name);
|
remove(field.name);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
|
</Form.Item>
|
||||||
|
))}
|
||||||
|
<Form.Item>
|
||||||
|
<Button
|
||||||
|
disabled={jobRO}
|
||||||
|
onClick={() => {
|
||||||
|
add();
|
||||||
|
}}
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
>
|
||||||
|
{t("jobs.actions.dms.addpayer")}
|
||||||
|
</Button>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
))}
|
</div>
|
||||||
<Form.Item>
|
);
|
||||||
<Button
|
}}
|
||||||
disabled={jobRO}
|
</Form.List>
|
||||||
onClick={() => {
|
</Col>
|
||||||
add();
|
<Col lg={16} md={24}>
|
||||||
}}
|
<Form.Item shouldUpdate>
|
||||||
style={{ width: "100%" }}
|
{() => {
|
||||||
>
|
//Perform Calculation to determine discrepancy.
|
||||||
{t("jobs.actions.dms.addpayer")}
|
let totalAllocated = Dinero();
|
||||||
</Button>
|
|
||||||
</Form.Item>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
</Form.List>
|
|
||||||
<Form.Item shouldUpdate>
|
|
||||||
{() => {
|
|
||||||
//Perform Calculation to determine discrepancy.
|
|
||||||
let totalAllocated = Dinero();
|
|
||||||
|
|
||||||
const payers = form.getFieldValue("qb_multiple_payers");
|
const payers = form.getFieldValue("qb_multiple_payers");
|
||||||
payers &&
|
payers &&
|
||||||
payers.forEach((payer) => {
|
payers.forEach((payer) => {
|
||||||
totalAllocated = totalAllocated.add(
|
totalAllocated = totalAllocated.add(
|
||||||
Dinero({ amount: Math.round((payer?.amount || 0) * 100) })
|
Dinero({
|
||||||
);
|
amount: Math.round((payer?.amount || 0) * 100),
|
||||||
});
|
})
|
||||||
const discrep = job.job_totals
|
);
|
||||||
? Dinero(job.job_totals.totals.total_repairs).subtract(
|
});
|
||||||
totalAllocated
|
const discrep = job.job_totals
|
||||||
)
|
? Dinero(job.job_totals.totals.total_repairs).subtract(
|
||||||
: Dinero();
|
totalAllocated
|
||||||
return (
|
)
|
||||||
<Space size="large" wrap align="center">
|
: Dinero();
|
||||||
<Statistic
|
return (
|
||||||
title={t("jobs.labels.total_cust_payable")}
|
<Space size="large" wrap align="center">
|
||||||
value={(job.job_totals
|
<Statistic
|
||||||
? Dinero(job.job_totals.totals.custPayable)
|
title={t("jobs.labels.total_cust_payable")}
|
||||||
: Dinero()
|
value={(job.job_totals
|
||||||
).toFormat()}
|
? Dinero(job.job_totals.totals.custPayable)
|
||||||
/>
|
: Dinero()
|
||||||
<Divider orientation="vertical" />
|
).toFormat()}
|
||||||
<Statistic
|
/>
|
||||||
title={t("jobs.labels.total_repairs")}
|
<Divider type="vertical" />
|
||||||
value={(job.job_totals
|
<Statistic
|
||||||
? Dinero(job.job_totals.totals.total_repairs)
|
title={t("jobs.labels.total_repairs")}
|
||||||
: Dinero()
|
value={(job.job_totals
|
||||||
).toFormat()}
|
? Dinero(job.job_totals.totals.total_repairs)
|
||||||
/>
|
: Dinero()
|
||||||
<Typography.Title>-</Typography.Title>
|
).toFormat()}
|
||||||
<Statistic
|
/>
|
||||||
title={t("jobs.labels.dms.totalallocated")}
|
<Typography.Title>-</Typography.Title>
|
||||||
value={totalAllocated.toFormat()}
|
<Statistic
|
||||||
/>
|
title={t("jobs.labels.dms.totalallocated")}
|
||||||
<Typography.Title>=</Typography.Title>
|
value={totalAllocated.toFormat()}
|
||||||
<Statistic
|
/>
|
||||||
title={t("jobs.labels.pimraryamountpayable")}
|
<Typography.Title>=</Typography.Title>
|
||||||
valueStyle={{
|
<Statistic
|
||||||
color: discrep.getAmount() > 0 ? "green" : "red",
|
title={t("jobs.labels.pimraryamountpayable")}
|
||||||
}}
|
valueStyle={{
|
||||||
value={discrep.toFormat()}
|
color: discrep.getAmount() > 0 ? "green" : "red",
|
||||||
/>
|
}}
|
||||||
</Space>
|
value={discrep.toFormat()}
|
||||||
);
|
/>
|
||||||
}}
|
</Space>
|
||||||
</Form.Item>
|
);
|
||||||
</Space>
|
}}
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
)}
|
)}
|
||||||
<Divider />
|
<Divider />
|
||||||
<JobsCloseLines job={job} />
|
<JobsCloseLines job={job} />
|
||||||
|
|||||||
Reference in New Issue
Block a user