diff --git a/src/lib/server/collection-confirm-service.test.ts b/src/lib/server/collection-confirm-service.test.ts index 38cbb9b..39ebf55 100644 --- a/src/lib/server/collection-confirm-service.test.ts +++ b/src/lib/server/collection-confirm-service.test.ts @@ -4,7 +4,12 @@ vi.mock("@/lib/server/pocketbase-admin", () => ({ getAdminPocketBase: vi.fn(), })); +vi.mock("@/lib/server/orders-service", () => ({ + getOrderItemsCollectionName: vi.fn(() => "order_items_v2"), +})); + import { getAdminPocketBase } from "@/lib/server/pocketbase-admin"; +import { getOrderItemsCollectionName } from "@/lib/server/orders-service"; import { listCollectedItems, updateOrderItemCost, @@ -31,7 +36,7 @@ const makeAdmin = (opts: { .mockResolvedValue(opts.stockItems ?? []); const admin = { collection: vi.fn().mockImplementation((name: string) => { - if (name === "order_items") { + if (name === "order_items_v2") { return { getFullList: orderItemsGetFullList }; } if (name === "stock_purchase_items") { @@ -48,6 +53,16 @@ describe("listCollectedItems", () => { vi.clearAllMocks(); }); + it("uses getOrderItemsCollectionName to resolve the order-items collection", async () => { + const { admin } = makeAdmin({}); + vi.mocked(getAdminPocketBase).mockResolvedValue(admin as never); + + await listCollectedItems(); + + expect(getOrderItemsCollectionName).toHaveBeenCalledTimes(1); + expect(admin.collection).toHaveBeenCalledWith("order_items_v2"); + }); + it("returns order_items rows expanded with purchase_order, supplier, order, company, customer", async () => { const orderItem = { id: "oi-1", @@ -154,6 +169,7 @@ describe("listCollectedItems", () => { expect(row.stock_purchase_id).toBe("sp-1"); expect(row.poNumber).toBe("SP-001"); expect(row.sku).toBe("CT-200"); + expect(row.supplier).toBe("s-2"); // The purchase data is mapped onto the shared `expand.purchase_order` // shape so the page's supplier link works without a branch. expect(row.expand?.purchase_order?.id).toBe("sp-1"); @@ -242,7 +258,7 @@ describe("listCollectedItems", () => { .mockRejectedValue(new Error("stock side down")); const admin = { collection: vi.fn().mockImplementation((name: string) => { - if (name === "order_items") { + if (name === "order_items_v2") { return { getFullList: orderItemsGetFullList }; } if (name === "stock_purchase_items") { diff --git a/src/lib/server/collection-confirm-service.ts b/src/lib/server/collection-confirm-service.ts index 1635176..3709f7e 100644 --- a/src/lib/server/collection-confirm-service.ts +++ b/src/lib/server/collection-confirm-service.ts @@ -1,4 +1,5 @@ import { getAdminPocketBase } from "@/lib/server/pocketbase-admin"; +import { getOrderItemsCollectionName } from "@/lib/server/orders-service"; import type { ConfirmActor } from "@/app/(app)/collection-confirm/view-model"; /** @@ -105,7 +106,7 @@ export async function listCollectedItems(): Promise { const pb = await getAdminPocketBase(); const [customerRows, stockRows] = await Promise.all([ - pb.collection("order_items").getFullList({ + pb.collection(getOrderItemsCollectionName()).getFullList({ filter: 'item_status = "collected"', sort: "-drv_collected_at", expand: "purchase_order.supplier,order.company,order.customer", @@ -169,7 +170,7 @@ export async function listCollectedItems(): Promise { quantity: s.quantity, item_status: s.status ?? undefined, sku: s.expand?.stock_item?.sku, - supplier: undefined, + supplier: s.expand?.purchase?.expand?.supplier?.id ?? undefined, stock_line_status: s.status ?? null, assigned_at: s.assigned_at ?? null, stock_purchase_id: s.expand?.purchase?.id ?? null,