Wine & Whiskey Investment Return Calculator
Investment Details
Initial & Holding Costs
Sale Projection & Disposal Costs
Investment Return Results
Please complete all previous sections and click "Calculate Investment Return" on the "Sale Projection" tab.
Net Sale Proceeds: ${wwirc_allInputsData.calculations.netSaleProceeds}
Total Profit / Loss: ${wwirc_allInputsData.calculations.totalProfitLoss}
Return on Investment (ROI): ${wwirc_allInputsData.calculations.roi}
Annualized ROI: ${wwirc_allInputsData.calculations.annualizedRoi}
`; downloadButton.style.display = 'block'; resultsTabLink.disabled = false; resultsTabLink.click(); // Switch to results tab } else { console.error("Results display elements not found."); } } window.wwirc_downloadPDF = function() { const { jsPDF } = window.jspdf; if (!jsPDF) { alert("PDF library not loaded. Cannot download PDF."); return; } const doc = new jsPDF(); let yPos = 20; const lineHeight = 7; const indent = 5; const pageMargin = 15; const pageWidth = doc.internal.pageSize.getWidth(); const usableWidth = pageWidth - 2 * pageMargin; doc.setFontSize(18); doc.setTextColor(44, 62, 80); // #2c3e50 doc.text("Wine & Whiskey Investment Return Analysis", pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 2.5; function addSection(title, data) { if (yPos > doc.internal.pageSize.getHeight() - pageMargin - (Object.keys(data).length * lineHeight)) { doc.addPage(); yPos = pageMargin;} doc.setFontSize(13); doc.setFont(undefined, 'bold'); doc.setTextColor(52, 152, 219); // #3498db doc.text(title, pageMargin, yPos); yPos += lineHeight * 1.5; doc.setFontSize(10); doc.setFont(undefined, 'normal'); doc.setTextColor(51,51,51); // #333 for (const [key, value] of Object.entries(data)) { if (yPos > doc.internal.pageSize.getHeight() - pageMargin) { doc.addPage(); yPos = pageMargin; } let formattedKey = key.replace(/([A-Z])/g, ' $1').replace(/^./, function(str){ return str.toUpperCase(); }); // Format key doc.text(`${formattedKey}:`, pageMargin + indent, yPos); doc.text(String(value), pageMargin + indent + 70, yPos, {align: 'left', maxWidth: usableWidth - (indent + 70)}); yPos += lineHeight * 1.2; } yPos += lineHeight * 0.5; // Space after section } addSection("Investment Item Details", { "Item Name/Description": wwirc_allInputsData.itemName, "Asset Type": wwirc_allInputsData.assetType, "Number of Units": wwirc_allInputsData.numUnits, "Purchase Price per Unit": wwirc_allInputsData.purchasePriceUnit }); addSection("Cost & Sale Parameters", { "Buyer's Premium (%)": wwirc_allInputsData.buyersPremiumPercent + '%', "Annual Storage Cost": wwirc_allInputsData.annualStorageCost, "Annual Insurance Cost": wwirc_allInputsData.annualInsuranceCost, "Other Annual Costs": wwirc_allInputsData.otherAnnualCosts, "Holding Period (Years)": wwirc_allInputsData.holdingPeriodYears, "Projected Sale Price per Unit": wwirc_allInputsData.projectedSalePriceUnit, "Seller's Commission (%)": wwirc_allInputsData.sellersCommissionPercent + '%' }); addSection("Calculated Financial Summary", { "Total Initial Purchase Value": wwirc_allInputsData.calculations.totalInitialPurchaseValue, "Buyer's Premium Amount": wwirc_allInputsData.calculations.buyersPremiumAmount, "Total Purchase Cost (A)": wwirc_allInputsData.calculations.totalPurchaseCost, "Total Annual Holding Costs": wwirc_allInputsData.calculations.totalAnnualHoldingCosts, "Total Holding Costs Over Period (B)": wwirc_allInputsData.calculations.totalHoldingCostsOverPeriod, "Total Investment Cost (A+B)": wwirc_allInputsData.calculations.totalInvestmentCost, "Gross Sale Proceeds (C)": wwirc_allInputsData.calculations.grossSaleProceeds, "Seller's Commission Amount (D)": wwirc_allInputsData.calculations.sellersCommissionAmount, "Net Sale Proceeds (C-D)": wwirc_allInputsData.calculations.netSaleProceeds }); addSection("Key Return Metrics", { "Total Profit / Loss": wwirc_allInputsData.calculations.totalProfitLoss, "Return on Investment (ROI)": wwirc_allInputsData.calculations.roi, "Annualized ROI": wwirc_allInputsData.calculations.annualizedRoi }); doc.save('Wine_Whiskey_Investment_Return.pdf'); }