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:
parent
15f6ec638d
commit
8b6b83583d
2 changed files with 21 additions and 4 deletions
|
|
@ -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") {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue