WIP Transfer.

This commit is contained in:
Patrick Fic
2020-09-21 14:40:16 -07:00
parent cb337b557c
commit 35650cec24
3 changed files with 44 additions and 27 deletions

View File

@@ -45,6 +45,23 @@ export function ScheduleJobModalComponent({
} }
}; };
const handleDateBlur = () => {
const values = form.getFieldsValue();
if (lbrHrsData) {
const totalHours =
lbrHrsData.jobs_by_pk.labhrs.aggregate.sum.mod_lb_hrs +
lbrHrsData.jobs_by_pk.larhrs.aggregate.sum.mod_lb_hrs;
if (values.start && !values.scheduled_completion)
form.setFieldsValue({
scheduled_completion: moment(values.start).businessAdd(
totalHours / bodyshop.target_touchtime,
"days"
),
});
}
};
//TODO Existing appointments list only refreshes sometimes after modal close. May have to do with the container class. //TODO Existing appointments list only refreshes sometimes after modal close. May have to do with the container class.
return ( return (
<Row gutter={[32, 32]}> <Row gutter={[32, 32]}>
@@ -60,24 +77,7 @@ export function ScheduleJobModalComponent({
}, },
]} ]}
> >
<DateTimePicker <DateTimePicker onBlur={handleDateBlur} />
onBlur={() => {
const values = form.getFieldsValue();
if (lbrHrsData) {
const totalHours =
lbrHrsData.jobs_by_pk.labhrs.aggregate.sum.mod_lb_hrs +
lbrHrsData.jobs_by_pk.larhrs.aggregate.sum.mod_lb_hrs;
if (values.start && !values.scheduled_completion)
form.setFieldsValue({
scheduled_completion: moment(values.start).businessAdd(
totalHours / bodyshop.target_touchtime,
"days"
),
});
}
}}
/>
</Form.Item> </Form.Item>
<Button onClick={handleAuto} loading={loading}> <Button onClick={handleAuto} loading={loading}>
{t("appointments.actions.smartscheduling")} {t("appointments.actions.smartscheduling")}
@@ -89,6 +89,7 @@ export function ScheduleJobModalComponent({
key={idx} key={idx}
onClick={() => { onClick={() => {
form.setFieldsValue({ start: new moment(d).add(8, "hours") }); form.setFieldsValue({ start: new moment(d).add(8, "hours") });
handleDateBlur();
}} }}
> >
<DateFormatter>{d}</DateFormatter> <DateFormatter>{d}</DateFormatter>

View File

@@ -184,6 +184,7 @@ query QUERY_UPCOMING_APPOINTMENTS($now: timestamptz!, $jobId: uuid!) {
jobs_by_pk(id: $jobId) { jobs_by_pk(id: $jobId) {
bodyshop { bodyshop {
ssbuckets ssbuckets
target_touchtime
} }
jobhrs: joblines_aggregate { jobhrs: joblines_aggregate {
aggregate { aggregate {
@@ -207,13 +208,26 @@ query QUERY_UPCOMING_APPOINTMENTS($now: timestamptz!, $jobId: uuid!) {
} }
} }
} }
productionview { jobs(where: {inproduction: {_eq: true}}) {
id id
labhrs
larhrs
scheduled_completion scheduled_completion
labhrs: joblines_aggregate(where: {mod_lbr_ty: {_eq: "LAB"}}) {
aggregate {
sum {
mod_lb_hrs
}
}
}
larhrs: joblines_aggregate(where: {mod_lbr_ty: {_eq: "LAR"}}) {
aggregate {
sum {
mod_lb_hrs
}
}
}
} }
} `; }
`;
exports.QUERY_EMPLOYEE_PIN = `query QUERY_EMPLOYEE_PIN($shopId: uuid!, $employeeId: String!) { exports.QUERY_EMPLOYEE_PIN = `query QUERY_EMPLOYEE_PIN($shopId: uuid!, $employeeId: String!) {
employees(where: {_and: {shopid: {_eq: $shopId}, employee_number: {_eq: $employeeId}}}) { employees(where: {_and: {shopid: {_eq: $shopId}, employee_number: {_eq: $employeeId}}}) {

View File

@@ -15,7 +15,7 @@ exports.job = async (req, res) => {
try { try {
const BearerToken = req.headers.authorization; const BearerToken = req.headers.authorization;
const { jobId } = req.body; const { jobId } = req.body;
console.log("exports.job -> jobId", jobId) console.log("exports.job -> jobId", jobId);
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, { const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {
headers: { headers: {
@@ -30,7 +30,7 @@ exports.job = async (req, res) => {
jobId: jobId, jobId: jobId,
}); });
const { appointments, productionview } = result; const { appointments, jobs } = result;
const { ssbuckets } = result.jobs_by_pk.bodyshop; const { ssbuckets } = result.jobs_by_pk.bodyshop;
const jobHrs = result.jobs_by_pk.jobhrs.aggregate.sum.mod_lb_hrs; const jobHrs = result.jobs_by_pk.jobhrs.aggregate.sum.mod_lb_hrs;
@@ -45,7 +45,7 @@ exports.job = async (req, res) => {
const totalMatrixDays = moment const totalMatrixDays = moment
.max([ .max([
...appointments.map((a) => moment(a.start)), ...appointments.map((a) => moment(a.start)),
...productionview ...jobs
.map((p) => moment(p.scheduled_completion)) .map((p) => moment(p.scheduled_completion))
.filter((p) => p.isValid()), .filter((p) => p.isValid()),
]) ])
@@ -87,8 +87,10 @@ exports.job = async (req, res) => {
//Populate the jobs that are leaving today. //Populate the jobs that are leaving today.
const todayIsoString = moment().format("yyyy-MM-DD"); const todayIsoString = moment().format("yyyy-MM-DD");
productionview.forEach((pjob) => { jobs.forEach((pjob) => {
const jobHrs = pjob.larhrs + pjob.labhrs; const jobHrs =
pjob.larhrs.aggregate.sum.mod_lb_hrs +
pjob.labhrs.aggregate.sum.mod_lb_hrs;
//Is the job in the same bucket? //Is the job in the same bucket?
const pjobBucket = ssbuckets.filter( const pjobBucket = ssbuckets.filter(
(bucket) => (bucket) =>