IO-884 Add special coverage policy indicators.

This commit is contained in:
Patrick Fic
2021-04-12 15:22:01 -07:00
parent fbb170491b
commit c216295e66
8 changed files with 86 additions and 11 deletions

View File

@@ -21670,6 +21670,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>specialcoveragepolicy</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>state_tax_amt</name> <name>state_tax_amt</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -1,6 +1,20 @@
import { DeleteFilled, FilterFilled, SyncOutlined } from "@ant-design/icons"; import {
DeleteFilled,
FilterFilled,
SyncOutlined,
WarningFilled,
} from "@ant-design/icons";
import { useMutation } from "@apollo/client"; import { useMutation } from "@apollo/client";
import { Button, Dropdown, Input, Menu, PageHeader, Space, Table } from "antd"; import {
Button,
Dropdown,
Input,
Menu,
PageHeader,
Space,
Table,
Tag,
} from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -318,6 +332,15 @@ export function JobLinesComponent({
<Button onClick={() => refetch()}> <Button onClick={() => refetch()}>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
{job.special_coverage_policy && (
<Tag color="tomato">
<Space>
<WarningFilled />
<span>{t("jobs.labels.specialcoveragepolicy")}</span>
</Space>
</Tag>
)}
<Button <Button
disabled={ disabled={
(job && !job.converted) || (job && !job.converted) ||
@@ -329,6 +352,7 @@ export function JobLinesComponent({
actions: { refetch: refetch }, actions: { refetch: refetch },
context: { context: {
jobId: job.id, jobId: job.id,
job: job,
linesToOrder: selectedLines, linesToOrder: selectedLines,
}, },
}); });
@@ -354,7 +378,6 @@ export function JobLinesComponent({
<Dropdown overlay={markMenu} trigger={["click"]}> <Dropdown overlay={markMenu} trigger={["click"]}>
<Button>{t("jobs.actions.mark")}</Button> <Button>{t("jobs.actions.mark")}</Button>
</Dropdown> </Dropdown>
<Button <Button
disabled={jobRO} disabled={jobRO}
onClick={() => { onClick={() => {
@@ -366,7 +389,6 @@ export function JobLinesComponent({
> >
{t("joblines.actions.new")} {t("joblines.actions.new")}
</Button> </Button>
<Input.Search <Input.Search
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
onChange={(e) => { onChange={(e) => {

View File

@@ -1,4 +1,5 @@
import { Card, Col, Row, Tag } from "antd"; import { Card, Col, Row, Space, Tag } from "antd";
import { WarningFilled } from "@ant-design/icons";
import React, { useMemo } from "react"; import React, { useMemo } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -85,6 +86,14 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
<ProductionListColumnProductionNote record={job} /> <ProductionListColumnProductionNote record={job} />
</DataLabel> </DataLabel>
)} )}
{job.special_coverage_policy && (
<Tag color="tomato">
<Space>
<WarningFilled />
<span>{t("jobs.labels.specialcoveragepolicy")}</span>
</Space>
</Tag>
)}
</div> </div>
</Card> </Card>
</Col> </Col>

View File

@@ -1,5 +1,14 @@
import { DeleteFilled } from "@ant-design/icons"; import { DeleteFilled, WarningFilled } from "@ant-design/icons";
import { Form, Input, InputNumber, Radio, Typography } from "antd"; import {
Divider,
Form,
Input,
InputNumber,
Radio,
Space,
Tag,
Typography,
} from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import FormDatePicker from "../form-date-picker/form-date-picker.component"; import FormDatePicker from "../form-date-picker/form-date-picker.component";
@@ -13,6 +22,7 @@ export default function PartsOrderModalComponent({
sendTypeState, sendTypeState,
isReturn, isReturn,
preferredMake, preferredMake,
job,
}) { }) {
const [sendType, setSendType] = sendTypeState; const [sendType, setSendType] = sendTypeState;
@@ -23,7 +33,7 @@ export default function PartsOrderModalComponent({
<Form.Item name="returnfrombill" style={{ display: "none" }}> <Form.Item name="returnfrombill" style={{ display: "none" }}>
<Input /> <Input />
</Form.Item> </Form.Item>
<LayoutFormRow> <LayoutFormRow noDivider>
<Form.Item <Form.Item
name="vendorid" name="vendorid"
label={t("vendors.fields.name")} label={t("vendors.fields.name")}
@@ -52,10 +62,18 @@ export default function PartsOrderModalComponent({
> >
<FormDatePicker /> <FormDatePicker />
</Form.Item> </Form.Item>
{job && job.special_coverage_policy && (
<Tag color="tomato">
<Space>
<WarningFilled />
<span>{t("jobs.labels.specialcoveragepolicy")}</span>
</Space>
</Tag>
)}
</LayoutFormRow> </LayoutFormRow>
<Typography.Title level={4}> <Divider orientation="left">
{t("parts_orders.labels.inthisorder")} {t("parts_orders.labels.inthisorder")}
</Typography.Title> </Divider>
<Form.List name={["parts_order_lines", "data"]}> <Form.List name={["parts_order_lines", "data"]}>
{(fields, { add, remove, move }) => { {(fields, { add, remove, move }) => {
return ( return (
@@ -63,7 +81,7 @@ export default function PartsOrderModalComponent({
{fields.map((field, index) => ( {fields.map((field, index) => (
<Form.Item required={false} key={field.key}> <Form.Item required={false} key={field.key}>
<div style={{ display: "flex", alignItems: "center" }}> <div style={{ display: "flex", alignItems: "center" }}>
<LayoutFormRow style={{ flex: 1 }}> <LayoutFormRow noDivider>
<Form.Item <Form.Item
label={t("parts_orders.fields.line_desc")} label={t("parts_orders.fields.line_desc")}
key={`${index}line_desc`} key={`${index}line_desc`}

View File

@@ -56,6 +56,7 @@ export function PartsOrderModalContainer({
vendorId, vendorId,
returnFromBill, returnFromBill,
invoiceNumber, invoiceNumber,
job,
} = context; } = context;
const { refetch } = actions; const { refetch } = actions;
@@ -256,6 +257,7 @@ export function PartsOrderModalContainer({
sendTypeState={sendTypeState} sendTypeState={sendTypeState}
isReturn={isReturn} isReturn={isReturn}
preferredMake={data && data.jobs[0] && data.jobs[0].v_make_desc} preferredMake={data && data.jobs[0] && data.jobs[0].v_make_desc}
job={job}
/> />
)} )}
</Form> </Form>

View File

@@ -1290,6 +1290,7 @@
"sale_parts": "Sales - Parts & Sublet", "sale_parts": "Sales - Parts & Sublet",
"sales": "Sales", "sales": "Sales",
"scheduledinchange": "The scheduled in is based off the latest appointment. To change this date, please schedule or reschedule the job. ", "scheduledinchange": "The scheduled in is based off the latest appointment. To change this date, please schedule or reschedule the job. ",
"specialcoveragepolicy": "Special Coverage Policy Applies",
"state_tax_amt": "State/Provincial Taxes", "state_tax_amt": "State/Provincial Taxes",
"subletstotal": "Sublets Total", "subletstotal": "Sublets Total",
"subtotal": "Subtotal", "subtotal": "Subtotal",

View File

@@ -1290,6 +1290,7 @@
"sale_parts": "", "sale_parts": "",
"sales": "", "sales": "",
"scheduledinchange": "", "scheduledinchange": "",
"specialcoveragepolicy": "",
"state_tax_amt": "", "state_tax_amt": "",
"subletstotal": "", "subletstotal": "",
"subtotal": "", "subtotal": "",

View File

@@ -1290,6 +1290,7 @@
"sale_parts": "", "sale_parts": "",
"sales": "", "sales": "",
"scheduledinchange": "", "scheduledinchange": "",
"specialcoveragepolicy": "",
"state_tax_amt": "", "state_tax_amt": "",
"subletstotal": "", "subletstotal": "",
"subtotal": "", "subtotal": "",