import {z} from 'zod' export type GetApiPurchaseorderV1GetPurchaseOrdersByPageArgs = {actualDeliveryDateEnd?: string | undefined, actualDeliveryDateStart?: string | undefined, authenticationtoken: string, expectedDeliveryDateEnd?: string | undefined, expectedDeliveryDateStart?: string | undefined, includeDetails?: boolean | undefined, invoiceDateEnd?: string | undefined, invoiceDateStart?: string | undefined, locationCode?: string | undefined, orderDateEnd?: string | undefined, orderDateStart?: string | undefined, orderType?: string | undefined, pageNumber?: number | undefined, password: string, postDate?: string | undefined, productNumber?: string | undefined, purchaseOrderNumber?: string | undefined, reconcileDateEnd?: string | undefined, reconcileDateStart?: string | undefined, sitename: string, status?: ('1' | '7' | '3' | '4') | undefined, submitDateEnd?: string | undefined, submitDateStart?: string | undefined, traceabilityCode?: string | undefined, userid: string, vendorCode?: string | undefined, vendorInvoiceNumber?: string | undefined, vendorProductName?: string | undefined, vendorProductNumber?: string | undefined, 'X-B3-TraceId'?: string | undefined, pageSize?: number | undefined, minutesSinceUpdate?: number | undefined, sortBy?: ('orderPk' | 'orderNumber' | 'lastUpdated' | 'submitDate' | 'createDate' | 'invoiceDate') | undefined, sortOrder?: ('ASC' | 'DESC') | undefined, includeNull?: boolean | undefined}; export type GetApiPurchaseorderV1GetPurchaseOrdersByPageOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const purchaseOrderDetailsDto = z.object({actualBidContractConv: z.number().optional(), actualBidContractPrice: z.number().optional(), addVendorCode: z.string().optional(), altVpFlag: z.boolean().optional(), approvePriceAlertFlag: z.boolean().optional(), approveQuantityAlertFlag: z.boolean().optional(), catchWeighted: z.boolean().optional(), cnvConfirmToInventory: z.number().optional(), cnvEntryToInventory: z.number().optional(), cnvReconcileToInventory: z.number().optional(), completeTaxRate: z.number().optional(), confirmTermsPriceAlert: z.boolean().optional(), confirmTermsQuantityAlert: z.boolean().optional(), creditValue: z.number().optional(), expirationDate: z.string().optional(), expirationDateUTC: z.string().optional(), lotNumber: z.string().optional(), manufacturerNumber: z.string().optional(), marketName: z.string().optional(), minDaysOnHand: z.number().optional(), notApproved: z.boolean().optional(), poLineNumber: z.number().int().optional(), priceCaptureDate: z.string().optional(), priceCaptureDateUTC: z.string().optional(), priceConfirmation: z.number().optional(), priceEntry: z.number().optional(), priceInvoice: z.number().optional(), priceInvoiceOriginal: z.number().optional(), priceReconcile: z.number().optional(), priceRemediationFlag: z.boolean().optional(), priceUsed: z.number().optional(), productBrand: z.string().optional(), productNumber: z.string().optional(), projectedConsumption: z.number().optional(), qualitativeJudgement: z.string().optional(), quantityConfirm: z.number().optional(), quantityConfirmForInv: z.number().optional(), quantityEntry: z.number().optional(), quantityEntryForInv: z.number().optional(), quantityInvoice: z.number().optional(), quantityInvoiceForInv: z.number().optional(), quantityMoForInv: z.number().optional(), quantityReconcile: z.number().optional(), quantityReconcileForInv: z.number().optional(), quantityRemediationFlag: z.boolean().optional(), quantitySuggestedForInv: z.number().optional(), referenceLineNumber: z.number().int().optional(), referenceNumber: z.string().optional(), restricted: z.boolean().optional(), splitFlag: z.boolean().optional(), storageCode: z.string().optional(), subConversionFactor: z.number().optional(), subPackage: z.string().optional(), subProductFlag: z.boolean().optional(), subProductName: z.string().optional(), subProductNumber: z.string().optional(), taxCode: z.string().optional(), temperature: z.number().optional(), traceabilityCode: z.string().optional(), traceabilityCodeSource: z.string().optional(), vendorPackage: z.string().optional(), vendorPackageOrder: z.string().optional(), vendorPortalDetailExists: z.boolean().optional(), vendorPortalSubExists: z.boolean().optional(), vendorProductName: z.string().optional(), vendorProductNumber: z.string().optional(), vpOriginalReconcilePrice: z.number().optional(), vpOriginalReconcileQuantity: z.number().optional()}); export const purchaseOrderHeaderDto = z.object({accountNumber: z.string().optional(), actualDeliveryDate: z.string().optional(), adjustInvoicePrices: z.boolean().optional(), apBatchNumber: z.string().optional(), approvalDate: z.string().optional(), approvalDateUTC: z.string().optional(), approvalRequiredFlag: z.boolean().optional(), approvalUser: z.string().optional(), autoOrderFlag: z.boolean().optional(), autoOrderTransmitFlag: z.boolean().optional(), checkNumber: z.string().optional(), confirmAnticipatedShipDate: z.string().optional(), confirmAnticipatedShipDateUTC: z.string().optional(), confirmDate: z.string().optional(), confirmReceiptDate: z.string().optional(), confirmReceiptFlag: z.boolean().optional(), confirmReceiptTrackingNum: z.string().optional(), confirmReceiptUser: z.string().optional(), confirmTermsAlert: z.boolean().optional(), confirmTermsFlag: z.boolean().optional(), confirmUser: z.string().optional(), consumptionDays: z.number().optional(), corporateCurrency: z.string().optional(), createDate: z.string().optional(), createDateUTC: z.string().optional(), createdByOcr: z.boolean().optional(), createdByReconciler: z.boolean().optional(), ctxConfirmReceiptUser: z.string().optional(), ctxConfirmUser: z.string().optional(), ctxInvoiceUser: z.string().optional(), deliverToLocationCode: z.string().optional(), details: z.array(purchaseOrderDetailsDto).optional(), disputeDate: z.string().optional(), disputeDateTime: z.string().optional(), disputeDateTimeUTC: z.string().optional(), disputeDateUTC: z.string().optional(), doNotTransmitFlag: z.boolean().optional(), electronicInvoiceDate: z.string().optional(), electronicInvoiceDateUTC: z.string().optional(), electronicInvoiceFlag: z.boolean().optional(), entryDate: z.string().optional(), entryDateUTC: z.string().optional(), entryUser: z.string().optional(), expectedDeliveryDate: z.string().optional(), finalReconcileDate: z.string().optional(), finalReconcileDateUTC: z.string().optional(), finalReconcileUser: z.string().optional(), invoiceDate: z.string().optional(), invoiceNumber: z.string().optional(), invoiceTotal: z.number().optional(), locCorpCurrencyRatio: z.number().optional(), locationCode: z.string().optional(), locationCurrency: z.string().optional(), marketName: z.string().optional(), message: z.string().optional(), misc1Amount: z.number().optional(), misc1GlNumber: z.string().optional(), misc2Amount: z.number().optional(), misc2GlNumber: z.string().optional(), orderType: z.string().optional(), orderUnitSelected: z.string().optional(), postDate: z.string().optional(), receivedWithoutInvoiceFlag: z.boolean().optional(), reconcileDate: z.string().optional(), reconcileDateUTC: z.string().optional(), reconcileUser: z.string().optional(), referenceNumber: z.string().optional(), remediateDate: z.string().optional(), remediateDateUTC: z.string().optional(), remediateUser: z.string().optional(), remediationDate: z.string().optional(), remediationDateUTC: z.string().optional(), remediationFlag: z.boolean().optional(), remediationUser: z.string().optional(), shippingAmount: z.number().optional(), shippingGlNumber: z.string().optional(), status: z.number().int().optional(), submitDate: z.string().optional(), submitDateUTC: z.string().optional(), submitUser: z.string().optional(), taxAmount: z.number().optional(), taxGlNumber: z.string().optional(), transactionNumber: z.string().optional(), userMatchAlertFlag: z.boolean().optional(), venLocCurrencyRatio: z.number().optional(), vendorCode: z.string().optional(), vendorCurrency: z.string().optional(), vendorPortalOrderExists: z.boolean().optional(), vpInvoiceFlag: z.boolean().optional()}); export const purchaseOrderBatchResponseDto = z.object({hasNext: z.boolean().optional(), purchaseOrderDetails: z.array(purchaseOrderHeaderDto).optional(), totalPages: z.number().int().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * getPurchaseOrdersByPage * * GET /purchaseorder/v1/getPurchaseOrdersByPage */ export const getApiPurchaseorderV1GetPurchaseOrdersByPage = async (args: GetApiPurchaseorderV1GetPurchaseOrdersByPageArgs, options: GetApiPurchaseorderV1GetPurchaseOrdersByPageOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.actualDeliveryDateEnd != null) query.append("actualDeliveryDateEnd", String(args.actualDeliveryDateEnd)) if (args.actualDeliveryDateStart != null) query.append("actualDeliveryDateStart", String(args.actualDeliveryDateStart)) if (args.authenticationtoken != null) headers.set("authenticationtoken", String(args.authenticationtoken)) if (args.expectedDeliveryDateEnd != null) query.append("expectedDeliveryDateEnd", String(args.expectedDeliveryDateEnd)) if (args.expectedDeliveryDateStart != null) query.append("expectedDeliveryDateStart", String(args.expectedDeliveryDateStart)) if (args.includeDetails != null) query.append("includeDetails", String(args.includeDetails)) if (args.invoiceDateEnd != null) query.append("invoiceDateEnd", String(args.invoiceDateEnd)) if (args.invoiceDateStart != null) query.append("invoiceDateStart", String(args.invoiceDateStart)) if (args.locationCode != null) query.append("locationCode", String(args.locationCode)) if (args.orderDateEnd != null) query.append("orderDateEnd", String(args.orderDateEnd)) if (args.orderDateStart != null) query.append("orderDateStart", String(args.orderDateStart)) if (args.orderType != null) query.append("orderType", String(args.orderType)) if (args.pageNumber != null) query.append("pageNumber", String(args.pageNumber)) if (args.password != null) headers.set("password", String(args.password)) if (args.postDate != null) query.append("postDate", String(args.postDate)) if (args.productNumber != null) query.append("productNumber", String(args.productNumber)) if (args.purchaseOrderNumber != null) query.append("purchaseOrderNumber", String(args.purchaseOrderNumber)) if (args.reconcileDateEnd != null) query.append("reconcileDateEnd", String(args.reconcileDateEnd)) if (args.reconcileDateStart != null) query.append("reconcileDateStart", String(args.reconcileDateStart)) if (args.sitename != null) headers.set("sitename", String(args.sitename)) if (args.status != null) query.append("status", String(args.status)) if (args.submitDateEnd != null) query.append("submitDateEnd", String(args.submitDateEnd)) if (args.submitDateStart != null) query.append("submitDateStart", String(args.submitDateStart)) if (args.traceabilityCode != null) query.append("traceabilityCode", String(args.traceabilityCode)) if (args.userid != null) headers.set("userid", String(args.userid)) if (args.vendorCode != null) query.append("vendorCode", String(args.vendorCode)) if (args.vendorInvoiceNumber != null) query.append("vendorInvoiceNumber", String(args.vendorInvoiceNumber)) if (args.vendorProductName != null) query.append("vendorProductName", String(args.vendorProductName)) if (args.vendorProductNumber != null) query.append("vendorProductNumber", String(args.vendorProductNumber)) if (args['X-B3-TraceId'] != null) headers.set("X-B3-TraceId", String(args['X-B3-TraceId'])) if (args.pageSize != null) query.append("pageSize", String(args.pageSize)) if (args.minutesSinceUpdate != null) query.append("minutesSinceUpdate", String(args.minutesSinceUpdate)) if (args.sortBy != null) query.append("sortBy", String(args.sortBy)) if (args.sortOrder != null) query.append("sortOrder", String(args.sortOrder)) if (args.includeNull != null) query.append("includeNull", String(args.includeNull)) const url = `${baseUrl.replace(/\/+$/, '')}/purchaseorder/v1/getPurchaseOrdersByPage${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(purchaseOrderBatchResponseDto, await res.json()) };