UNPKG

syia-mcp-vessel-accounts

Version:

MCP server for vessel account management including EyeShare API integration, vessel expenses, and purchase orders

100 lines 3.4 kB
/** * Utility functions for filtering Purchase Order Lines data * Provides functionality to extract only specified fields from PoLines arrays */ /** * Fields to be included in filtered PoLines response */ export const FILTERED_PO_LINES_FIELDS = [ 'AccountCode', 'CostCentre', 'Extra4', 'QtyWrittenOff', 'PoNumber', 'Line', 'Item', 'Description', 'Ordered', 'Received', 'Invoiced', 'OriginalPrice', 'DiscountPercentage', 'Unit', 'CurrencyCode', 'Reserved', 'InvoicedNow', 'InvoicedUnitPrice' ]; /** * Filters a single PoLine object to include only specified fields * @param poLine - The original PoLine object * @returns Filtered PoLine object with only specified fields */ export function filterPoLine(poLine) { if (!poLine || typeof poLine !== 'object') { return poLine; } const filteredPoLine = {}; FILTERED_PO_LINES_FIELDS.forEach(field => { if (field in poLine) { filteredPoLine[field] = poLine[field]; } }); return filteredPoLine; } /** * Filters an array of PoLines to include only specified fields * @param poLines - Array of PoLine objects * @returns Array of filtered PoLine objects */ export function filterPoLines(poLines) { if (!Array.isArray(poLines)) { return poLines; } return poLines.map(filterPoLine); } /** * Filters purchase order data to include only specified PoLines fields * Processes the entire purchase order structure and filters PoLines arrays * @param purchaseOrderData - The complete purchase order response data * @returns Purchase order data with filtered PoLines */ export function filterPurchaseOrderPoLines(purchaseOrderData) { if (!purchaseOrderData || typeof purchaseOrderData !== 'object') { return purchaseOrderData; } // Create a deep copy to avoid modifying the original data const filtered = JSON.parse(JSON.stringify(purchaseOrderData)); // Handle single purchase order with PoLines if (filtered.PoLines && Array.isArray(filtered.PoLines)) { filtered.PoLines = filterPoLines(filtered.PoLines); } // Handle array of purchase orders if (filtered.purchaseOrders && Array.isArray(filtered.purchaseOrders)) { filtered.purchaseOrders = filtered.purchaseOrders.map((po) => { if (po.PoLines && Array.isArray(po.PoLines)) { po.PoLines = filterPoLines(po.PoLines); } return po; }); } // Handle PurchaseOrders array (EyeShare API format) if (filtered.PurchaseOrders && Array.isArray(filtered.PurchaseOrders)) { filtered.PurchaseOrders = filtered.PurchaseOrders.map((po) => { if (po.PoLines && Array.isArray(po.PoLines)) { po.PoLines = filterPoLines(po.PoLines); } return po; }); } // Handle PurchaseOrderLines array (direct line items) if (filtered.PurchaseOrderLines && Array.isArray(filtered.PurchaseOrderLines)) { filtered.PurchaseOrderLines = filterPoLines(filtered.PurchaseOrderLines); } // Handle ExtraCostLines array (additional cost line items) if (filtered.ExtraCostLines && Array.isArray(filtered.ExtraCostLines)) { filtered.ExtraCostLines = filterPoLines(filtered.ExtraCostLines); } return filtered; } //# sourceMappingURL=poLinesFilter.js.map