UNPKG

@kadconsulting/dry

Version:
101 lines 4.1 kB
// TODO-p1: Replace with database generated IDs by the or through some other reliable mechanism to ensure uniqueness export const generateNumericId = () => { return Math.floor(Math.random() * 1000000); }; // Utility function to generate a random date between two given dates function getRandomDate(start, end) { return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())); } // Utility function to generate mock Product IDs function generateMockProductIds(numProducts) { const productIds = []; for (let i = 1; i <= numProducts; i++) { productIds.push(generateNumericId()); } return productIds; } // Utility function to generate a random element from an array function getRandomElement(array, longText) { if (longText) { const numElements = Math.floor(Math.random() * 100) + 50; // Random number between 50 and 149 let result = ''; for (let i = 0; i < numElements; i++) { const randomIndex = Math.floor(Math.random() * array.length); result += array[randomIndex] + ' '; } return result.trim(); } return array[Math.floor(Math.random() * array.length)]; } // Main function to generate mock Purchase Orders export function generateMockPurchaseOrders({ numOrders, longText, }) { // Constants for generating random data const statuses = [ 'RFQ Open', 'RFQ Sent', 'Purchase Order', 'Closed Orders', 'Cancelled', ]; const billingStates = [ 'Invoiced', 'To Invoice', 'No Invoice', ]; const vendors = ['Vendor1', 'Vendor2', 'Vendor3', 'Vendor4']; const poOwners = ['Owner1', 'Owner2', 'Owner3', 'Owner4']; const users = ['User1', 'User2', 'User3', 'User4']; // Initialize an empty array to hold mock Purchase Orders const mockPurchaseOrders = []; // Loop to generate each mock Purchase Order for (let i = 1; i <= numOrders; i++) { // Generate random values for each field const orderNumber = `PO${i}`; const projectId = `Project${i}`; const productIds = generateMockProductIds(5); // Generate 5 mock product IDs per order const orderState = getRandomElement(statuses, longText); const vendorId = getRandomElement(vendors, longText); const poOwner = getRandomElement(poOwners, longText); const dateCreated = getRandomDate(new Date(2023, 0, 1), new Date(2023, 11, 31)) .toISOString() .split('T')[0]; const submittedBy = getRandomElement(users, longText); const note = `This is a note for order ${orderNumber}`; const attachments = []; // Assuming no attachments for mock data const orderTotal = parseFloat((Math.random() * 10000).toFixed(2)); const deadlineDate = getRandomDate(new Date(2023, 0, 1), new Date(2023, 11, 31)) .toISOString() .split('T')[0]; const deliveryConfirmation = Math.random() < 0.5; // Random boolean value const totalUnits = Math.floor(Math.random() * 100); const billingState = getRandomElement(billingStates, longText); // Create the mock Purchase Order object const mockPurchaseOrder = { id: i, orderNumber, customClass: orderNumber, productIds, projectId, deliveryLocationId: 'DeliveryLocation1', // Assuming a single delivery location for all orders in mock data orderState, billingState, vendorId, poOwner, dateCreated, submittedBy, note, attachments, orderTotal, deadlineDate, deliveryConfirmation, totalUnits, notesIds: [], mobileTitle: `PO${i} - ${orderState}`, mobileSubTitle: `Vendor: ${vendorId}`, }; // Add the mock Purchase Order to the array mockPurchaseOrders.push(mockPurchaseOrder); } return mockPurchaseOrders; } //# sourceMappingURL=utils.js.map