/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/utils/idGen.util.js const { v4: uuidv4 } = require("uuid"); const { nextSequence } = require("./referenceNumber.util"); const {log} = require("./consoleLog.utill"); const {generateInquiryNumber} = require("./id/inquiryID.utill"); const { generateRFQNumber } = require("./id/quotation.utill"); const {generatePONumber} = require("./id/po.utill"); const { generateDeliveryNote } = require("./id/dispatchNote.utill"); const generateUserId = () => { return "usr_" + Math.random().toString(36).slice(2, 10); }; const generateClientId = () => { const prefix = "cli_"; return prefix + uuidv4(); }; const generateInquRefNo = async (port) => { const reference_number = await generateInquiryNumber(port); log("Generated Number", reference_number) return reference_number; }; const generateInquId = async (port) => { const prefix = "inq_"; const inquID = prefix + uuidv4(); return inquID; }; const generateCategoryId = () => { const prefix = "cte_"; return prefix + uuidv4(); }; const generateRemarkId = () => { const prefix = "rmk_"; return prefix + uuidv4(); }; const generateTodoId = () => { const prefix = "tdo_"; return prefix + uuidv4(); }; const generateVendorStatusId = () => { const prefix = "vst_"; return prefix + uuidv4(); } const generateVendorId = () => { const prefix = "vnd_"; return prefix + uuidv4(); } const generateVendorPICId = () => { const prefix = "vpic_"; return prefix + uuidv4(); } const generateVendorDocumentId = () => { const prefix = "vdoc_"; return prefix + uuidv4(); } const generateColumnId = () => { const prefix = "col_"; return prefix + uuidv4(); } const generatePreCostId = () => { const prefix = "pc_"; return prefix + uuidv4(); } const generatePreCostPaymanentId = () => { const prefix = "pcp_"; return prefix + uuidv4(); } const generateCalenderId = () => { const prefix = "cal_"; return prefix + uuidv4(); } const generateId = () => { return uuidv4(); }; const generateInvoiceNo = async () => { const invoiceNumber = await nextSequence("invoice"); return `INV-${invoiceNumber.toString().padStart(6, "0")}`; } const generateDocumentReferenceNo = async (type) => { const normalizedType = String(type).toUpperCase().replace(/[\s_-]+/g, ""); if (normalizedType === "QUOTATION"){ // Implement quotation number generation logic here return 'N/A' } else if (normalizedType === "PRECOST"){ // Implement precost number generation logic here const precostRef = await generateRFQNumber() return precostRef } else if (normalizedType === "PO"){ // Implement contract number generation logic here const Ref = await generatePONumber("OSC/2602") return Ref } else if (normalizedType === "BILL"){ return 'N/A' // Implement bill number generation logic here } else if (normalizedType === "PAYMENT"){ return 'N/A' // Implement payment number generation logic here } else if (normalizedType === "INVOICE"){ // Implement invoice number generation logic here const invoiceNo = await generateInvoiceNo(); return invoiceNo; } else if (normalizedType === "CREDITNOTE") { return 'N/A'; } else if (normalizedType === "DELIVERYNOTE") { const orderNo = "OSC/2602"; const deliveryNoteNo = await generateDeliveryNote(orderNo); return deliveryNoteNo; }else { throw new Error("Unsupported document type for ID generation"); } } module.exports = { generateUserId, generateClientId, generateInquId, generateInquRefNo, generateId, generateCategoryId, generateRemarkId, generateTodoId, generateVendorStatusId, generateVendorId, generateVendorPICId, generateVendorDocumentId, generateColumnId, generatePreCostId, generatePreCostPaymanentId, generateDocumentReferenceNo, generateCalenderId, };