Merged in feature/IO-3676-Order-As-In-House-Quantity (pull request #3221)
feature/IO-3676-Order-As-In-House-Quantity - Fix Approved-by: Allan Carr
This commit is contained in:
@@ -44,6 +44,7 @@ import JoblineTeamAssignment from "../job-line-team-assignment/job-line-team-ass
|
||||
import JobSendPartPriceChangeComponent from "../job-send-parts-price-change/job-send-parts-price-change.component";
|
||||
import PartsOrderDrawer from "../parts-order-list-table/parts-order-list-table-drawer.component";
|
||||
import PartsOrderModalContainer from "../parts-order-modal/parts-order-modal.container";
|
||||
import { buildInHouseBillLines } from "./job-lines.in-house-bill-lines.utils";
|
||||
import JobLinesExpander from "./job-lines-expander.component";
|
||||
import JobLinesPartPriceChange from "./job-lines-part-price-change.component";
|
||||
import JobLinesExpanderSimple from "./jobs-lines-expander-simple.component";
|
||||
@@ -595,16 +596,7 @@ export function JobLinesComponent({
|
||||
isinhouse: true,
|
||||
date: dayjs(),
|
||||
total: 0,
|
||||
billlines: selectedLines.map((p) => ({
|
||||
joblineid: p.id,
|
||||
actual_price: p.act_price,
|
||||
actual_cost: 0,
|
||||
line_desc: p.line_desc,
|
||||
line_remarks: p.line_remarks,
|
||||
part_type: p.part_type,
|
||||
quantity: p.quantity || 1,
|
||||
applicable_taxes: { local: false, state: false, federal: false }
|
||||
}))
|
||||
billlines: buildInHouseBillLines(selectedLines)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
export const buildInHouseBillLines = (lines) =>
|
||||
lines.map((line) => ({
|
||||
joblineid: line.id,
|
||||
actual_price: line.act_price,
|
||||
actual_cost: 0,
|
||||
line_desc: line.line_desc,
|
||||
line_remarks: line.line_remarks,
|
||||
part_type: line.part_type,
|
||||
quantity: line.part_qty ?? line.quantity ?? 1,
|
||||
applicable_taxes: { local: false, state: false, federal: false }
|
||||
}));
|
||||
@@ -0,0 +1,33 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildInHouseBillLines } from "./job-lines.in-house-bill-lines.utils";
|
||||
|
||||
describe("buildInHouseBillLines", () => {
|
||||
it("carries job line part quantity into the in-house bill line", () => {
|
||||
const billLines = buildInHouseBillLines([
|
||||
{
|
||||
id: "job-line-1",
|
||||
act_price: 125,
|
||||
line_desc: "Door shell",
|
||||
line_remarks: "Left",
|
||||
part_type: "PAA",
|
||||
part_qty: 3
|
||||
}
|
||||
]);
|
||||
|
||||
expect(billLines[0]).toMatchObject({
|
||||
joblineid: "job-line-1",
|
||||
actual_price: 125,
|
||||
actual_cost: 0,
|
||||
line_desc: "Door shell",
|
||||
line_remarks: "Left",
|
||||
part_type: "PAA",
|
||||
quantity: 3,
|
||||
applicable_taxes: { local: false, state: false, federal: false }
|
||||
});
|
||||
});
|
||||
|
||||
it("falls back to legacy quantity and then one when part quantity is absent", () => {
|
||||
expect(buildInHouseBillLines([{ id: "legacy", quantity: 2 }])[0].quantity).toBe(2);
|
||||
expect(buildInHouseBillLines([{ id: "missing" }])[0].quantity).toBe(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user