Added validation to job actions BOD-391

This commit is contained in:
Patrick Fic
2020-09-22 10:47:03 -07:00
parent 489ef3df0d
commit abb22a5d0f
10 changed files with 83 additions and 21 deletions

View File

@@ -30,7 +30,7 @@ export function JobLinesComponent({
setSearchText,
selectedLines,
setSelectedLines,
jobId,
job,
setJobLineEditContext,
}) {
const [state, setState] = useState({
@@ -308,12 +308,14 @@ export function JobLinesComponent({
<SyncOutlined />
</Button>
<Button
disabled={selectedLines.length > 0 ? false : true}
disabled={
!job.converted || (selectedLines.length > 0 ? false : true)
}
onClick={() => {
setPartsOrderContext({
actions: { refetch: refetch },
context: {
jobId: jobId,
jobId: job.jobId,
linesToOrder: selectedLines,
},
});
@@ -346,7 +348,7 @@ export function JobLinesComponent({
onClick={() => {
setJobLineEditContext({
actions: { refetch: refetch },
context: { jobid: jobId },
context: { jobid: job.jobId },
});
}}
>
@@ -370,7 +372,7 @@ export function JobLinesComponent({
{record.parts_order_lines.map((item) => (
<div key={item.id}>
<Link
to={`/manage/jobs/${jobId}?tab=partssublet&partsorderid=${item.parts_order.id}`}
to={`/manage/jobs/${job.jobId}?tab=partssublet&partsorderid=${item.parts_order.id}`}
>
{item.parts_order.order_number || ""}
</Link>

View File

@@ -1,7 +1,7 @@
import React, { useState } from "react";
import JobLinesComponent from "./job-lines.component";
function JobLinesContainer({ jobId, joblines, refetch }) {
function JobLinesContainer({ job, joblines, refetch }) {
const [searchText, setSearchText] = useState("");
const [selectedLines, setSelectedLines] = useState([]);
@@ -38,7 +38,7 @@ function JobLinesContainer({ jobId, joblines, refetch }) {
setSearchText={setSearchText}
selectedLines={selectedLines}
setSelectedLines={setSelectedLines}
jobId={jobId}
job={job}
/>
);
}

View File

@@ -1,7 +1,7 @@
import { DownCircleFilled } from "@ant-design/icons";
import { useApolloClient } from "@apollo/react-hooks";
import { Button, Dropdown, Menu, Popconfirm } from "antd";
import React from "react";
import React, { useMemo } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { Link, useHistory } from "react-router-dom";
@@ -40,9 +40,25 @@ export function JobsDetailHeaderActions({
const { t } = useTranslation();
const client = useApolloClient();
const history = useHistory();
const jobInProduction = useMemo(() => {
return bodyshop.md_ro_statuses.production_statuses.includes(job.status);
}, [job, bodyshop.md_ro_statuses.production_statuses]);
const jobInPreProduction = useMemo(() => {
return bodyshop.md_ro_statuses.pre_production_statuses.includes(job.status);
}, [job.status, bodyshop.md_ro_statuses.pre_production_statuses]);
const jobInPostProduction = useMemo(() => {
return bodyshop.md_ro_statuses.post_production_statuses.includes(
job.status
);
}, [job.status, bodyshop.md_ro_statuses.post_production_statuses]);
const statusmenu = (
<Menu key="popovermenu">
<Menu.Item
disabled={!jobInPreProduction || !job.converted}
onClick={() => {
logImEXEvent("job_header_schedule");
@@ -57,8 +73,12 @@ export function JobsDetailHeaderActions({
>
{t("jobs.actions.schedule")}
</Menu.Item>
<Menu.Item disabled={!!job.intakechecklist}>
{!!job.intakechecklist ? (
<Menu.Item
disabled={
!!job.intakechecklist || !jobInPreProduction || !job.converted
}
>
{!!job.intakechecklist || !jobInPreProduction || !job.converted ? (
t("jobs.actions.intake")
) : (
<Link to={`/manage/jobs/${job.id}/intake`}>
@@ -66,8 +86,8 @@ export function JobsDetailHeaderActions({
</Link>
)}
</Menu.Item>
<Menu.Item disabled={!!job.deliverchecklist}>
{!!job.deliveryhecklist ? (
<Menu.Item disabled={!jobInProduction}>
{!jobInProduction ? (
t("jobs.actions.deliver")
) : (
<Link to={`/manage/jobs/${job.id}/deliver`}>
@@ -141,8 +161,11 @@ export function JobsDetailHeaderActions({
>
{t("jobs.actions.postInvoices")}
</Menu.Item>
<Menu.Item disabled={!!job.date_invoiced} key="closejob">
{job.date_invoiced ? (
<Menu.Item
disabled={!!job.date_invoiced || !jobInPostProduction}
key="closejob"
>
{!!job.date_invoiced || !jobInPostProduction ? (
t("menus.jobsactions.closejob")
) : (
<Link