Invert job dupe logic IO-701
This commit is contained in:
@@ -1,10 +1,12 @@
|
|||||||
|
import Axios from "axios";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import { logImEXEvent } from "../../firebase/firebase.utils";
|
import { logImEXEvent } from "../../firebase/firebase.utils";
|
||||||
import {
|
import {
|
||||||
INSERT_NEW_JOB,
|
INSERT_NEW_JOB,
|
||||||
QUERY_ALL_JOB_FIELDS,
|
QUERY_ALL_JOB_FIELDS,
|
||||||
} from "../../graphql/jobs.queries";
|
} from "../../graphql/jobs.queries";
|
||||||
export default function DuplicateJob(
|
|
||||||
|
export default async function DuplicateJob(
|
||||||
apolloClient,
|
apolloClient,
|
||||||
jobId,
|
jobId,
|
||||||
config,
|
config,
|
||||||
@@ -15,85 +17,60 @@ export default function DuplicateJob(
|
|||||||
|
|
||||||
const { defaultOpenStatus } = config;
|
const { defaultOpenStatus } = config;
|
||||||
//get a list of all fields on the job
|
//get a list of all fields on the job
|
||||||
|
const res = await apolloClient.query({
|
||||||
|
query: QUERY_ALL_JOB_FIELDS,
|
||||||
|
variables: { id: jobId },
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("res", res);
|
||||||
|
const { jobs_by_pk: existingJob } = res.data;
|
||||||
|
|
||||||
|
const newJob = {
|
||||||
|
date_estimated: new Date(),
|
||||||
|
shopid: existingJob.shopid,
|
||||||
|
status: defaultOpenStatus,
|
||||||
|
ownerid: existingJob.ownerid,
|
||||||
|
ownr_fn: existingJob.ownr_fn,
|
||||||
|
ownr_ln: existingJob.ownr_ln,
|
||||||
|
ownr_co_nm: existingJob.ownr_co_nm,
|
||||||
|
ownr_addr1: existingJob.ownr_addr1,
|
||||||
|
ownr_addr2: existingJob.ownr_addr2,
|
||||||
|
ownr_st: existingJob.ownr_st,
|
||||||
|
ownr_zip: existingJob.ownr_zip,
|
||||||
|
ownr_ctry: existingJob.ownr_ctry,
|
||||||
|
|
||||||
|
ownr_ph1: existingJob.ownr_ph1,
|
||||||
|
vehicleid: existingJob.vehicleid,
|
||||||
|
v_vin: existingJob.v_vin,
|
||||||
|
v_make_desc: existingJob.v_make_desc,
|
||||||
|
v_model_desc: existingJob.v_model_desc,
|
||||||
|
v_model_yr: existingJob.v_model_yr,
|
||||||
|
};
|
||||||
|
|
||||||
|
const _tempLines = _.cloneDeep(existingJob.joblines);
|
||||||
|
_tempLines.forEach((line) => {
|
||||||
|
delete line.id;
|
||||||
|
delete line.__typename;
|
||||||
|
line.manual_line = true;
|
||||||
|
});
|
||||||
|
newJob.joblines = keepJobLines ? _tempLines : [];
|
||||||
|
newJob.job_totals = (
|
||||||
|
await Axios.post("/job/totals", {
|
||||||
|
job: newJob,
|
||||||
|
})
|
||||||
|
).data;
|
||||||
|
|
||||||
|
delete newJob.joblines;
|
||||||
|
newJob.joblines = keepJobLines ? { data: _tempLines } : null;
|
||||||
|
|
||||||
apolloClient
|
apolloClient
|
||||||
.query({ query: QUERY_ALL_JOB_FIELDS, variables: { id: jobId } })
|
.mutate({
|
||||||
.then((res) => {
|
mutation: INSERT_NEW_JOB,
|
||||||
const { jobs_by_pk: existingJob } = res.data;
|
variables: { job: [newJob] },
|
||||||
|
})
|
||||||
const newJob = _.cloneDeep(existingJob);
|
.then((res2) => {
|
||||||
delete newJob.__typename;
|
if (completionCallback)
|
||||||
delete newJob.id;
|
completionCallback(res2.data.insert_jobs.returning[0].id);
|
||||||
newJob.date_estimated = new Date();
|
|
||||||
newJob.status = defaultOpenStatus;
|
|
||||||
delete newJob.ins_co_id;
|
|
||||||
delete newJob.ins_co_nm;
|
|
||||||
delete newJob.ins_addr1;
|
|
||||||
delete newJob.ins_addr2;
|
|
||||||
delete newJob.ins_city;
|
|
||||||
delete newJob.ins_st;
|
|
||||||
delete newJob.ins_zip;
|
|
||||||
delete newJob.ins_ctry;
|
|
||||||
delete newJob.ins_ph1;
|
|
||||||
delete newJob.ins_ph2;
|
|
||||||
delete newJob.ins_ct_ln;
|
|
||||||
delete newJob.ins_ct_fn;
|
|
||||||
delete newJob.ins_ct_ph;
|
|
||||||
delete newJob.ins_ea;
|
|
||||||
delete newJob.policy_memo;
|
|
||||||
delete newJob.clm_no;
|
|
||||||
delete newJob.ro_number;
|
|
||||||
delete newJob.date_estimated;
|
|
||||||
delete newJob.date_scheduled;
|
|
||||||
delete newJob.date_invoiced;
|
|
||||||
|
|
||||||
delete newJob.date_exported;
|
|
||||||
delete newJob.date_delivered;
|
|
||||||
delete newJob.scheduled_completion;
|
|
||||||
delete newJob.actual_completion;
|
|
||||||
delete newJob.clm_total;
|
|
||||||
delete newJob.owner_owing;
|
|
||||||
delete newJob.converted;
|
|
||||||
delete newJob.loss_type;
|
|
||||||
delete newJob.production_vars;
|
|
||||||
delete newJob.intakechecklist;
|
|
||||||
delete newJob.invoice_allocation;
|
|
||||||
delete newJob.kanbanparent;
|
|
||||||
delete newJob.employee_body;
|
|
||||||
delete newJob.employee_refinish;
|
|
||||||
delete newJob.employee_prep;
|
|
||||||
delete newJob.deliverchecklist;
|
|
||||||
delete newJob.lbr_adjustments;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.ded_amt;
|
|
||||||
delete newJob.ded_status;
|
|
||||||
delete newJob.asgn_date;
|
|
||||||
delete newJob.policy_no;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
delete newJob.alt_transport;
|
|
||||||
|
|
||||||
const _tempLines = newJob.joblines;
|
|
||||||
_tempLines.forEach((line) => {
|
|
||||||
delete line.id;
|
|
||||||
delete line.__typename;
|
|
||||||
line.manual_line = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
delete newJob.joblines;
|
|
||||||
newJob.joblines = keepJobLines ? { data: _tempLines } : null;
|
|
||||||
|
|
||||||
apolloClient
|
|
||||||
.mutate({
|
|
||||||
mutation: INSERT_NEW_JOB,
|
|
||||||
variables: { job: [newJob] },
|
|
||||||
})
|
|
||||||
.then((res2) => {
|
|
||||||
if (completionCallback)
|
|
||||||
completionCallback(res2.data.insert_jobs.returning[0].id);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//insert the new job. call the callback with the returned ID when done.
|
//insert the new job. call the callback with the returned ID when done.
|
||||||
|
|||||||
@@ -263,9 +263,10 @@ function CalculateTaxesTotals(job, otherTotals) {
|
|||||||
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
Dinero({ amount: Math.round((val.act_price || 0) * 100) })
|
||||||
.multiply(val.part_qty || 1)
|
.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] &&
|
||||||
job.parts_tax_rates[val.part_type].prt_tax_rt) * 100
|
job.parts_tax_rates[val.part_type].prt_tax_rt) ||
|
||||||
|
0) * 100
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user