@kadconsulting/dry
Version:
KAD Reusable Component Library
101 lines • 4.1 kB
JavaScript
// 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