Export Compliance Plan Document

Export Compliance Plan Document Generator

1. Policy Statement & Commitment
2. Restricted Party Screening & Documentation
3. Training & Auditing

1. Export Control Classifications

Define the key ECCNs (Export Control Classification Numbers) or USML (U.S. Munitions List) Categories for your products/technology.

Add/Edit Classification
List Code Item Description Control Reason Actions

2. Restricted Party Screening Steps

Define the exact procedural steps for screening a transaction.

# Procedure Step Action

Export Compliance Plan Document Draft

Go to the Plan Builder and Control Definitions tabs to define the content.

WARNING: This is a document template and must be reviewed by legal counsel.

`; reviewContent.innerHTML = html; pdfDownloadBtn.disabled = false; switchTab(2); // Switch to review tab }; /** * PDF Generation Function */ const downloadPDF = () => { const data = getMetaFormData(); const jsPDF = window.jspdf.jsPDF; const doc = new jsPDF('p', 'pt', 'a4'); let currentY = 40; const margin = 40; const pageWidth = doc.internal.pageSize.width; const maxWidth = pageWidth - (margin * 2); const checkPageBreak = (spaceNeeded) => { if (currentY + spaceNeeded > doc.internal.pageSize.height - margin) { doc.addPage(); currentY = margin; } }; const addSectionHeader = (title, color = [0, 0, 0]) => { checkPageBreak(30); doc.setFontSize(16); doc.setFont('Helvetica', 'bold'); doc.setTextColor(color[0], color[1], color[2]); doc.text(title, margin, currentY); currentY += 10; doc.setLineWidth(0.5); doc.setDrawColor(200); doc.line(margin, currentY, pageWidth - margin, currentY); currentY += 12; doc.setTextColor(0); }; const addText = (text, size = 10, style = 'normal', indent = 0) => { doc.setFontSize(size); doc.setFont('Helvetica', style); const lines = doc.splitTextToSize(text, maxWidth - indent); checkPageBreak(lines.length * 9); doc.text(lines, margin + indent, currentY); currentY += (lines.length * 9); }; const addKeyValue = (key, value) => { doc.setFontSize(10); doc.setFont('Helvetica', 'bold'); const keyText = `${key}: `; const keyWidth = doc.getStringUnitWidth(keyText) * 10; const valueLines = doc.splitTextToSize(value, maxWidth - keyWidth); checkPageBreak(10); doc.text(keyText, margin, currentY); doc.setFont('Helvetica', 'normal'); doc.text(valueLines[0], margin + keyWidth, currentY); currentY += 10; for(let i = 1; i < valueLines.length; i++) { doc.text(valueLines[i], margin + keyWidth, currentY); currentY += 10; } }; // --- PDF Content --- // Title Block doc.setFontSize(22); doc.setFont('Helvetica', 'bold'); doc.setTextColor(0, 77, 64); doc.text(`EXPORT COMPLIANCE PLAN`, pageWidth / 2, currentY, { align: 'center' }); currentY += 15; doc.setFontSize(14); doc.text(data.company_name, pageWidth / 2, currentY, { align: 'center' }); currentY += 10; doc.setFontSize(10); doc.text(`Version ${data.version_number} | Effective: ${data.policy_date}`, pageWidth / 2, currentY, { align: 'center' }); currentY += 20; // 1. Policy Statement addSectionHeader("1. Executive Summary & Policy Statement", [0, 77, 64]); addText("Management Commitment:", 10, 'bold'); addText(data.policy_commitment, 10, 'normal', 10); currentY += 5; addKeyValue("Compliance Officer", data.policy_owner); currentY += 5; // 2. Classification addSectionHeader("2. Export Control Classifications", [0, 77, 64]); if (classifications.length > 0) { const classHead = [["List", "Code", "Item Description", "Control Reason"]]; const classBody = classifications.map(c => [c.type, c.code, c.item, c.reason]); doc.autoTable({ startY: currentY, head: classHead, body: classBody, theme: 'grid', headStyles: { fillColor: [74, 78, 105], textColor: [255] }, // Secondary color styles: { fontSize: 9, cellPadding: 5, font: 'Helvetica' } }); currentY = doc.autoTable.previous.finalY + 15; } else { addText("No critical classifications defined.", 11, 'italic'); currentY += 10; } // 3. Screening Procedures addSectionHeader("3. Restricted Party Screening Procedures", [0, 77, 64]); addText("Policy:", 10, 'bold'); addText(data.screening_policy, 10, 'normal', 10); currentY += 5; addText("Mandatory Screening Steps:", 10, 'bold'); if (screeningSteps.length > 0) { screeningSteps.forEach((item, index) => { addText(`${index + 1}. ${item.step}`, 10, 'normal', 10); }); } else { addText("No screening steps defined.", 10, 'italic', 10); } currentY += 5; // 4. Documentation & Training addSectionHeader("4. Documentation, Training, & Audit", [0, 77, 64]); addText("Documentation Policy:", 10, 'bold'); addText(data.documentation_policy, 10, 'normal', 10); currentY += 5; addText("Training Policy:", 10, 'bold'); addText(data.training_policy, 10, 'normal', 10); currentY += 5; addText("Internal Audit Policy:", 10, 'bold'); addText(data.audit_policy, 10, 'normal', 10); currentY += 15; // Footer Disclaimer currentY = doc.internal.pageSize.height - 30; doc.setFontSize(8); doc.setFont('Helvetica', 'italic'); doc.setTextColor(244, 67, 54); doc.text("WARNING: This is a document template and must be reviewed by legal counsel.", pageWidth / 2, currentY, { align: 'center' }); doc.setTextColor(0); doc.save(`${data.company_name.replace(/\s/g, '_')}_Export_Compliance_Plan.pdf`); }; // --- Tab Navigation --- const switchTab = (tabIndex) => { tabs.forEach((tab, index) => { tab.classList.toggle('active', index === tabIndex); contents[index].classList.toggle('active', index === tabIndex); }); currentTab = tabIndex; updateNavButtons(); if (tabIndex === 2) { renderReviewSheet(); } } const updateNavButtons = () => { prevBtn.disabled = currentTab === 0; nextBtn.disabled = currentTab === tabs.length - 1; } tabs.forEach((tab, index) => { tab.addEventListener('click', () => { const tabNode = tab.closest('.compliance-tab-button'); const newIndex = Array.from(tabNode.parentNode.children).indexOf(tabNode); switchTab(newIndex); }); }); nextBtn.addEventListener('click', () => { if (currentTab < tabs.length - 1) switchTab(currentTab + 1); }); prevBtn.addEventListener('click', () => { if (currentTab > 0) switchTab(currentTab - 1); }); // --- Event Listeners and Initial Load --- generateReviewBtn.addEventListener('click', renderReviewSheet); pdfDownloadBtn.addEventListener('click', downloadPDF); // Initial Setup setInitialDate(); renderClassifications(); renderScreeningSteps(); updateNavButtons(); });
Scroll to Top