EcoDweller
Professional Invoice Generator
Create eco-friendly, paperless invoices that align with your sustainable business values
Invoice Generator Create New Invoice
Invoice From
Bill To
`);
printWindow.document.close();
}function resetForm() {
if (confirm('Are you sure you want to reset the form? All entered data will be lost.')) {
document.getElementById('businessDetails').value = '';
document.getElementById('clientDetails').value = '';
// Set dates to today and today + 30 days
const today = new Date().toISOString().split('T')[0];
const dueDate = new Date();
dueDate.setDate(dueDate.getDate() + 30);
document.getElementById('issueDate').value = today;
document.getElementById('dueDate').value = dueDate.toISOString().split('T')[0];
document.getElementById('currency').value = 'USD';
document.getElementById('paymentTerms').value = 'NET30';
document.getElementById('discount').value = '0';
document.getElementById('taxRate').value = '0';
document.getElementById('shipping').value = '0';
document.getElementById('notes').value = '';
document.getElementById('terms').value = '';
document.getElementById('bankDetails').value = '';
document.getElementById('upiId').value = '';
document.getElementById('paypalEmail').value = '';
document.getElementById('stripeLink').value = '';
document.getElementById('paymentLink').value = '';
document.getElementById('cashInstructions').value = '';
document.getElementById('otherPaymentDetails').value = '';
document.querySelector('input[name="paymentMethod"][value="cash"]').checked = true;
document.getElementById('logo').value = '';
document.getElementById('logoPreview').innerHTML = '';
document.getElementById('logoError').textContent = '';
logoFile = null;
resizedLogoURL = null;const itemsDiv = document.getElementById('items');
itemsDiv.innerHTML = `
`;
bindItemEvents(itemsDiv.querySelector('.item-row'));
togglePaymentDetails();
updateAmounts();
// Clear all error messages
document.querySelectorAll('.error').forEach(el => el.textContent = '');
}
}function initEventListeners() {
// Amount calculation listeners
document.getElementById('discount').addEventListener('input', updateAmounts);
document.getElementById('discountType').addEventListener('change', updateAmounts);
document.getElementById('taxRate').addEventListener('input', updateAmounts);
document.getElementById('shipping').addEventListener('input', updateAmounts);
// Bind events to initial item row
const initialItemRow = document.querySelector('.item-row');
if (initialItemRow) bindItemEvents(initialItemRow);// Payment method change listener
document.querySelectorAll('input[name="paymentMethod"]').forEach(radio => {
radio.addEventListener('change', togglePaymentDetails);
});// Initialize UI
togglePaymentDetails();
updateAmounts();
// Currency change listener
document.getElementById('currency').addEventListener('change', updateAmounts);
}