diff --git a/src/components/molecules/close-date-display/close-date-display.molecule.jsx b/src/components/molecules/close-date-display/close-date-display.molecule.jsx index f2b80ac..ef9b716 100644 --- a/src/components/molecules/close-date-display/close-date-display.molecule.jsx +++ b/src/components/molecules/close-date-display/close-date-display.molecule.jsx @@ -5,9 +5,11 @@ import moment from "moment"; import React, { useState } from "react"; import { UPDATE_JOB } from "../../../graphql/jobs.queries"; import ipcTypes from "../../../ipc.types"; +import { CalculateVehicleAge } from "../../../ipc/ipc-estimate-utils"; import { DateFormat } from "../../../util/constants"; const { ipcRenderer } = window; -export default function CloseDateDisplayMolecule({ jobId, close_date }) { + +export default function CloseDateDisplayMolecule({ job, jobId, close_date }) { const [editMode, setEditMode] = useState(false); const [value, setValue] = useState(moment(close_date)); const [loading, setLoading] = useState(false); @@ -19,8 +21,17 @@ export default function CloseDateDisplayMolecule({ jobId, close_date }) { }); setLoading(true); setValue(newDate); + + //Recalculate vehicle age. + const result = await updateJob({ - variables: { jobId: jobId, job: { close_date: newDate } }, + variables: { + jobId: jobId, + job: { + close_date: newDate, + v_age: CalculateVehicleAge({ ...job, close_date: newDate }), + }, + }, }); if (!result.errors) { diff --git a/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx b/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx index 4ad8981..43601a2 100644 --- a/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx +++ b/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx @@ -48,6 +48,7 @@ export default function JobsDetailDescriptionMolecule({ loading, job }) { } > diff --git a/src/graphql/jobs.queries.js b/src/graphql/jobs.queries.js index 6c35e10..3025ddd 100644 --- a/src/graphql/jobs.queries.js +++ b/src/graphql/jobs.queries.js @@ -151,6 +151,7 @@ export const UPDATE_JOB = gql` ro_number updated_at close_date + v_age joblines(order_by: { unq_seq: asc }) { id act_price diff --git a/src/ipc/ipc-estimate-utils.js b/src/ipc/ipc-estimate-utils.js index 3c85b23..3c9ab58 100644 --- a/src/ipc/ipc-estimate-utils.js +++ b/src/ipc/ipc-estimate-utils.js @@ -12,21 +12,28 @@ import { QUERY_GROUPS_BY_MAKE_TYPE } from "../graphql/veh_group.queries"; import { store } from "../redux/store"; const { logger } = window; +export function CalculateVehicleAge(job) { + const parsedYr = parseInt(job.v_model_yr); + + let ret = + moment(job.close_date || new Date()).year() - + (parsedYr >= 0 ? 2000 + parsedYr : 1900 + parsedYr); + + if (ret < 0) ret = 0; + + return ret; +} + export async function UpsertEstimate(job) { const shopId = store.getState().user.bodyshop.id; logger.info("Beginning Upserting job from Renderer."); - const parsedYr = parseInt(job.v_model_yr); job = { ...job, group: await DetermineVehicleGroup(job), - v_age: - moment(job.loss_date).year() - - (parsedYr >= 0 ? 2000 + parsedYr : 1900 + parsedYr), + v_age: CalculateVehicleAge(job), }; - if (job.v_age < 0) job.v_age = 0; - const existingJobs = await client.query({ query: QUERY_JOB_BY_CLM_NO, variables: { clm_no: job.clm_no },