import type { AcquisitionCostAdjustment, StorageLocation, ValuationPolicy, StockLevel, StockReservation, StockAdjustment, StockAdjustmentLine, TransferOrder, TransferOrderLine, ItemValuation, StandardCost, CostLayer, FifoCost, AverageCost, InventorySupplyPlan, Schema, } from "../lib/types"; import type { CoaAccount, FinancialAccountingJournalEntry, FinancialAccountingPeriod, ItemManagementQueryItem, OrganizationQueryCompany, } from "./moduleMocks"; // Item fixtures (from item-management query contract) export const baseActiveItem = { id: "item-1", sku: "SKU-001", name: "Active Widget", barcode: "BAR-001", unitId: "unit-ea", status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies NonNullable; export const baseActiveItem2 = { ...baseActiveItem, id: "item-2", sku: "SKU-002", name: "Second Active Widget", barcode: "BAR-002", } as const satisfies NonNullable; export const baseInactiveItem = { ...baseActiveItem, id: "item-3", sku: "SKU-003", name: "Inactive Widget", barcode: "BAR-003", status: "INACTIVE", } as const satisfies NonNullable; // Company fixture (from organization query contract) export const baseCompany = { id: "company-1", legalName: "Test Corp", taxId: null, registrationNumber: null, baseCurrencyId: "currency-usd", street: "123 Main St", city: "New York", state: "NY", postalCode: "10001", country: "US", status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies NonNullable; // Site fixtures (minimal shape for cross-module tests) export const baseActiveSite = { id: "site-1", name: "Tokyo DC", type: "WAREHOUSE", companyId: "company-1", street: "1-2-3 Shibuya", city: "Tokyo", state: "Tokyo", postalCode: "150-0002", country: "JP", timezone: "Asia/Tokyo", status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const; export const baseInactiveSite = { ...baseActiveSite, id: "site-3", name: "Closed DC", status: "INACTIVE", } as const; export const destinationSite = { ...baseActiveSite, id: "site-2", name: "Osaka DC", } as const; // StorageLocation fixtures export const baseStorageLocation = { id: "location-1", name: "Main Shelf", code: "MAIN", siteId: "site-1", storageCondition: null, capacity: null, status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StorageLocation; export const destinationStorageLocation = { id: "location-2", name: "Destination Shelf", code: "DEST", siteId: "site-2", storageCondition: null, capacity: null, status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StorageLocation; export const transitStorageLocation = { id: "location-transit-1", name: "Transfer In Transit", code: "TRANSIT", siteId: "site-1", storageCondition: null, capacity: null, status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StorageLocation; export const baseInactiveLocation = { id: "location-3", name: "Inactive Area", code: "OLD", siteId: "site-1", storageCondition: null, capacity: null, status: "INACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StorageLocation; // ValuationPolicy fixtures export const baseStandardCostPolicy = { id: "policy-3", companyId: "company-1", name: "Standard Cost Policy", costingMethod: "STANDARD", defaultCompanyId: null, inventoryAccountId: "account-inventory", accrualAccountId: "account-accrual", invoicePriceVarianceAccountId: "account-invoice-price-variance", cogsAccountId: "account-cogs", ppvAccountId: "account-ppv", adjustmentAccountId: "account-inventory-adjustment", standardCostAdjustmentAccountId: "account-adjustment", consumedPriceVarianceAccountId: "account-consumed-price-variance", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ValuationPolicy; export const baseFifoPolicy = { ...baseStandardCostPolicy, id: "policy-4", name: "FIFO Policy", costingMethod: "FIFO", } as const satisfies ValuationPolicy; export const baseAverageCostPolicy = { ...baseStandardCostPolicy, id: "policy-5", name: "Average Cost Policy", costingMethod: "AVERAGE", } as const satisfies ValuationPolicy; // StockLevel fixtures export const baseStockLevel = { id: "stock-level-1", itemId: "item-1", storageLocationId: "location-1", stockType: "AVAILABLE", quantity: "85", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockLevel; export const baseBlockedStockLevel = { ...baseStockLevel, id: "stock-level-blocked-1", stockType: "BLOCKED", quantity: "5", } as const satisfies StockLevel; export const baseStockReservation = { id: "stock-reservation-1", sourceType: "SALES_ORDER", sourceId: "sales-order-1", sourceLineId: "sales-order-line-1", itemId: "item-1", siteId: "site-1", storageLocationId: null, reservedQuantity: "10", consumedQuantity: "0", status: "OPEN", requiredDate: new Date("2024-01-15T00:00:00.000Z"), createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockReservation; export const emptyStockLevel = { id: "stock-level-2", itemId: "item-2", storageLocationId: "location-1", stockType: "AVAILABLE", quantity: "0", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockLevel; // ItemValuation fixtures (item ↔ policy association per company) export const baseStandardItemValuation = { id: "valuation-1", itemId: "item-1", companyId: "company-1", valuationPolicyId: "policy-3", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ItemValuation; export const baseFifoItemValuation = { ...baseStandardItemValuation, id: "valuation-2", valuationPolicyId: "policy-4", } as const satisfies ItemValuation; export const baseAverageItemValuation = { ...baseStandardItemValuation, id: "valuation-3", valuationPolicyId: "policy-5", } as const satisfies ItemValuation; // CostLayer fixtures (FIFO order: layer-1 before layer-2) export const baseCostLayer = { id: "layer-1", itemId: "item-1", companyId: "company-1", ledgerEntryId: "ledger-receipt-1", effectiveDate: new Date("2024-01-01T00:00:00.000Z"), quantity: "2", remainingQuantity: "2", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies CostLayer; export const secondCostLayer = { ...baseCostLayer, id: "layer-2", ledgerEntryId: "ledger-receipt-2", effectiveDate: new Date("2024-01-02T00:00:00.000Z"), quantity: "8", remainingQuantity: "8", createdAt: new Date("2024-01-02T00:00:00.000Z"), } as const satisfies CostLayer; // FifoCost fixtures (current layer prices: layer-1 @ 9, layer-2 @ 10) export const baseFifoCost = { id: "fifo-cost-1", costLayerId: "layer-1", version: 1, unitCost: "9", createdAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies FifoCost; export const secondFifoCost = { ...baseFifoCost, id: "fifo-cost-2", costLayerId: "layer-2", unitCost: "10", createdAt: new Date("2024-01-02T00:00:00.000Z"), } as const satisfies FifoCost; // AverageCost fixture (current moving-average state: 10 on hand @ 9) export const baseAverageCost = { id: "avg-1", itemId: "item-1", companyId: "company-1", sequence: 1, eventType: "RECEIPT", quantityBefore: "0", unitCostBefore: "0", quantity: "10", unitCost: "9", quantityAfter: "10", unitCostAfter: "9", createdAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies AverageCost; // AcquisitionCostAdjustment fixture (header returned by the posting insert) export const baseAcquisitionCostAdjustment = { id: "acquisition-cost-adjustment-1", sourceType: "ACCOUNT_PAYABLE_DOCUMENT", sourceId: "ap-doc-1", sourceLineId: "ap-doc-line-1", purchaseOrderId: "po-1", purchaseOrderLineId: "po-line-1", amount: "200", kind: "INVOICE_PRICE", effectiveDate: new Date("2024-02-01T00:00:00.000Z"), createdAt: new Date("2024-02-01T00:00:00.000Z"), } as const satisfies AcquisitionCostAdjustment; // StandardCost fixtures export const baseStandardCost = { id: "std-1", itemId: "item-1", unitCost: "10", version: 1, createdAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StandardCost; export const revisedStandardCost = { id: "std-2", itemId: "item-1", unitCost: "12", version: 2, createdAt: new Date("2024-02-01T00:00:00.000Z"), } as const satisfies StandardCost; // StockAdjustment fixtures export const baseDraftAdjustment = { id: "adjustment-1", adjustmentType: "CORRECTION", status: "DRAFT", reasonCode: "inventory-count", adjustmentDate: new Date("2024-01-01T00:00:00.000Z"), rejectionReason: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustment; export const baseSubmittedAdjustment = { id: "adjustment-2", adjustmentType: "CORRECTION", status: "SUBMITTED", reasonCode: "shrinkage", adjustmentDate: new Date("2024-01-02T00:00:00.000Z"), rejectionReason: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustment; export const baseRejectedAdjustment = { id: "adjustment-3", adjustmentType: "SCRAP", status: "REJECTED", reasonCode: "expired", adjustmentDate: new Date("2024-01-03T00:00:00.000Z"), rejectionReason: "need additional review", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustment; export const baseConfirmedAdjustment = { id: "adjustment-4", adjustmentType: "CORRECTION", status: "CONFIRMED", reasonCode: "shrinkage", adjustmentDate: new Date("2024-01-04T00:00:00.000Z"), rejectionReason: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustment; export const baseCancelledAdjustment = { id: "adjustment-5", adjustmentType: "CORRECTION", status: "CANCELLED", reasonCode: "entered-in-error", adjustmentDate: new Date("2024-01-05T00:00:00.000Z"), rejectionReason: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustment; // StockAdjustmentLine fixtures export const correctionIncreaseLine = { id: "adj-line-1", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "5", adjustmentDirection: "INCREASE", fromStockCategory: null, unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; export const correctionDecreaseLine = { id: "adj-line-2", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "5", adjustmentDirection: "DECREASE", fromStockCategory: null, unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; export const scrapAvailableLine = { id: "adj-line-3", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "3", adjustmentDirection: null, fromStockCategory: "AVAILABLE", unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; export const scrapBlockedLine = { id: "adj-line-4", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "3", adjustmentDirection: null, fromStockCategory: "BLOCKED", unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; export const blockLine = { id: "adj-line-5", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "10", adjustmentDirection: null, fromStockCategory: null, unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; export const unblockLine = { id: "adj-line-6", stockAdjustmentId: "adjustment-1", itemId: "item-1", storageLocationId: "location-1", quantity: "5", adjustmentDirection: null, fromStockCategory: null, unitCost: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies StockAdjustmentLine; // TransferOrder fixtures export const baseDraftTransferOrder = { id: "transfer-order-1", sourceSiteId: "site-1", destinationSiteId: "site-2", plannedShipmentDate: new Date("2024-01-15T00:00:00.000Z"), expectedReceiptDate: new Date("2024-01-17T00:00:00.000Z"), status: "DRAFT", closedAt: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies TransferOrder; export const baseOpenTransferOrder = { ...baseDraftTransferOrder, id: "transfer-order-3", status: "OPEN", } as const satisfies TransferOrder; export const baseClosedTransferOrder = { ...baseDraftTransferOrder, id: "transfer-order-4", status: "CLOSED", closedAt: new Date("2024-01-10T00:00:00.000Z"), } as const satisfies TransferOrder; export const baseTransferOrderLine = { id: "transfer-order-line-1", transferOrderId: "transfer-order-1", itemId: "item-1", unitId: "unit-ea", orderedQuantity: "10", shippedQuantity: "0", receivedQuantity: "0", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies TransferOrderLine; export const partiallyReceivedTransferOrderLine = { ...baseTransferOrderLine, id: "transfer-order-line-2", transferOrderId: "transfer-order-3", shippedQuantity: "10", receivedQuantity: "4", } as const satisfies TransferOrderLine; export const fullyReceivedTransferOrderLine = { ...baseTransferOrderLine, id: "transfer-order-line-3", transferOrderId: "transfer-order-3", shippedQuantity: "10", receivedQuantity: "10", } as const satisfies TransferOrderLine; // InventorySupplyPlan fixtures export const baseSupplyPlan = { id: "supply-plan-1", sourceType: "PURCHASE_ORDER", sourceId: "po-1", sourceLineId: "po-line-1", itemId: "item-1", siteId: "site-1", expectedQuantity: "100", receivedQuantity: "0", status: "OPEN", expectedDate: new Date("2026-06-01T00:00:00.000Z"), createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies InventorySupplyPlan; // Cross-module fixtures (financial-accounting / coa-management query contracts) export const baseOperatingPeriod = { id: "period-1", companyId: "company-1", fiscalYearId: "fiscal-year-1", name: "FY2024-01", startDate: new Date("2024-01-01T00:00:00.000Z"), endDate: new Date("2099-12-31T00:00:00.000Z"), periodType: "OPERATING", status: "OPEN", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } satisfies FinancialAccountingPeriod; export const baseJournalEntry = { id: "journal-1", companyId: "company-1", accountingPeriodId: "period-1", entryDate: new Date("2024-02-01T00:00:00.000Z"), status: "DRAFT", description: null, sourceDocumentType: "INVENTORY_LEDGER", sourceDocumentId: "ledger-1", reversalOfId: null, postedAt: null, createdAt: new Date("2024-02-01T00:00:00.000Z"), updatedAt: new Date("2024-02-01T00:00:00.000Z"), } satisfies FinancialAccountingJournalEntry; export const basePostingAccount = { id: "account-inventory", code: "1400", name: "Inventory", accountType: "ASSET", companyId: "company-1", status: "ACTIVE", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } satisfies CoaAccount; export const basePostingAccounts = [ basePostingAccount, { ...basePostingAccount, id: "account-accrual" }, { ...basePostingAccount, id: "account-invoice-price-variance" }, { ...basePostingAccount, id: "account-cogs" }, { ...basePostingAccount, id: "account-ppv" }, { ...basePostingAccount, id: "account-inventory-adjustment" }, { ...basePostingAccount, id: "account-adjustment" }, { ...basePostingAccount, id: "account-consumed-price-variance" }, ] satisfies CoaAccount[];