/** * 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/templates/documents/dispatchNote/dispatchNote.template.js const { log } = require("../../../utils/consoleLog.utill"); module.exports = async (data) => { log("📋 Preparing Dispatch Note data for PDF..."); let payload = data; if (typeof payload === "string") { try { payload = JSON.parse(payload); } catch (error) { payload = {}; } } const source = payload.documentData || payload.document_data || payload.data || payload; const pick = (...keys) => { for (const key of keys) { const value = source?.[key]; if (value !== undefined && value !== null && value !== "") { return value; } } return ""; }; const templateData = { logoUrl: pick("logoUrl", "logo_url") || "https://res.cloudinary.com/dtthuvvir/image/upload/v1780748661/company_logo_transperent_bg_uullzw.png", title: pick("title") || "DISPATCH NOTE", referenceNumber: pick("referenceNumber", "reference_number", "dnNo", "dn_no") || "N/A", date: pick("date") || new Date().toLocaleDateString(), vessel: pick("vessel", "vesselName", "vessel_name") || "", captain: pick("captain", "captainName", "captain_name") || "", cook: pick("cook", "cookName", "cook_name") || "", agent: pick("agent", "agentName", "agent_name") || "", details: pick("details", "remarks", "note") || "", placeOfDelivery: pick("placeOfDelivery", "place_of_delivery") || "", eta: pick("eta") || "", etd: pick("etd") || "", numberOfCrew: pick("numberOfCrew", "number_of_crew", "crewCount", "crew_count") || "", nextMainOrderIn: pick("nextMainOrderIn", "next_main_order_in") || "", port: pick("port", "portName", "port_name") || "", company: pick("company", "companyName", "company_name") || "", fileNo: pick("fileNo", "file_no") || "", items: Array.isArray(source.items) ? source.items : [], showSignatures: pick("showSignatures") !== false, preparedBy: pick("preparedBy", "prepared_by") || "", approvedBy: pick("approvedBy", "approved_by") || "", }; log("✅ Dispatch Note data prepared"); return templateData; };