fix(collection-confirm): use getOrderItemsCollectionName + populate stock supplier

Co-Authored-By: Claude <noreply@anthropic.com>

Co-authored-by: Orca <help@stably.ai>
This commit is contained in:
SJCoetz 2026-08-03 00:17:56 +02:00
parent 15f6ec638d
commit 8b6b83583d
2 changed files with 21 additions and 4 deletions

View file

@ -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") {

View file

@ -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<ConfirmRow[]> {
const pb = await getAdminPocketBase();
const [customerRows, stockRows] = await Promise.all([
pb.collection("order_items").getFullList<ConfirmRow>({
pb.collection(getOrderItemsCollectionName()).getFullList<ConfirmRow>({
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<ConfirmRow[]> {
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,