fix(orders): release PO number against creation year; tighten sort-dir + enum typing
Addresses review of the issued-orders service: deleteIssuedOrder now derives the release year from created_at (cross-year deletes reclaim the right sequence); list sort direction is normalized to asc/desc; status cast uses $Enums instead of as-never. Adds a cross-year delete test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -195,4 +195,25 @@ describe("deleteIssuedOrder", () => {
|
||||
).toBe(0);
|
||||
expect((await previewIssuedOrderNumber()).number).toBe(before);
|
||||
});
|
||||
|
||||
it("releases the number against the order's creation year, not the current year", async () => {
|
||||
const priorYear = new Date().getFullYear() - 1;
|
||||
// Allocate a real prior-year number (consumes that year's sequence: 0 -> 1)
|
||||
// so the PO number matches the prior year's current highest.
|
||||
const { number: poNumber } = await generateIssuedOrderNumber(priorYear);
|
||||
const order = await createIssuedOrder({ po_number: poNumber });
|
||||
createdIds.push(order.id);
|
||||
// Backdate creation into the prior year so delete derives that year.
|
||||
await prisma.issued_orders.update({
|
||||
where: { id: order.id },
|
||||
data: { created_at: new Date(priorYear, 5, 1, 12, 0, 0) },
|
||||
});
|
||||
await deleteIssuedOrder(order.id);
|
||||
// The prior-year sequence must be decremented (1 -> 0). With the old
|
||||
// current-year bug it would stay at 1 (no current-year row to match).
|
||||
const seq = await prisma.number_sequences.findFirst({
|
||||
where: { type: "issued_order", year: priorYear },
|
||||
});
|
||||
expect(seq?.last_number).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user