Lottery & Gambling Budgeting Tool

Set Your Budget

Log Gambling/Lottery Activity

Budget Overview & Activity History

No budget set. Please set up your budget in the "Budget Setup" tab.

Transaction History (Current Period)

Date Type Spent ($) Won ($) Net ($) Action

No budget set. Please set up your budget in the "Budget Setup" tab.

'; noTransactionsMessage.style.display = 'block'; downloadButton.style.display = 'none'; return; } const budgetPeriodEndDate = lgb_calculatePeriodEndDate(settings.budgetStartDate, settings.periodType, settings.customDays); if (!budgetPeriodEndDate) { budgetDisplay.innerHTML = '

Invalid budget period. Please check your budget settings.

'; noTransactionsMessage.style.display = 'block'; downloadButton.style.display = 'none'; return; } const transactions = lgb_loadTransactions(); const periodTransactions = transactions.filter(tx => { const txDate = new Date(tx.date + "T00:00:00"); const startDate = new Date(settings.budgetStartDate + "T00:00:00"); return txDate >= startDate && txDate <= budgetPeriodEndDate; }); let totalSpentThisPeriod = 0; let totalWonThisPeriod = 0; periodTransactions.forEach(tx => { totalSpentThisPeriod += tx.spent; totalWonThisPeriod += tx.won; const row = transactionTableBody.insertRow(); row.insertCell().textContent = lgb_formatDate(tx.date); row.insertCell().textContent = tx.type; row.insertCell().textContent = lgb_formatCurrency(tx.spent); row.insertCell().textContent = lgb_formatCurrency(tx.won); row.insertCell().textContent = lgb_formatCurrency(tx.won - tx.spent); const deleteButton = document.createElement('button'); deleteButton.textContent = 'Del'; deleteButton.onclick = function() { lgb_deleteTransaction(tx.id); }; row.insertCell().appendChild(deleteButton).classList.add('action-cell'); }); if (periodTransactions.length === 0) { noTransactionsMessage.style.display = 'block'; } else { noTransactionsMessage.style.display = 'none'; } const remainingBudget = settings.budgetAmount - totalSpentThisPeriod; const netResult = totalWonThisPeriod - totalSpentThisPeriod; const percentSpent = settings.budgetAmount > 0 ? (totalSpentThisPeriod / settings.budgetAmount) * 100 : 0; budgetDisplay.innerHTML = `
Budget Period: ${lgb_formatDate(settings.budgetStartDate)} - ${lgb_formatDate(budgetPeriodEndDate.toISOString().split('T')[0])}
Budget Allotment: ${lgb_formatCurrency(settings.budgetAmount)}
Total Spent: ${lgb_formatCurrency(totalSpentThisPeriod)}
${Math.round(percentSpent)}% Used
Remaining Budget: ${lgb_formatCurrency(remainingBudget)}
Total Won: ${lgb_formatCurrency(totalWonThisPeriod)}
Net Result (Win/Loss): ${lgb_formatCurrency(netResult)}
`; downloadButton.style.display = 'block'; } function lgb_confirmClearAllData() { if (confirm("Are you sure you want to clear ALL your budget settings and transaction history? This action cannot be undone.")) { localStorage.removeItem(LGB_BUDGET_SETTINGS_KEY); localStorage.removeItem(LGB_TRANSACTIONS_KEY); // Clear input fields in Budget Setup document.getElementById('lgb_budgetPeriodType').value = 'weekly'; document.getElementById('lgb_budgetCustomDays').value = ''; document.getElementById('lgb_budgetAmount').value = ''; document.getElementById('lgb_budgetStartDate').value = lgb_getTodayDateString(); lgb_toggleCustomDays(); // Reset custom days visibility alert("All data has been cleared."); lgb_renderOverview(); // Refresh overview to show empty state } } // PDF Download function lgb_downloadPDF() { if (typeof jspdf === 'undefined' || typeof jspdf.jsPDF === 'undefined' || typeof html2canvas === 'undefined') { alert('PDF generation libraries not loaded. Please try again.'); return; } const { jsPDF } = jspdf; const pdf = new jsPDF('p', 'pt', 'a4'); const pdfCreationTimestamp = new Date().toLocaleString(); const pdfContentEl = document.createElement('div'); // Apply styles similar to .pdf-* classes here if needed for html2canvas pdfContentEl.style.position = 'absolute'; pdfContentEl.style.left = '-9999px'; pdfContentEl.style.width = '550px'; pdfContentEl.style.fontFamily = 'Arial, sans-serif'; const settings = lgb_loadBudgetSettings(); const transactions = lgb_loadTransactions(); const budgetPeriodEndDate = lgb_calculatePeriodEndDate(settings.budgetStartDate, settings.periodType, settings.customDays); const periodTransactions = transactions.filter(tx => { const txDate = new Date(tx.date + "T00:00:00"); const startDate = new Date(settings.budgetStartDate + "T00:00:00"); return txDate >= startDate && txDate <= budgetPeriodEndDate; }); let totalSpent = 0, totalWon = 0; periodTransactions.forEach(tx => { totalSpent += tx.spent; totalWon += tx.won; }); const remaining = settings.budgetAmount - totalSpent; const net = totalWon - totalSpent; let transactionsHtml = ""; periodTransactions.forEach(tx => { transactionsHtml += `${lgb_formatDate(tx.date)}${tx.type}${lgb_formatCurrency(tx.spent)}${lgb_formatCurrency(tx.won)}${lgb_formatCurrency(tx.won - tx.spent)}`; }); if (periodTransactions.length === 0) transactionsHtml = `No activities logged for this period.`; pdfContentEl.innerHTML = `
Lottery & Gambling Budget Report
Budget Summary
Period:${lgb_formatDate(settings.budgetStartDate)} - ${lgb_formatDate(budgetPeriodEndDate ? budgetPeriodEndDate.toISOString().split('T')[0] : 'N/A')}
Budget Amount:${lgb_formatCurrency(settings.budgetAmount)}
Total Spent:${lgb_formatCurrency(totalSpent)}
Remaining Budget:${lgb_formatCurrency(remaining)}
Total Won:${lgb_formatCurrency(totalWon)}
Net Result:${lgb_formatCurrency(net)}
Transaction History
${transactionsHtml}
DateTypeSpent ($)Won ($)Net ($)
`; document.body.appendChild(pdfContentEl); html2canvas(pdfContentEl, { scale: 2, useCORS: true }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdfWidth = pdf.internal.pageSize.getWidth(); pdf.addImage(imgData, 'PNG', 20, 20, pdfWidth - 40, 0); // Auto-height pdf.save('Gambling_Budget_Report.pdf'); document.body.removeChild(pdfContentEl); }).catch(err => { console.error("PDF Error:", err); alert("Error generating PDF."); if(document.body.contains(pdfContentEl)) document.body.removeChild(pdfContentEl); }); } // Initialization document.addEventListener('DOMContentLoaded', function() { // Set default dates document.getElementById('lgb_budgetStartDate').value = lgb_getTodayDateString(); document.getElementById('lgb_activityDate').value = lgb_getTodayDateString(); // Load existing settings into Budget Setup tab const settings = lgb_loadBudgetSettings(); if (settings.periodType) document.getElementById('lgb_budgetPeriodType').value = settings.periodType; if (settings.customDays) document.getElementById('lgb_budgetCustomDays').value = settings.customDays; if (settings.budgetAmount) document.getElementById('lgb_budgetAmount').value = settings.budgetAmount; if (settings.budgetStartDate) document.getElementById('lgb_budgetStartDate').value = settings.budgetStartDate; lgb_toggleCustomDays(); // Ensure custom days field visibility is correct lgb_openTab({}, 'budgetSetupTab'); // Start on budget setup lgb_renderOverview(); // Render initial overview based on stored data // Null check example if (!document.getElementById('lgb_budgetAmount')) { console.error("Critical input 'lgb_budgetAmount' not found. Tool might not function correctly."); } });
Scroll to Top