Supplier Ethics Compliance Audit Tool

Supplier Ethics Compliance Audit Tool

Evaluate supplier adherence to ethical standards.

Supplier & Audit Details

Step 1 of 3

${assessment} Compliance Level

Recommendations

${recommendations.length === 0 ? '

No immediate recommendations. All areas are compliant.

' : `
    ${recommendations.map(r => `
  • ${r.status}: ${r.text} - ${r.recommendation}
  • `).join('')}
`}
`; getElement('report-output').innerHTML = html; showTab(3); }; const handlePdfDownload = () => { if (!appData.auditResults) { alert('Please generate a report first.'); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFontSize(20); doc.text("Supplier Ethics Compliance Audit Report", 105, 20, { align: 'center' }); doc.setFontSize(12); doc.text("Audit Summary", 14, 40); doc.setFontSize(10); doc.text(`Supplier: ${appData.supplierName}\nLocation: ${appData.supplierLocation}\nAudit Date: ${appData.auditDate}\nAuditor: ${appData.auditorName}`, 14, 48); const totalPossibleScore = appData.auditResults.length * 2; const actualScore = appData.auditResults.reduce((sum, item) => sum + item.value, 0); const percentage = totalPossibleScore > 0 ? (actualScore / totalPossibleScore * 100).toFixed(1) : 0; doc.setFontSize(12); doc.text(`Overall Compliance Score: ${percentage}%`, 14, 70); const tableBody = appData.auditResults.map(r => [r.category, r.text, r.status]); doc.autoTable({ startY: 80, head: [['Category', 'Audit Point', 'Status']], body: tableBody, theme: 'grid', headStyles: { fillColor: [41, 128, 185] }, didParseCell: function(data) { if (data.section === 'body' && data.column.index === 2) { if (data.cell.raw === 'Non-Compliant') data.cell.styles.textColor = [220, 53, 69]; if (data.cell.raw === 'Needs Improvement') data.cell.styles.textColor = [245, 158, 11]; if (data.cell.raw === 'Compliant') data.cell.styles.textColor = [25, 135, 84]; } } }); const finalY = doc.autoTable.previous.finalY + 15; const recommendations = appData.auditResults.filter(r => r.value < 2); if(recommendations.length > 0) { doc.setFontSize(12); doc.text("Recommendations", 14, finalY); const recText = recommendations.map(r => `- ${r.status}: ${r.text}\n Recommendation: ${r.recommendation}`).join('\n'); doc.setFontSize(9); doc.text(recText, 14, finalY + 7); } doc.setFontSize(8); doc.setTextColor(150); doc.text("Disclaimer: This audit tool is for guidance purposes only.", 105, doc.internal.pageSize.height - 10, { align: 'center' }); doc.save(`Supplier-Ethics-Audit-${appData.supplierName.replace(/\s/g, '_')}.pdf`); }; // Event Listeners nextBtn.addEventListener('click', () => { if (!validateTab(currentTab)) return; saveTabData(); if (currentTab < totalTabs) { if (currentTab === totalTabs - 1) { generateReport(); } else { showTab(currentTab + 1); } } }); prevBtn.addEventListener('click', () => { if (currentTab > 1) { saveTabData(); showTab(currentTab - 1); } }); downloadPdfBtn.addEventListener('click', handlePdfDownload); // Initial Setup populateChecklist(); updateNavigation(); });
Scroll to Top