Added duplicate without repair data IO-580

This commit is contained in:
Patrick Fic
2021-01-19 09:53:28 -08:00
parent 5a1eb37544
commit 79982a6c3f
6 changed files with 85 additions and 35 deletions

View File

@@ -19870,6 +19870,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>duplicatenolines</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>newcccontract</name> <name>newcccontract</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -145,28 +145,52 @@ export function JobsDetailHeaderActions({
{t("jobs.actions.addtoproduction")} {t("jobs.actions.addtoproduction")}
</Menu.Item> </Menu.Item>
)} )}
<Menu.SubMenu title={t("menus.jobsactions.duplicate")}>
<Menu.Item>
<Popconfirm
title={t("jobs.labels.duplicateconfirm")}
okText="Yes"
cancelText="No"
onClick={(e) => e.stopPropagation()}
onConfirm={() =>
DuplicateJob(
client,
job.id,
{ defaultOpenStatus: bodyshop.md_ro_statuses.default_imported },
(newJobId) => {
history.push(`/manage/jobs/${newJobId}`);
},
true
)
}
getPopupContainer={(trigger) => trigger.parentNode}
>
{t("menus.jobsactions.duplicate")}
</Popconfirm>
</Menu.Item>
<Menu.Item>
<Popconfirm
title={t("jobs.labels.duplicateconfirm")}
okText="Yes"
cancelText="No"
onClick={(e) => e.stopPropagation()}
onConfirm={() =>
DuplicateJob(
client,
job.id,
{ defaultOpenStatus: bodyshop.md_ro_statuses.default_imported },
(newJobId) => {
history.push(`/manage/jobs/${newJobId}`);
}
)
}
getPopupContainer={(trigger) => trigger.parentNode}
>
{t("menus.jobsactions.duplicatenolines")}
</Popconfirm>
</Menu.Item>
</Menu.SubMenu>
<Menu.Item key="duplicatejob">
<Popconfirm
title={t("jobs.labels.duplicateconfirm")}
okText="Yes"
cancelText="No"
onClick={(e) => e.stopPropagation()}
onConfirm={() =>
DuplicateJob(
client,
job.id,
{ defaultOpenStatus: bodyshop.md_ro_statuses.default_imported },
(newJobId) => {
history.push(`/manage/jobs/${newJobId}`);
}
)
}
getPopupContainer={(trigger) => trigger.parentNode}
>
{t("menus.jobsactions.duplicate")}
</Popconfirm>
</Menu.Item>
<Menu.Item <Menu.Item
key="postbills" key="postbills"
disabled={jobRO} disabled={jobRO}

View File

@@ -1,14 +1,15 @@
import { import _ from "lodash";
QUERY_ALL_JOB_FIELDS,
INSERT_NEW_JOB,
} from "../../graphql/jobs.queries";
import { logImEXEvent } from "../../firebase/firebase.utils"; import { logImEXEvent } from "../../firebase/firebase.utils";
import {
INSERT_NEW_JOB,
QUERY_ALL_JOB_FIELDS,
} from "../../graphql/jobs.queries";
export default function DuplicateJob( export default function DuplicateJob(
apolloClient, apolloClient,
jobId, jobId,
config, config,
completionCallback completionCallback,
keepJobLines = false
) { ) {
logImEXEvent("job_duplicate"); logImEXEvent("job_duplicate");
@@ -18,25 +19,26 @@ export default function DuplicateJob(
.query({ query: QUERY_ALL_JOB_FIELDS, variables: { id: jobId } }) .query({ query: QUERY_ALL_JOB_FIELDS, variables: { id: jobId } })
.then((res) => { .then((res) => {
const { jobs_by_pk: existingJob } = res.data; const { jobs_by_pk: existingJob } = res.data;
delete existingJob.__typename;
delete existingJob.id;
existingJob.date_estimated = new Date(); const newJob = _.cloneDeep(existingJob);
existingJob.status = defaultOpenStatus; delete newJob.__typename;
delete newJob.id;
newJob.date_estimated = new Date();
newJob.status = defaultOpenStatus;
const _tempLines = existingJob.joblines; const _tempLines = newJob.joblines;
_tempLines.forEach((line) => { _tempLines.forEach((line) => {
delete line.id; delete line.id;
delete line.__typename; delete line.__typename;
}); });
delete existingJob.joblines; delete newJob.joblines;
existingJob.joblines = { data: _tempLines }; newJob.joblines = keepJobLines ? { data: _tempLines } : null;
apolloClient apolloClient
.mutate({ .mutate({
mutation: INSERT_NEW_JOB, mutation: INSERT_NEW_JOB,
variables: { job: [existingJob] }, variables: { job: [newJob] },
}) })
.then((res2) => { .then((res2) => {
if (completionCallback) if (completionCallback)

View File

@@ -1199,6 +1199,7 @@
"admin": "Admin", "admin": "Admin",
"closejob": "Close Job", "closejob": "Close Job",
"duplicate": "Duplicate this Job", "duplicate": "Duplicate this Job",
"duplicatenolines": "Duplicate this Job without Repair Data",
"newcccontract": "Create Courtesy Car Contract" "newcccontract": "Create Courtesy Car Contract"
}, },
"jobsdetail": { "jobsdetail": {

View File

@@ -1199,6 +1199,7 @@
"admin": "", "admin": "",
"closejob": "", "closejob": "",
"duplicate": "", "duplicate": "",
"duplicatenolines": "",
"newcccontract": "" "newcccontract": ""
}, },
"jobsdetail": { "jobsdetail": {

View File

@@ -1199,6 +1199,7 @@
"admin": "", "admin": "",
"closejob": "", "closejob": "",
"duplicate": "", "duplicate": "",
"duplicatenolines": "",
"newcccontract": "" "newcccontract": ""
}, },
"jobsdetail": { "jobsdetail": {