Dropshipping Order Manager

Dropshipping Order Manager

Track your orders, costs, and profits in one place.

Total Revenue

$0.00

Total Costs

$0.00

Net Profit

$0.00

Profit Margin

0.0%

Add New Order

Order List

Product Status Profit Actions

${order.productName}

${order.supplier || 'N/A'}

${order.status === 'Canceled' ? '-' : formatCurrency(profit)} `; ordersTableBody.innerHTML += row; }); }; const addOrder = (e) => { e.preventDefault(); const newOrder = { id: nextOrderId++, productName: e.target.elements['product-name'].value, supplier: e.target.elements['supplier'].value, salePrice: parseFloat(e.target.elements['sale-price'].value), productCost: parseFloat(e.target.elements['product-cost'].value), shippingCost: parseFloat(e.target.elements['shipping-cost'].value), status: 'Pending' }; state.orders.unshift(newOrder); e.target.reset(); renderAll(); }; const removeOrder = (id) => { state.orders = state.orders.filter(o => o.id !== id); renderAll(); }; window.removeOrder = removeOrder; const updateOrderStatus = (id, newStatus) => { const order = state.orders.find(o => o.id === id); if(order) order.status = newStatus; renderAll(); }; window.updateOrderStatus = updateOrderStatus; const handleDownloadPdf = () => { const pdfContentEl = document.getElementById('pdf-content'); if (!pdfContentEl) return; // Populate PDF document.getElementById('pdf-timestamp').textContent = new Date().toLocaleString('en-US'); document.getElementById('pdf-summary-revenue').textContent = summaryRevenueEl.textContent; document.getElementById('pdf-summary-costs').textContent = summaryCostsEl.textContent; document.getElementById('pdf-summary-profit').textContent = summaryProfitEl.textContent; document.getElementById('pdf-summary-margin').textContent = summaryMarginEl.textContent; const pdfTableContainer = document.getElementById('pdf-table-container'); let tableHTML = ``; state.orders.forEach(order => { const totalCost = order.productCost + order.shippingCost; const profit = order.salePrice - totalCost; tableHTML += ``; }); tableHTML += '
Product Supplier Status Sale Price Total Cost Profit
${order.productName} ${order.supplier} ${order.status} ${formatCurrency(order.salePrice)} ${formatCurrency(totalCost)} ${order.status === 'Canceled' ? '-' : formatCurrency(profit)}
'; pdfTableContainer.innerHTML = tableHTML; pdfContentEl.classList.remove('hidden'); html2canvas(pdfContentEl, { scale: 2 }).then(canvas => { pdfContentEl.classList.add('hidden'); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'landscape', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const margin = 40; const imgWidth = pdfWidth - (margin * 2); const imgHeight = (canvas.height * imgWidth) / canvas.width; pdf.addImage(imgData, 'PNG', margin, margin, imgWidth, imgHeight); pdf.save('dropshipping-order-report.pdf'); }).catch(err => { console.error("Error generating PDF:", err); pdfContentEl.classList.add('hidden'); }); }; const formatCurrency = (val) => new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(val); // --- Event Listeners & Initial Load --- addOrderForm.addEventListener('submit', addOrder); pdfBtn.addEventListener('click', handleDownloadPdf); // Sample Data const sampleOrders = [ { productName: 'Ergonomic Office Chair', supplier: 'Comfort Seating Co.', salePrice: 299.99, productCost: 150.00, shippingCost: 25.00, status: 'Delivered'}, { productName: 'Wireless Mechanical Keyboard', supplier: 'TechGear', salePrice: 129.50, productCost: 70.00, shippingCost: 10.00, status: 'Shipped'}, { productName: '4K Ultra-Wide Monitor', supplier: 'Vision Displays', salePrice: 799.00, productCost: 550.00, shippingCost: 40.00, status: 'Pending'}, { productName: 'Noise-Cancelling Headphones', supplier: 'SoundWave Audio', salePrice: 199.00, productCost: 95.00, shippingCost: 0.00, status: 'Canceled'} ]; sampleOrders.forEach(o => { state.orders.push({id: nextOrderId++, ...o}); }); renderAll(); });
Scroll to Top