@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
120 lines • 5.87 kB
JavaScript
import { z } from 'zod';
import { BaseResponseSchema, BaseGetParamsSchema, EdgeCacheParamsSchema, } from '../../../core/schemas';
// Purchase Order Line Schema
export const PurchaseOrderLineSchema = z.object({
lineNo: z.number(),
invMastUid: z.number(),
itemId: z.string(),
description: z.string().optional(), // API uses itemDesc instead
itemDesc: z.string().optional(), // Actual field name from API
qtyOrdered: z.number(),
qtyReceived: z.number(),
qtyOutstanding: z.number().optional(), // Additional field from API
unitCost: z.number().optional(), // May not always be present in list responses
extendedCost: z.number().optional(), // May not always be present in list responses
unitOfMeasure: z.string().optional(), // May not always be present in list responses
serialized: z.string().optional(), // Additional field from API
trackBins: z.string().optional(), // Additional field from API
primaryBin: z.string().optional(), // Additional field from API
lotAssignmentRequired: z.string().optional(), // Additional field from API
});
// Purchase Order Header Schema
export const PurchaseOrderHeaderSchema = z.object({
poHdrUid: z.number().optional(),
poNo: z.number(),
vendorId: z.number(), // API returns number, not string
vendorName: z.string().nullable(), // Can be empty string or null
supplierId: z.number().optional(), // Additional field from API
supplierName: z.string().nullable().optional(), // Can be empty string or null
divisionId: z.number().optional(), // Additional field from API
orderDate: z.unknown().optional(), // API returns complex date object, not simple string
poDate: z.string().optional(), // Keep for backward compatibility
complete: z.string(),
totalAmount: z.number().optional(), // Not always present in list responses
locationId: z.coerce.number().optional(),
companyNo: z.string().optional(), // Additional field from API
ship2Name: z.string().nullable().optional(), // Can be null
packingSlipNumber: z.unknown().nullable().optional(), // Can be null
ship2Add1: z.string().nullable().optional(), // Can be null
ship2Add2: z.string().nullable().optional(), // Can be null
expedite: z.string().optional(),
ackFlag: z.string().optional(),
lines: z.array(z.unknown()).optional(), // Lines can be present in list responses
});
// Purchase Order Detail Schema
export const PurchaseOrderDetailSchema = z.object({
poNo: z.number(),
vendorId: z.number(), // API returns number, not string
vendorName: z.string().nullable(), // Can be empty string or null
poDate: z.string().optional(), // May not always be present
orderDate: z.unknown().optional(), // API uses orderDate with complex structure
complete: z.string(),
totalAmount: z.number().optional(), // May not always be present
currencyId: z.string().optional(),
exchangeRate: z.number().optional(),
approved: z.string().optional(),
expedite: z.string().optional(),
ackFlag: z.string().optional(),
requestedDate: z.string().optional(),
lines: z.array(PurchaseOrderLineSchema),
});
// Purchase Order Document Schema (includes vendor address, receipts, invoices)
export const PurchaseOrderDocumentSchema = z.object({
poNo: z.number(),
vendorId: z.number(), // API returns number, not string
vendorName: z.string().nullable(), // Can be empty string or null
vendorAddress: z
.object({
address1: z.string().optional(),
city: z.string().optional(),
state: z.string().optional(),
zip: z.string().optional(),
})
.optional(),
poDate: z.string().optional(), // May not always be present
orderDate: z.unknown().optional(), // API uses orderDate with complex structure
totalAmount: z.number().optional(), // May not always be present
terms: z.string().optional(),
fobPoint: z.string().optional(),
lines: z.array(PurchaseOrderLineSchema),
receipts: z.array(z.unknown()).optional(),
invoices: z.array(z.unknown()).optional(),
});
// Purchase Order List Parameters Schema
export const PurchaseOrderListParamsSchema = BaseGetParamsSchema.extend({
complete: z.string().optional(),
orderBy: z.string().optional(),
q: z.string().optional(),
locationId: z.coerce.number().optional(),
}).merge(EdgeCacheParamsSchema);
// Purchase Order Scan Parameters Schema
export const PurchaseOrderScanParamsSchema = z.object({
vendorId: z.coerce.number().optional(), // API expects number, not string
locationId: z.coerce.number().optional(),
dateRange: z
.object({
startDate: z.string().optional(),
endDate: z.string().optional(),
})
.optional(),
itemIds: z.array(z.string()).optional(),
minAmount: z.coerce.number().optional(),
maxAmount: z.coerce.number().optional(),
complete: z.string().optional(),
});
// Purchase Order Scan Result Schema
export const PurchaseOrderScanResultSchema = z.object({
poNo: z.number(),
vendorId: z.number(), // API returns number, not string
poDate: z.string().optional(), // May use orderDate instead
orderDate: z.unknown().optional(), // API uses orderDate with complex structure
totalAmount: z.number().optional(), // May not always be present
similarity: z.number(),
matchedCriteria: z.array(z.string()),
});
// Response Schemas
export const PurchaseOrderListResponseSchema = BaseResponseSchema(z.array(PurchaseOrderHeaderSchema));
export const PurchaseOrderDetailResponseSchema = BaseResponseSchema(PurchaseOrderDetailSchema);
export const PurchaseOrderDocumentResponseSchema = BaseResponseSchema(PurchaseOrderDocumentSchema);
export const PurchaseOrderScanResponseSchema = BaseResponseSchema(z.array(PurchaseOrderScanResultSchema));
//# sourceMappingURL=purchase-orders.js.map