Bulk Order Shipment Cost Estimator

Bulk Order Shipment Cost Estimator

Estimate shipping costs based on package details and destination.

Origin (FROM)

Destination (TO)

Packages

Qty Weight (lbs) L (in) W (in) H (in) Action

Service Level

Shipment Cost Estimate

Disclaimer: These are simulated estimates for planning purposes only and are not official quotes from carriers. Costs are based on a model considering billable weight, distance, and service level.

${r.name}

${r.transit}

$${r.cost.toFixed(2)}

${index === 0 ? '

Best Value

' : ''}
`).join(''); } // --- Tab Logic --- function switchTab(targetTab) { tabs.forEach(tab => tab.classList.toggle('active', tab.dataset.tab === targetTab)); tabContents.forEach(content => content.classList.toggle('active', content.id === targetTab)); updateNavButtons(); } nextBtn.addEventListener('click', () => { const data = calculateCosts(); if (data) { renderResults(data); switchTab('estimate'); } }); prevBtn.addEventListener('click', () => switchTab('details')); function updateNavButtons() { const currentTabId = document.querySelector('.tab-content.active').id; if (currentTabId === 'details') { prevBtn.disabled = true; nextBtn.style.display = 'inline-flex'; pdfButtonContainer.style.display = 'none'; } else { prevBtn.disabled = false; nextBtn.style.display = 'none'; pdfButtonContainer.style.display = 'block'; } } // --- PDF Download --- downloadPdfBtn.addEventListener('click', async () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const content = document.getElementById('pdf-content'); doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text('Shipment Cost Estimate', 14, 22); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Generated on: ${new Date().toLocaleDateString()}`, 14, 28); const canvas = await html2canvas(content, { scale: 2 }); const imgData = canvas.toDataURL('image/jpeg', 1.0); const imgProps = doc.getImageProperties(imgData); const pdfWidth = doc.internal.pageSize.getWidth() - 28; const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; doc.addImage(imgData, 'JPEG', 14, 40, pdfWidth, pdfHeight); doc.save(`Shipping-Estimate-${new Date().toISOString().slice(0,10)}.pdf`); }); // --- Initial Load --- populateStates(); populateSampleData(); updateNavButtons(); });
Scroll to Top