Compare commits
2 Commits
feature/IO
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da9744da6f | ||
|
|
947ded4b5e |
@@ -28,20 +28,6 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
const { t } = useTranslation();
|
||||
const [form] = Form.useForm();
|
||||
const [open, setOpen] = useState(false);
|
||||
const initialValues =
|
||||
data && data.bills_by_pk
|
||||
? {
|
||||
...data.bills_by_pk,
|
||||
billlines: (data.bills_by_pk.billlines || []).map((bl) => {
|
||||
const oem = bl.oem_partno || (bl.jobline && bl.jobline.oem_partno) || "";
|
||||
const alt = bl.alt_partno || (bl.jobline && bl.jobline.alt_partno) || "";
|
||||
return {
|
||||
...bl,
|
||||
oem_partno: `${oem || ""} ${alt ? `(${alt})` : ""}`.trim()
|
||||
};
|
||||
})
|
||||
}
|
||||
: undefined;
|
||||
|
||||
const handleFinish = ({ billlines }) => {
|
||||
const selectedLines = billlines.filter((l) => l.selected).map((l) => l.id);
|
||||
@@ -88,9 +74,8 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
destroyOnHidden
|
||||
title={t("bills.actions.return")}
|
||||
onOk={() => form.submit()}
|
||||
width={700}
|
||||
>
|
||||
<Form initialValues={initialValues} onFinish={handleFinish} form={form}>
|
||||
<Form initialValues={data?.bills_by_pk} onFinish={handleFinish} form={form}>
|
||||
<Form.List name={["billlines"]}>
|
||||
{(fields) => {
|
||||
return (
|
||||
@@ -110,10 +95,9 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
/>
|
||||
</td>
|
||||
<td>{t("billlines.fields.line_desc")}</td>
|
||||
<td>{t("billlines.fields.oem_partno")}</td>
|
||||
<td style={{ textAlign: "right" }}>{t("billlines.fields.quantity")}</td>
|
||||
<td style={{ textAlign: "right" }}>{t("billlines.fields.actual_price")}</td>
|
||||
<td style={{ textAlign: "right" }}>{t("billlines.fields.actual_cost")}</td>
|
||||
<td>{t("billlines.fields.quantity")}</td>
|
||||
<td>{t("billlines.fields.actual_price")}</td>
|
||||
<td>{t("billlines.fields.actual_cost")}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -143,15 +127,6 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
</Form.Item>
|
||||
</td>
|
||||
<td>
|
||||
<Form.Item
|
||||
// label={t("joblines.fields.oem_partno")}
|
||||
key={`${index}jobline.oem_partno`}
|
||||
name={[field.name, "oem_partno"]}
|
||||
>
|
||||
<ReadOnlyFormItemComponent />
|
||||
</Form.Item>
|
||||
</td>
|
||||
<td style={{ textAlign: "right" }}>
|
||||
<Form.Item
|
||||
// label={t("joblines.fields.quantity")}
|
||||
key={`${index}quantity`}
|
||||
@@ -160,7 +135,7 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
<ReadOnlyFormItemComponent />
|
||||
</Form.Item>
|
||||
</td>
|
||||
<td style={{ textAlign: "right" }}>
|
||||
<td>
|
||||
<Form.Item
|
||||
// label={t("joblines.fields.actual_price")}
|
||||
key={`${index}actual_price`}
|
||||
@@ -169,7 +144,7 @@ export function BillDetailEditReturn({ setPartsOrderContext, data, disabled }) {
|
||||
<ReadOnlyFormItemComponent type="currency" />
|
||||
</Form.Item>
|
||||
</td>
|
||||
<td style={{ textAlign: "right" }}>
|
||||
<td>
|
||||
<Form.Item
|
||||
// label={t("joblines.fields.actual_cost")}
|
||||
key={`${index}actual_cost`}
|
||||
|
||||
@@ -21,6 +21,7 @@ import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
|
||||
import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
|
||||
import TimeTicketList from "../time-ticket-list/time-ticket-list.component";
|
||||
import JobEmployeeAssignmentsContainer from "./../job-employee-assignments/job-employee-assignments.container";
|
||||
import { PayrollLaborAllocationsTable } from "../labor-allocations-table/labor-allocations-table.payroll.component.jsx";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
bodyshop: selectBodyshop,
|
||||
@@ -49,7 +50,7 @@ export function TimeTicketModalComponent({
|
||||
splitKey: bodyshop.imexshopid
|
||||
});
|
||||
|
||||
const [loadLineTicketData, { loading, data: lineTicketData }] = useLazyQuery(GET_LINE_TICKET_BY_PK, {
|
||||
const [loadLineTicketData, { loading, data: lineTicketData, refetch }] = useLazyQuery(GET_LINE_TICKET_BY_PK, {
|
||||
fetchPolicy: "network-only",
|
||||
nextFetchPolicy: "network-only"
|
||||
});
|
||||
@@ -320,13 +321,34 @@ export function TimeTicketModalComponent({
|
||||
</Form.Item>
|
||||
</LayoutFormRow>
|
||||
|
||||
<LaborAllocationContainer jobid={watchedJobId || null} loading={loading} lineTicketData={lineTicketData} />
|
||||
<LaborAllocationContainer
|
||||
jobid={watchedJobId || null}
|
||||
loading={loading}
|
||||
lineTicketData={lineTicketData}
|
||||
bodyshop={bodyshop}
|
||||
refetch={refetch}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function LaborAllocationContainer({ jobid, loading, lineTicketData, hideTimeTickets = false }) {
|
||||
export function LaborAllocationContainer({
|
||||
jobid,
|
||||
loading,
|
||||
lineTicketData,
|
||||
hideTimeTickets = false,
|
||||
bodyshop,
|
||||
refetch
|
||||
}) {
|
||||
const { t } = useTranslation();
|
||||
const {
|
||||
treatments: { Enhanced_Payroll }
|
||||
} = useTreatmentsWithConfig({
|
||||
attributes: {},
|
||||
names: ["Enhanced_Payroll"],
|
||||
splitKey: bodyshop.imexshopid
|
||||
});
|
||||
|
||||
if (loading) return <LoadingSkeleton />;
|
||||
if (!lineTicketData) return null;
|
||||
if (!jobid) return null;
|
||||
@@ -337,12 +359,23 @@ export function LaborAllocationContainer({ jobid, loading, lineTicketData, hideT
|
||||
<JobEmployeeAssignmentsContainer job={lineTicketData.jobs_by_pk} />
|
||||
</Card>
|
||||
|
||||
<LaborAllocationsTable
|
||||
jobId={jobid}
|
||||
joblines={lineTicketData.joblines}
|
||||
timetickets={lineTicketData.timetickets}
|
||||
adjustments={lineTicketData.jobs_by_pk.lbr_adjustments}
|
||||
/>
|
||||
{Enhanced_Payroll.treatment === "on" ? (
|
||||
<PayrollLaborAllocationsTable
|
||||
jobId={jobid}
|
||||
joblines={lineTicketData.joblines}
|
||||
timetickets={lineTicketData.timetickets}
|
||||
adjustments={lineTicketData.jobs_by_pk.lbr_adjustments}
|
||||
refetch={refetch}
|
||||
bodyshop={bodyshop}
|
||||
/>
|
||||
) : (
|
||||
<LaborAllocationsTable
|
||||
jobId={jobid}
|
||||
joblines={lineTicketData.joblines}
|
||||
timetickets={lineTicketData.timetickets}
|
||||
adjustments={lineTicketData.jobs_by_pk.lbr_adjustments}
|
||||
/>
|
||||
)}
|
||||
|
||||
{!hideTimeTickets && (
|
||||
<TimeTicketList loading={loading} timetickets={jobid ? lineTicketData.timetickets : []} techConsole />
|
||||
|
||||
@@ -185,7 +185,6 @@ export const QUERY_BILL_BY_PK = gql`
|
||||
id
|
||||
}
|
||||
jobline {
|
||||
alt_partno
|
||||
oem_partno
|
||||
part_type
|
||||
}
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
"line_desc": "Line Description",
|
||||
"local_tax_applicable": "Loc. Tax?",
|
||||
"location": "Location",
|
||||
"oem_partno": "Part #",
|
||||
"quantity": "Quantity",
|
||||
"state_tax_applicable": "St. Tax?"
|
||||
},
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
"line_desc": "",
|
||||
"local_tax_applicable": "",
|
||||
"location": "",
|
||||
"oem_partno": "",
|
||||
"quantity": "",
|
||||
"state_tax_applicable": ""
|
||||
},
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
"line_desc": "",
|
||||
"local_tax_applicable": "",
|
||||
"location": "",
|
||||
"oem_partno": "",
|
||||
"quantity": "",
|
||||
"state_tax_applicable": ""
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user