Added conversion of cc contract to RO. BOD-234

This commit is contained in:
Patrick Fic
2020-08-03 13:17:08 -07:00
parent 0dbe56d36c
commit 3a8b4ddf5a
11 changed files with 803 additions and 50 deletions

37
.vscode/launch.json vendored
View File

@@ -1,20 +1,19 @@
{ {
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{
{ "name": "Chrome",
"name": "Chrome", "type": "chrome",
"type": "chrome", "request": "launch",
"request": "launch", "url": "http://localhost:3000",
"url": "http://localhost:3000", "webRoot": "${workspaceRoot}/src"
"webRoot": "${workspaceRoot}/src" },
{
},{ "name": "Yarn Dev Server",
"name": "Yarn Dev Server", "type": "node",
"type": "node", "request": "launch",
"request": "launch", "runtimeExecutable": "yarn",
"runtimeExecutable": "yarn", "runtimeArgs": ["dev"]
"runtimeArgs": ["dev"] }
} ]
] }
}

View File

@@ -3125,6 +3125,27 @@
<folder_node> <folder_node>
<name>actions</name> <name>actions</name>
<children> <children>
<concept_node>
<name>convertoro</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>decodelicense</name> <name>decodelicense</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -3959,6 +3980,53 @@
<folder_node> <folder_node>
<name>labels</name> <name>labels</name>
<children> <children>
<folder_node>
<name>convertform</name>
<children>
<concept_node>
<name>applycleanupcharge</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>refuelqty</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>
</children>
</folder_node>
<concept_node> <concept_node>
<name>correctdataonform</name> <name>correctdataonform</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -3980,6 +4048,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>noteconvertedfrom</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>waitingforscan</name> <name>waitingforscan</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -9029,6 +9118,111 @@
<folder_node> <folder_node>
<name>part_types</name> <name>part_types</name>
<children> <children>
<concept_node>
<name>CCC</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>CCD</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>CCDR</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>CCF</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>CCM</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>PAA</name> <name>PAA</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -10221,6 +10415,111 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>ccc</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>ccd</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>ccdr</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>ccf</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>ccm</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>cieca_id</name> <name>cieca_id</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -13459,6 +13758,74 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<folder_node>
<name>deductible</name>
<children>
<concept_node>
<name>no</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>waived</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>yes</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>
</children>
</folder_node>
<concept_node> <concept_node>
<name>difference</name> <name>difference</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -18660,6 +19027,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>date</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>painthrs</name> <name>painthrs</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -0,0 +1,270 @@
import React, { useState } from "react";
import { Button, notification, Popover, Radio, Form, InputNumber } from "antd";
import { useTranslation } from "react-i18next";
import { useMutation } from "react-apollo";
import { INSERT_NEW_JOB } from "../../graphql/jobs.queries";
import moment from "moment";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import {
selectBodyshop,
selectCurrentUser,
} from "../../redux/user/user.selectors";
import { useHistory } from "react-router-dom";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop,
currentUser: selectCurrentUser,
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export function ContractConvertToRo({ bodyshop, currentUser, contract }) {
const { t } = useTranslation();
const [visible, setVisible] = useState(false);
const [loading, setLoading] = useState(false);
const [insertJob] = useMutation(INSERT_NEW_JOB);
const history = useHistory();
const handleFinish = async (values) => {
setLoading(true);
const contractLength = moment(contract.actualreturn).diff(
moment(contract.start),
"days"
);
const billingLines = [
{
unq_seq: 1,
line_no: 1,
line_ref: 1,
line_desc: t("contracts.fields.dailyrate"),
db_price: contract.dailyrate,
act_price: contract.dailyrate,
part_qty: contractLength,
part_type: "CCDR",
tax_part: true,
mod_lb_hrs: 0,
// mod_lbr_ty: "PAL",
},
];
const mileageDiff =
contract.kmend - contract.kmstart - contract.dailyfreekm * contractLength;
if (mileageDiff > 0) {
billingLines.push({
unq_seq: 2,
line_no: 2,
line_ref: 2,
line_desc: "Fuel Surcharge",
db_price: contract.excesskmrate,
act_price: contract.excesskmrate,
part_type: "CCM",
part_qty: mileageDiff,
tax_part: true,
mod_lb_hrs: 0,
});
}
if (values.refuelqty > 0) {
billingLines.push({
unq_seq: 3,
line_no: 3,
line_ref: 3,
line_desc: t("contracts.fields.refuelcharge"),
db_price: contract.refuelcharge,
act_price: contract.refuelcharge,
part_qty: values.refuelqty,
part_type: "CCF",
tax_part: true,
mod_lb_hrs: 0,
});
}
if (values.applyCleanupCharge) {
billingLines.push({
unq_seq: 4,
line_no: 4,
line_ref: 4,
line_desc: t("contracts.fields.cleanupcharge"),
db_price: contract.cleanupcharge,
act_price: contract.cleanupcharge,
part_qty: 1,
part_type: "CCC",
tax_part: true,
mod_lb_hrs: 0,
});
}
if (contract.damagewaiver) {
//Add for cleanup fee.
billingLines.push({
unq_seq: 5,
line_no: 5,
line_ref: 5,
line_desc: t("contracts.fields.damagewaiver"),
db_price: contract.damagewaiver,
act_price: contract.damagewaiver,
part_type: "CCD",
part_qty: 1,
tax_part: true,
mod_lb_hrs: 0,
});
}
const newJob = {
// converted: true,
shopid: bodyshop.id,
ownerid: contract.job.ownerid,
vehicleid: contract.job.vehicleid,
federal_tax_rate: bodyshop.invoice_tax_rates.federal_tax_rate / 100,
state_tax_rate: bodyshop.invoice_tax_rates.state_tax_rate / 100,
local_tax_rate: bodyshop.invoice_tax_rates.local_tax_rate / 100,
clm_no: `${contract.job.clm_no}-CC`,
clm_total: 1234, //TODO
ownr_fn: contract.job.owner.ownr_fn,
ownr_ln: contract.job.owner.ownr_ln,
ownr_co_nm: contract.job.owner.ownr_co_nm,
ownr_ph1: contract.job.owner.ownr_ph1,
ownr_ea: contract.job.owner.ownr_ea,
v_model_desc: contract.job.vehicle.v_model_desc,
v_model_yr: contract.job.vehicle.v_model_yr,
v_make_desc: contract.job.vehicle.v_make_desc,
v_vin: contract.job.vehicle.v_vin,
status: bodyshop.md_ro_statuses.default_completed,
notes: {
data: [
{
text: t("contracts.labels.noteconvertedfrom", {
agreementnumber: contract.agreementnumber,
}),
created_by: currentUser.email,
},
],
},
joblines: {
data: billingLines,
},
parts_tax_rates: {
CCDR: {
prt_type: "CCDR",
prt_discp: 0,
prt_mktyp: false,
prt_mkupp: 0,
prt_tax_in: true,
prt_tax_rt: 0.07,
},
CCF: {
prt_type: "CCF",
prt_discp: 0,
prt_mktyp: false,
prt_mkupp: 0,
prt_tax_in: true,
prt_tax_rt: 0.07,
},
CCM: {
prt_type: "CCM",
prt_discp: 0,
prt_mktyp: false,
prt_mkupp: 0,
prt_tax_in: true,
prt_tax_rt: 0.07,
},
CCC: {
prt_type: "CCC",
prt_discp: 0,
prt_mktyp: false,
prt_mkupp: 0,
prt_tax_in: true,
prt_tax_rt: 0.07,
},
CCD: {
prt_type: "CCD",
prt_discp: 0,
prt_mktyp: false,
prt_mkupp: 0,
prt_tax_in: true,
prt_tax_rt: 0.07,
},
},
};
const result = await insertJob({
variables: { job: [newJob] },
// refetchQueries: ["GET_JOB_BY_PK"],
// awaitRefetchQueries: true,
});
if (!!result.errors) {
notification["error"]({
message: t("jobs.errors.inserting", {
message: JSON.stringify(result.errors),
}),
});
} else {
notification["success"]({
message: t("jobs.successes.created"),
onClick: () => {
history.push(
`/manage/jobs/${result.data.insert_jobs.returning[0].id}`
);
},
});
}
setVisible(false);
setLoading(false);
};
const popContent = (
<div>
<Form onFinish={handleFinish}>
<Form.Item
label={t("contracts.labels.convertform.applycleanupcharge")}
rules={[
{
required: true,
message: t("general.validation.required"),
},
]}
name={"applyCleanupCharge"}
>
<Radio.Group>
<Radio value={true}>{t("general.labels.yes")}</Radio>
<Radio value={false}>{t("general.labels.no")}</Radio>
</Radio.Group>
</Form.Item>
<Form.Item
label={t("contracts.labels.convertform.refuelqty")}
rules={[
{
required: true,
message: t("general.validation.required"),
},
]}
name={"refuelqty"}
>
<InputNumber precision={0} min={0} />
</Form.Item>
<Button type="primary" htmlType="submit">
{t("contracts.actions.convertoro")}
</Button>
<Button onClick={() => setVisible(false)}>
{t("general.actions.close")}
</Button>
</Form>
</div>
);
return (
<div>
<Popover content={popContent} visible={visible}>
<Button onClick={() => setVisible(true)} loading={loading}>
{t("contracts.actions.convertoro")}
</Button>
</Popover>
</div>
);
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(ContractConvertToRo);

View File

@@ -36,7 +36,8 @@ function CalculateTaxesTotals(job, otherTotals) {
return acc; return acc;
} }
}, Dinero({ amount: 0 })); }, Dinero({ amount: 0 }));
console.log("job.federal_tax_rate ", job.federal_tax_rate);
console.log(subtotal.percentage((job.federal_tax_rate || 0) * 100));
let ret = { let ret = {
subtotal: subtotal, subtotal: subtotal,
federal_tax: subtotal.percentage((job.federal_tax_rate || 0) * 100), federal_tax: subtotal.percentage((job.federal_tax_rate || 0) * 100),
@@ -219,15 +220,28 @@ function CalculatePartsTotals(jobLines) {
const ret = jobLines.reduce( const ret = jobLines.reduce(
(acc, value) => { (acc, value) => {
switch (value.part_type) { switch (value.part_type) {
case "PAA": case "PAS":
case "PAC": case "PASL":
case "PAG": return {
case "PAL": ...acc,
case "PAM": sublets: {
case "PAN": ...acc.sublets,
case "PAO": subtotal: acc.sublets.subtotal.add(
case "PAP": Dinero({ amount: Math.round(value.act_price * 100) })
case "PAR": ),
//TODO Add Adjustments in
},
};
// case "PAA":
// case "PAC":
// case "PAG":
// case "PAL":
// case "PAM":
// case "PAN":
// case "PAO":
// case "PAP":
// case "PAR":
default:
return { return {
...acc, ...acc,
parts: { parts: {
@@ -258,20 +272,8 @@ function CalculatePartsTotals(jobLines) {
//TODO Add Adjustments in //TODO Add Adjustments in
}, },
}; };
case "PAS": // default:
case "PASL": // return acc;
return {
...acc,
sublets: {
...acc.sublets,
subtotal: acc.sublets.subtotal.add(
Dinero({ amount: Math.round(value.act_price * 100) })
),
//TODO Add Adjustments in
},
};
default:
return acc;
} }
}, },
{ {

View File

@@ -90,7 +90,6 @@ export function JobsAvailableContainer({
notification["success"]({ notification["success"]({
message: t("jobs.successes.created"), message: t("jobs.successes.created"),
onClick: () => { onClick: () => {
console.log("r", r);
history.push( history.push(
`/manage/jobs/${r.data.insert_jobs.returning[0].id}` `/manage/jobs/${r.data.insert_jobs.returning[0].id}`
); );
@@ -121,11 +120,12 @@ export function JobsAvailableContainer({
setSelectedOwner(null); setSelectedOwner(null);
}; };
if (error) return <AlertComponent type='error' message={error.message} />; if (error) return <AlertComponent type="error" message={error.message} />;
return ( return (
<LoadingSpinner <LoadingSpinner
loading={insertLoading} loading={insertLoading}
message={t("jobs.labels.creating_new_job")}> message={t("jobs.labels.creating_new_job")}
>
<JobsAvailableComponent <JobsAvailableComponent
loading={loading} loading={loading}
data={data} data={data}

View File

@@ -1,4 +1,4 @@
import { Col, Form, Input, Row, Divider } from "antd"; import { Col, Form, Input, Row, Divider, Select } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import CurrencyInput from "../form-items-formatted/currency-form-item.component";
@@ -80,7 +80,17 @@ export function JobsDetailFinancials({ job, bodyshop }) {
<Col {...colSpan}> <Col {...colSpan}>
<FormRow header={t("jobs.forms.dedinfo")}> <FormRow header={t("jobs.forms.dedinfo")}>
<Form.Item label={t("jobs.fields.ded_status")} name="ded_status"> <Form.Item label={t("jobs.fields.ded_status")} name="ded_status">
<Input /> <Select>
<Select.Option value="W">
{t("jobs.labels.deductible.waived")}
</Select.Option>
<Select.Option value="Y">
{t("jobs.labels.deductible.yes")}
</Select.Option>
<Select.Option value="N">
{t("jobs.labels.deductible.no")}
</Select.Option>
</Select>
</Form.Item> </Form.Item>
<Form.Item label={t("jobs.fields.ded_amt")} name="ded_amt"> <Form.Item label={t("jobs.fields.ded_amt")} name="ded_amt">
<CurrencyInput /> <CurrencyInput />

View File

@@ -88,7 +88,23 @@ export const QUERY_CONTRACT_BY_PK = gql`
ownr_fn ownr_fn
ownr_ln ownr_ln
ownr_co_nm ownr_co_nm
clm_no
scheduled_completion scheduled_completion
ownerid
vehicleid
owner {
ownr_fn
ownr_ln
id
ownr_co_nm
}
vehicle {
id
v_make_desc
v_model_desc
v_model_yr
v_vin
}
} }
kmend kmend
kmstart kmstart

View File

@@ -6,6 +6,7 @@ import ContractCourtesyCarBlock from "../../components/contract-courtesy-car-blo
import ContractFormComponent from "../../components/contract-form/contract-form.component"; import ContractFormComponent from "../../components/contract-form/contract-form.component";
import ContractJobBlock from "../../components/contract-job-block/contract-job-block.component"; import ContractJobBlock from "../../components/contract-job-block/contract-job-block.component";
import { setModalContext } from "../../redux/modals/modals.actions"; import { setModalContext } from "../../redux/modals/modals.actions";
import ContractConvertToRo from "../../components/contract-convert-to-ro/contract-convert-to-ro.component";
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
setCourtesyCarReturnModalContext: (context) => setCourtesyCarReturnModalContext: (context) =>
@@ -18,7 +19,7 @@ export function ContractDetailPage({
courtesyCar, courtesyCar,
setCourtesyCarReturnModalContext, setCourtesyCarReturnModalContext,
refetch, refetch,
form form,
}) { }) {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
@@ -47,6 +48,7 @@ export function ContractDetailPage({
> >
{t("courtesycars.actions.return")} {t("courtesycars.actions.return")}
</Button> </Button>
<ContractConvertToRo contract={contract} />
</Row> </Row>
<Row> <Row>
@@ -55,7 +57,7 @@ export function ContractDetailPage({
<ContractCourtesyCarBlock courtesyCar={courtesyCar} /> <ContractCourtesyCarBlock courtesyCar={courtesyCar} />
</Col> </Col>
<Col span={18} offset={1}> <Col span={18} offset={1}>
<ContractFormComponent form={form}/> <ContractFormComponent form={form} />
</Col> </Col>
</Row> </Row>
</div> </div>

View File

@@ -199,6 +199,7 @@
}, },
"contracts": { "contracts": {
"actions": { "actions": {
"convertoro": "Convert to RO",
"decodelicense": "Decode License", "decodelicense": "Decode License",
"senddltoform": "Insert Driver's License Information" "senddltoform": "Insert Driver's License Information"
}, },
@@ -244,7 +245,12 @@
"status": "Status" "status": "Status"
}, },
"labels": { "labels": {
"convertform": {
"applycleanupcharge": "Apply cleanup charge?",
"refuelqty": "Refuel qty.?"
},
"correctdataonform": "Please review the information above. If any of it is not correct, you can fix it later.", "correctdataonform": "Please review the information above. If any of it is not correct, you can fix it later.",
"noteconvertedfrom": "R.O. created from converted Courtesy Car Contract {{agreementnumber}}.",
"waitingforscan": "Please scan driver's license barcode..." "waitingforscan": "Please scan driver's license barcode..."
}, },
"status": { "status": {
@@ -592,6 +598,11 @@
"part_qty": "Qty.", "part_qty": "Qty.",
"part_type": "Part Type", "part_type": "Part Type",
"part_types": { "part_types": {
"CCC": "CC Cleaning",
"CCD": "CC Damage Waiver",
"CCDR": "CC Daily Rate",
"CCF": "CC Refuel",
"CCM": "CC Mileage",
"PAA": "Aftermarket", "PAA": "Aftermarket",
"PAE": "Existing", "PAE": "Existing",
"PAL": "LKQ", "PAL": "LKQ",
@@ -662,6 +673,11 @@
"actual_delivery": "Actual Delivery", "actual_delivery": "Actual Delivery",
"actual_in": "Actual In", "actual_in": "Actual In",
"adjustment_bottom_line": "Adjustments", "adjustment_bottom_line": "Adjustments",
"ccc": "CC Cleaning",
"ccd": "CC Damage Waiver",
"ccdr": "CC Daily Rate",
"ccf": "CC Refuel",
"ccm": "CC Mileage",
"cieca_id": "CIECA ID", "cieca_id": "CIECA ID",
"claim_total": "Claim Total", "claim_total": "Claim Total",
"clm_no": "Claim #", "clm_no": "Claim #",
@@ -825,6 +841,11 @@
"vehicleinfo": "Vehicle Info" "vehicleinfo": "Vehicle Info"
}, },
"creating_new_job": "Creating new job...", "creating_new_job": "Creating new job...",
"deductible": {
"no": "No",
"waived": "Waived",
"yes": "Yes"
},
"difference": "Difference", "difference": "Difference",
"documents": "Documents", "documents": "Documents",
"duplicateconfirm": "Are you sure you want to duplicate this job? Some elements of this job will not be duplicated.", "duplicateconfirm": "Are you sure you want to duplicate this job? Some elements of this job will not be duplicated.",
@@ -1159,6 +1180,7 @@
}, },
"fields": { "fields": {
"bodyhrs": "Body Hours", "bodyhrs": "Body Hours",
"date": "Date",
"painthrs": "Paint Hours" "painthrs": "Paint Hours"
}, },
"labels": { "labels": {

View File

@@ -199,6 +199,7 @@
}, },
"contracts": { "contracts": {
"actions": { "actions": {
"convertoro": "",
"decodelicense": "", "decodelicense": "",
"senddltoform": "" "senddltoform": ""
}, },
@@ -244,7 +245,12 @@
"status": "" "status": ""
}, },
"labels": { "labels": {
"convertform": {
"applycleanupcharge": "",
"refuelqty": ""
},
"correctdataonform": "", "correctdataonform": "",
"noteconvertedfrom": "",
"waitingforscan": "" "waitingforscan": ""
}, },
"status": { "status": {
@@ -592,6 +598,11 @@
"part_qty": "", "part_qty": "",
"part_type": "Tipo de parte", "part_type": "Tipo de parte",
"part_types": { "part_types": {
"CCC": "",
"CCD": "",
"CCDR": "",
"CCF": "",
"CCM": "",
"PAA": "", "PAA": "",
"PAE": "", "PAE": "",
"PAL": "", "PAL": "",
@@ -662,6 +673,11 @@
"actual_delivery": "Entrega real", "actual_delivery": "Entrega real",
"actual_in": "Real en", "actual_in": "Real en",
"adjustment_bottom_line": "Ajustes", "adjustment_bottom_line": "Ajustes",
"ccc": "",
"ccd": "",
"ccdr": "",
"ccf": "",
"ccm": "",
"cieca_id": "CIECA ID", "cieca_id": "CIECA ID",
"claim_total": "Reclamar total", "claim_total": "Reclamar total",
"clm_no": "Reclamación #", "clm_no": "Reclamación #",
@@ -825,6 +841,11 @@
"vehicleinfo": "" "vehicleinfo": ""
}, },
"creating_new_job": "Creando nuevo trabajo ...", "creating_new_job": "Creando nuevo trabajo ...",
"deductible": {
"no": "",
"waived": "",
"yes": ""
},
"difference": "", "difference": "",
"documents": "documentos", "documents": "documentos",
"duplicateconfirm": "", "duplicateconfirm": "",
@@ -1159,6 +1180,7 @@
}, },
"fields": { "fields": {
"bodyhrs": "", "bodyhrs": "",
"date": "",
"painthrs": "" "painthrs": ""
}, },
"labels": { "labels": {

View File

@@ -199,6 +199,7 @@
}, },
"contracts": { "contracts": {
"actions": { "actions": {
"convertoro": "",
"decodelicense": "", "decodelicense": "",
"senddltoform": "" "senddltoform": ""
}, },
@@ -244,7 +245,12 @@
"status": "" "status": ""
}, },
"labels": { "labels": {
"convertform": {
"applycleanupcharge": "",
"refuelqty": ""
},
"correctdataonform": "", "correctdataonform": "",
"noteconvertedfrom": "",
"waitingforscan": "" "waitingforscan": ""
}, },
"status": { "status": {
@@ -592,6 +598,11 @@
"part_qty": "", "part_qty": "",
"part_type": "Type de pièce", "part_type": "Type de pièce",
"part_types": { "part_types": {
"CCC": "",
"CCD": "",
"CCDR": "",
"CCF": "",
"CCM": "",
"PAA": "", "PAA": "",
"PAE": "", "PAE": "",
"PAL": "", "PAL": "",
@@ -662,6 +673,11 @@
"actual_delivery": "Livraison réelle", "actual_delivery": "Livraison réelle",
"actual_in": "En réel", "actual_in": "En réel",
"adjustment_bottom_line": "Ajustements", "adjustment_bottom_line": "Ajustements",
"ccc": "",
"ccd": "",
"ccdr": "",
"ccf": "",
"ccm": "",
"cieca_id": "CIECA ID", "cieca_id": "CIECA ID",
"claim_total": "Total réclamation", "claim_total": "Total réclamation",
"clm_no": "Prétendre #", "clm_no": "Prétendre #",
@@ -825,6 +841,11 @@
"vehicleinfo": "" "vehicleinfo": ""
}, },
"creating_new_job": "Création d'un nouvel emploi ...", "creating_new_job": "Création d'un nouvel emploi ...",
"deductible": {
"no": "",
"waived": "",
"yes": ""
},
"difference": "", "difference": "",
"documents": "Les documents", "documents": "Les documents",
"duplicateconfirm": "", "duplicateconfirm": "",
@@ -1159,6 +1180,7 @@
}, },
"fields": { "fields": {
"bodyhrs": "", "bodyhrs": "",
"date": "",
"painthrs": "" "painthrs": ""
}, },
"labels": { "labels": {