feature/IO-3587-Commision-Cut - Additional test, layout enhancements
This commit is contained in:
@@ -158,6 +158,22 @@ describe("payroll payout helpers", () => {
|
||||
)
|
||||
).toThrow("Missing commission percent for Jane Doe on labor type LAA.");
|
||||
});
|
||||
|
||||
it("throws a useful error when an hourly payout rate is missing", () => {
|
||||
expect(() =>
|
||||
payAllModule.BuildPayoutDetails(
|
||||
{},
|
||||
{
|
||||
labor_rates: {},
|
||||
employee: {
|
||||
first_name: "John",
|
||||
last_name: "Smith"
|
||||
}
|
||||
},
|
||||
"LAB"
|
||||
)
|
||||
).toThrow("Missing hourly payout rate for John Smith on labor type LAB.");
|
||||
});
|
||||
});
|
||||
|
||||
describe("payroll routes", () => {
|
||||
@@ -364,4 +380,86 @@ describe("payroll routes", () => {
|
||||
error: "Task preset percentages for labor type LAA total 110% and cannot exceed 100%."
|
||||
});
|
||||
});
|
||||
|
||||
it("rejects claim-task when an assigned team member is missing the hourly rate for the selected labor type", async () => {
|
||||
const job = buildBaseJob({
|
||||
bodyshop: {
|
||||
id: "shop-1",
|
||||
md_responsibility_centers: {
|
||||
defaults: {
|
||||
costs: {
|
||||
LAB: "Body"
|
||||
}
|
||||
}
|
||||
},
|
||||
md_tasks_presets: {
|
||||
presets: [
|
||||
{
|
||||
name: "Teardown",
|
||||
hourstype: ["LAB"],
|
||||
percent: 100,
|
||||
nextstatus: "In Progress",
|
||||
memo: "Teardown"
|
||||
}
|
||||
]
|
||||
},
|
||||
employee_teams: [
|
||||
{
|
||||
id: "team-1",
|
||||
employee_team_members: [
|
||||
{
|
||||
percentage: 50,
|
||||
labor_rates: {
|
||||
LAB: 45
|
||||
},
|
||||
employee: {
|
||||
id: "emp-1",
|
||||
first_name: "Configured",
|
||||
last_name: "Tech"
|
||||
}
|
||||
},
|
||||
{
|
||||
percentage: 50,
|
||||
labor_rates: {},
|
||||
employee: {
|
||||
id: "emp-2",
|
||||
first_name: "Missing",
|
||||
last_name: "Rate"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
joblines: [
|
||||
{
|
||||
mod_lbr_ty: "LAB",
|
||||
mod_lb_hrs: 4.4,
|
||||
assigned_team: "team-1",
|
||||
convertedtolbr: false
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const { client, req, res } = buildReqRes({
|
||||
job,
|
||||
body: {
|
||||
task: "Teardown",
|
||||
calculateOnly: true,
|
||||
employee: {
|
||||
name: "Dave",
|
||||
email: "dave@rome.test"
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
await claimTaskModule.claimtask(req, res);
|
||||
|
||||
expect(client.request).toHaveBeenCalledTimes(1);
|
||||
expect(res.status).toHaveBeenCalledWith(400);
|
||||
expect(res.json).toHaveBeenCalledWith({
|
||||
success: false,
|
||||
error: "Missing hourly payout rate for Missing Rate on labor type LAB."
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user