Update job calculation logic. IO-642
This commit is contained in:
@@ -17651,6 +17651,69 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_lbr_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_levies_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_paint_mat_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>tax_registration_number</name>
|
<name>tax_registration_number</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -17672,6 +17735,90 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_shop_mat_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_str_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_sub_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>tax_tow_rt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>towing_payable</name>
|
<name>towing_payable</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ export function ContractConvertToRo({
|
|||||||
local_tax_rate: bodyshop.bill_tax_rates.local_tax_rate / 100,
|
local_tax_rate: bodyshop.bill_tax_rates.local_tax_rate / 100,
|
||||||
ins_co_nm: "CC",
|
ins_co_nm: "CC",
|
||||||
converted: true,
|
converted: true,
|
||||||
clm_no: `${contract.job.clm_no}-CC`,
|
clm_no: contract.job.clm_no ? `${contract.job.clm_no}-CC` : null,
|
||||||
ownr_fn: contract.job.owner.ownr_fn,
|
ownr_fn: contract.job.owner.ownr_fn,
|
||||||
ownr_ln: contract.job.owner.ownr_ln,
|
ownr_ln: contract.job.owner.ownr_ln,
|
||||||
ownr_co_nm: contract.job.owner.ownr_co_nm,
|
ownr_co_nm: contract.job.owner.ownr_co_nm,
|
||||||
@@ -166,6 +166,62 @@ export function ContractConvertToRo({
|
|||||||
data: billingLines,
|
data: billingLines,
|
||||||
},
|
},
|
||||||
parts_tax_rates: {
|
parts_tax_rates: {
|
||||||
|
PAA: {
|
||||||
|
prt_type: "PAA",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAC: {
|
||||||
|
prt_type: "PAC",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAL: {
|
||||||
|
prt_type: "PAL",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAM: {
|
||||||
|
prt_type: "PAM",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAN: {
|
||||||
|
prt_type: "PAN",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAR: {
|
||||||
|
prt_type: "PAR",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
|
PAS: {
|
||||||
|
prt_type: "PAS",
|
||||||
|
prt_discp: 0,
|
||||||
|
prt_mktyp: false,
|
||||||
|
prt_mkupp: 0,
|
||||||
|
prt_tax_in: true,
|
||||||
|
prt_tax_rt: bodyshop.bill_tax_rates.state_tax_rate / 100,
|
||||||
|
},
|
||||||
CCDR: {
|
CCDR: {
|
||||||
prt_type: "CCDR",
|
prt_type: "CCDR",
|
||||||
prt_discp: 0,
|
prt_discp: 0,
|
||||||
@@ -295,7 +351,7 @@ export function ContractConvertToRo({
|
|||||||
<Button
|
<Button
|
||||||
onClick={() => setVisible(true)}
|
onClick={() => setVisible(true)}
|
||||||
loading={loading}
|
loading={loading}
|
||||||
disabled={!contract.dailyrate || disabled}
|
disabled={!contract.dailyrate || !contract.actualreturn || disabled}
|
||||||
>
|
>
|
||||||
{t("contracts.actions.convertoro")}
|
{t("contracts.actions.convertoro")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -176,6 +176,12 @@ export default function ContractFormComponent({
|
|||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("contracts.fields.driver_addr1")}
|
label={t("contracts.fields.driver_addr1")}
|
||||||
name="driver_addr1"
|
name="driver_addr1"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
>
|
>
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|||||||
@@ -296,6 +296,208 @@ export function JobsDetailRatesParts({ jobRO, expanded, required = true }) {
|
|||||||
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow header={t("joblines.fields.part_types.CCDR")}>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_discp")}
|
||||||
|
name={["parts_tax_rates", "CCDR", "prt_discp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mktyp")}
|
||||||
|
name={["parts_tax_rates", "CCDR", "prt_mktyp"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mkupp")}
|
||||||
|
name={["parts_tax_rates", "CCDR", "prt_mkupp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_in")}
|
||||||
|
name={["parts_tax_rates", "CCDR", "prt_tax_in"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_rt")}
|
||||||
|
name={["parts_tax_rates", "CCDR", "prt_tax_rt"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow header={t("joblines.fields.part_types.CCF")}>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_discp")}
|
||||||
|
name={["parts_tax_rates", "CCF", "prt_discp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mktyp")}
|
||||||
|
name={["parts_tax_rates", "CCF", "prt_mktyp"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mkupp")}
|
||||||
|
name={["parts_tax_rates", "CCF", "prt_mkupp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_in")}
|
||||||
|
name={["parts_tax_rates", "CCF", "prt_tax_in"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_rt")}
|
||||||
|
name={["parts_tax_rates", "CCF", "prt_tax_rt"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow header={t("joblines.fields.part_types.CCM")}>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_discp")}
|
||||||
|
name={["parts_tax_rates", "CCM", "prt_discp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mktyp")}
|
||||||
|
name={["parts_tax_rates", "CCM", "prt_mktyp"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mkupp")}
|
||||||
|
name={["parts_tax_rates", "CCM", "prt_mkupp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_in")}
|
||||||
|
name={["parts_tax_rates", "CCM", "prt_tax_in"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_rt")}
|
||||||
|
name={["parts_tax_rates", "CCM", "prt_tax_rt"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow header={t("joblines.fields.part_types.CCC")}>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_discp")}
|
||||||
|
name={["parts_tax_rates", "CCC", "prt_discp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mktyp")}
|
||||||
|
name={["parts_tax_rates", "CCC", "prt_mktyp"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mkupp")}
|
||||||
|
name={["parts_tax_rates", "CCC", "prt_mkupp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_in")}
|
||||||
|
name={["parts_tax_rates", "CCC", "prt_tax_in"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_rt")}
|
||||||
|
name={["parts_tax_rates", "CCC", "prt_tax_rt"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow header={t("joblines.fields.part_types.CCD")}>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_discp")}
|
||||||
|
name={["parts_tax_rates", "CCD", "prt_discp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mktyp")}
|
||||||
|
name={["parts_tax_rates", "CCD", "prt_mktyp"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_mkupp")}
|
||||||
|
name={["parts_tax_rates", "CCD", "prt_mkupp"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_in")}
|
||||||
|
name={["parts_tax_rates", "CCD", "prt_tax_in"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.parts_tax_rates.prt_tax_rt")}
|
||||||
|
name={["parts_tax_rates", "CCD", "prt_tax_rt"]}
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
|
<LayoutFormRow>
|
||||||
|
<Form.Item label={t("jobs.fields.tax_tow_rt")} name="tax_tow_rt">
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item label={t("jobs.fields.tax_str_rt")} name="tax_str_rt">
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.tax_paint_mat_rt")}
|
||||||
|
name="tax_paint_mat_rt"
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.tax_shop_mat_rt")}
|
||||||
|
name="tax_shop_mat_rt"
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item label={t("jobs.fields.tax_sub_rt")} name="tax_sub_rt">
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item label={t("jobs.fields.tax_lbr_rt")} name="tax_lbr_rt">
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("jobs.fields.tax_levies_rt")}
|
||||||
|
name="tax_levies_rt"
|
||||||
|
>
|
||||||
|
<InputNumber min={0} max={1} precision={2} disabled={jobRO} />
|
||||||
|
</Form.Item>
|
||||||
|
</LayoutFormRow>
|
||||||
</Collapse.Panel>
|
</Collapse.Panel>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1080,8 +1080,15 @@
|
|||||||
"specialcoveragepolicy": "Special Coverage Policy",
|
"specialcoveragepolicy": "Special Coverage Policy",
|
||||||
"state_tax_rate": "State Tax Rate",
|
"state_tax_rate": "State Tax Rate",
|
||||||
"status": "Job Status",
|
"status": "Job Status",
|
||||||
"storage_payable": "Storage/PVRT",
|
"storage_payable": "Storage",
|
||||||
|
"tax_lbr_rt": "Labor Tax Rate",
|
||||||
|
"tax_levies_rt": "Levies Tax Rate",
|
||||||
|
"tax_paint_mat_rt": "Paint Material Tax Rate",
|
||||||
"tax_registration_number": "Tax Registration Number",
|
"tax_registration_number": "Tax Registration Number",
|
||||||
|
"tax_shop_mat_rt": "Shop Material Tax Rate",
|
||||||
|
"tax_str_rt": "Storage Tax Rate",
|
||||||
|
"tax_sub_rt": "Sublet Tax Rate",
|
||||||
|
"tax_tow_rt": "Towing Tax Rate",
|
||||||
"towing_payable": "Towing Payable",
|
"towing_payable": "Towing Payable",
|
||||||
"unitnumber": "Unit #",
|
"unitnumber": "Unit #",
|
||||||
"updated_at": "Updated At",
|
"updated_at": "Updated At",
|
||||||
|
|||||||
@@ -1080,8 +1080,15 @@
|
|||||||
"specialcoveragepolicy": "Política de cobertura especial",
|
"specialcoveragepolicy": "Política de cobertura especial",
|
||||||
"state_tax_rate": "",
|
"state_tax_rate": "",
|
||||||
"status": "Estado del trabajo",
|
"status": "Estado del trabajo",
|
||||||
"storage_payable": "Almacenamiento / PVRT",
|
"storage_payable": "Almacenamiento ",
|
||||||
|
"tax_lbr_rt": "",
|
||||||
|
"tax_levies_rt": "",
|
||||||
|
"tax_paint_mat_rt": "",
|
||||||
"tax_registration_number": "",
|
"tax_registration_number": "",
|
||||||
|
"tax_shop_mat_rt": "",
|
||||||
|
"tax_str_rt": "",
|
||||||
|
"tax_sub_rt": "",
|
||||||
|
"tax_tow_rt": "",
|
||||||
"towing_payable": "Remolque a pagar",
|
"towing_payable": "Remolque a pagar",
|
||||||
"unitnumber": "Unidad #",
|
"unitnumber": "Unidad #",
|
||||||
"updated_at": "Actualizado en",
|
"updated_at": "Actualizado en",
|
||||||
|
|||||||
@@ -1080,8 +1080,15 @@
|
|||||||
"specialcoveragepolicy": "Politique de couverture spéciale",
|
"specialcoveragepolicy": "Politique de couverture spéciale",
|
||||||
"state_tax_rate": "",
|
"state_tax_rate": "",
|
||||||
"status": "Statut de l'emploi",
|
"status": "Statut de l'emploi",
|
||||||
"storage_payable": "Stockage / PVRT",
|
"storage_payable": "Stockage",
|
||||||
|
"tax_lbr_rt": "",
|
||||||
|
"tax_levies_rt": "",
|
||||||
|
"tax_paint_mat_rt": "",
|
||||||
"tax_registration_number": "",
|
"tax_registration_number": "",
|
||||||
|
"tax_shop_mat_rt": "",
|
||||||
|
"tax_str_rt": "",
|
||||||
|
"tax_sub_rt": "",
|
||||||
|
"tax_tow_rt": "",
|
||||||
"towing_payable": "Remorquage à payer",
|
"towing_payable": "Remorquage à payer",
|
||||||
"unitnumber": "Unité #",
|
"unitnumber": "Unité #",
|
||||||
"updated_at": "Mis à jour à",
|
"updated_at": "Mis à jour à",
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dlexpiry" SET NOT
|
||||||
|
NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dlexpiry" DROP NOT
|
||||||
|
NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dlnumber" SET NOT
|
||||||
|
NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dlnumber" DROP NOT
|
||||||
|
NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_addr1" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_addr1" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_city" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_city" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_state" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_state" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_zip" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_zip" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_ph1" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_ph1" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dob" SET NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "driver_dob" DROP NOT NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -207,13 +207,27 @@ function IsAdditionalCost(jobLine) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function CalculateAdditional(job) {
|
function CalculateAdditional(job) {
|
||||||
return job.joblines
|
let ret = job.joblines
|
||||||
.filter((jl) => !jl.removed && IsAdditionalCost(jl))
|
.filter((jl) => !jl.removed && IsAdditionalCost(jl))
|
||||||
.reduce((acc, val) => {
|
.reduce((acc, val) => {
|
||||||
return acc.add(
|
return acc.add(
|
||||||
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
Dinero({ amount: Math.round((val.act_price || 0) * 100) }).multiply(
|
||||||
|
val.part_qty || 1
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}, Dinero());
|
}, Dinero());
|
||||||
|
ret = ret
|
||||||
|
.add(
|
||||||
|
Dinero({
|
||||||
|
amount: Math.round((job.towing_payable || 0) * 100),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.add(
|
||||||
|
Dinero({
|
||||||
|
amount: Math.round((job.storage_payable || 0) * 100),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function CalculateTaxesTotals(job, otherTotals) {
|
function CalculateTaxesTotals(job, otherTotals) {
|
||||||
@@ -236,17 +250,18 @@ function CalculateTaxesTotals(job, otherTotals) {
|
|||||||
if (!!!val.tax_part || !!!val.part_type || IsAdditionalCost(val)) {
|
if (!!!val.tax_part || !!!val.part_type || IsAdditionalCost(val)) {
|
||||||
additionalItemsTax = additionalItemsTax.add(
|
additionalItemsTax = additionalItemsTax.add(
|
||||||
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
||||||
.multiply(val.part_qty || 0)
|
.multiply(val.part_qty || 1)
|
||||||
.percentage(
|
.percentage(
|
||||||
(job.parts_tax_rates &&
|
((job.parts_tax_rates &&
|
||||||
job.parts_tax_rates["PAN"] &&
|
job.parts_tax_rates["PAN"] &&
|
||||||
job.parts_tax_rates["PAN"].prt_tax_rt) * 100
|
job.parts_tax_rates["PAN"].prt_tax_rt) ||
|
||||||
|
0) * 100
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
statePartsTax = statePartsTax.add(
|
statePartsTax = statePartsTax.add(
|
||||||
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
||||||
.multiply(val.part_qty || 0)
|
.multiply(val.part_qty || 1)
|
||||||
.percentage(
|
.percentage(
|
||||||
(job.parts_tax_rates &&
|
(job.parts_tax_rates &&
|
||||||
job.parts_tax_rates[val.part_type] &&
|
job.parts_tax_rates[val.part_type] &&
|
||||||
@@ -288,7 +303,7 @@ function CalculateTaxesTotals(job, otherTotals) {
|
|||||||
other_customer_amount: Dinero({
|
other_customer_amount: Dinero({
|
||||||
amount: (job.other_amount_payable || 0) * 100,
|
amount: (job.other_amount_payable || 0) * 100,
|
||||||
}),
|
}),
|
||||||
dep_taxes: Dinero({ amount: job.depreciation_taxes || 0 }),
|
dep_taxes: Dinero({ amount: (job.depreciation_taxes || 0) * 100 }),
|
||||||
};
|
};
|
||||||
|
|
||||||
ret.custPayable.total = ret.custPayable.deductible
|
ret.custPayable.total = ret.custPayable.deductible
|
||||||
|
|||||||
Reference in New Issue
Block a user