diff --git a/static/js/ao_calc.js b/static/js/ao_calc.js new file mode 100644 index 0000000..e702fd9 --- /dev/null +++ b/static/js/ao_calc.js @@ -0,0 +1,93 @@ +document.addEventListener("DOMContentLoaded", function () { + + // All fields that must trigger calculation + const fields = [ + "gross_total_income", "disallowance_14a", "disallowance_37", + "deduction_80ia_business", "deduction_sec37_disallowance", "deduction_80g", + "net_taxable_income", "tax_30_percent", "tax_book_profit_18_5", + "surcharge_12", "edu_cess_3", "total_tax_payable", "mat_credit", + "interest_234c", "total_tax", "advance_tax", "tds", "tcs", + "tax_on_assessment", "refund" + ]; + + function getVal(id) { + return parseFloat(document.getElementsByName(id)[0].value) || 0; + } + + function setVal(id, value) { + document.getElementsByName(id)[0].value = Number(value).toFixed(2); + } + + function calculate() { + + // 1️ Base Values + let gross_total_income = getVal("gross_total_income"); + let disallowance_14a = getVal("disallowance_14a"); + let disallowance_37 = getVal("disallowance_37"); + + // 2️ Deductions + let d80_business = getVal("deduction_80ia_business"); + let deduction_sec37 = getVal("deduction_sec37_disallowance"); + let deduction_80g = getVal("deduction_80g"); + + // 3️ Formula: TOTAL DEDUCTION + let total_deductions = d80_business + deduction_sec37; + // (deduction_80ia_business + deduction_sec37_disallowance) + + // 4️ Net Taxable Income + let net_taxable_income = + (gross_total_income + disallowance_14a + disallowance_37) + - total_deductions + - deduction_80g; + + setVal("net_taxable_income", net_taxable_income); + + // 5️ Tax @ 30% + let tax_30_percent = net_taxable_income * 0.30; + setVal("tax_30_percent", tax_30_percent); + + // 6️ Book Profit – Tax Payable + let tax_payable = getVal("tax_book_profit_18_5"); + // (tax_payable = tax_book_profit_18_5) + + // 7️ Surcharge + let surcharge_12 = tax_30_percent * 0.12; + setVal("surcharge_12", surcharge_12); + + // 8️ Education Cess + let edu_cess_3 = (tax_30_percent + surcharge_12) * 0.03; + setVal("edu_cess_3", edu_cess_3); + + // 9️ Total Tax Payable + let total_tax_payable = tax_30_percent + surcharge_12 + edu_cess_3; + setVal("total_tax_payable", total_tax_payable); + + // MAT Credit & Interest + let mat_credit = getVal("mat_credit"); + let interest_234c = getVal("interest_234c"); + + // 1️1️ Total Tax + let total_tax = total_tax_payable + mat_credit + interest_234c; + setVal("total_tax", total_tax); + + // 1️2️ Assessment side – Advance Tax, TDS, TCS + let advance_tax = getVal("advance_tax"); + let tds = getVal("tds"); + let tcs = getVal("tcs"); + + let tax_on_assessment = advance_tax + tds + tcs; + setVal("tax_on_assessment", tax_on_assessment); + + // 1️3️ Refund / Payable + let refund = total_tax - tax_on_assessment; + setVal("refund", refund); + } + + // Attach input listeners + fields.forEach(id => { + let input = document.getElementsByName(id)[0]; + if (input) { + input.addEventListener("input", calculate); + } + }); +}); diff --git a/static/js/itr_calc.js b/static/js/itr_calc.js new file mode 100644 index 0000000..ee601c5 --- /dev/null +++ b/static/js/itr_calc.js @@ -0,0 +1,83 @@ +document.addEventListener("DOMContentLoaded", function () { + const fields = [ + "gross_total_income", "disallowance_14a", "disallowance_37", + "deduction_80ia_business", "deduction_80ia_misc", "deduction_80ia_other", + "deduction_sec37_disallowance", "deduction_80g", "net_taxable_income", + "tax_30_percent", "tax_book_profit_18_5", "tax_payable", "surcharge_12", + "edu_cess_3", "total_tax_payable", "mat_credit", "interest_234c", + "total_tax", "advance_tax", "tds", "tcs", "tax_on_assessment", "refund" + ]; + + function getValue(id) { + return parseFloat(document.getElementsByName(id)[0].value) || 0; + } + + function setValue(id, val) { + document.getElementsByName(id)[0].value = val.toFixed(2); + } + + function calculate() { + + let gross_total_income = getValue("gross_total_income"); + let disallowance_14a = getValue("disallowance_14a"); + let disallowance_37 = getValue("disallowance_37"); + + // FORMULAS + setValue("gross_total_income", disallowance_37 + gross_total_income); + setValue("disallowance_37", disallowance_14a + disallowance_37); + + // Deductions + let d80_business = getValue("deduction_80ia_business"); + let d80_misc = getValue("deduction_80ia_misc"); + let d80_other = getValue("deduction_80ia_other"); + + let deduction_sec37 = d80_business + d80_misc + d80_other - 1.35; + setValue("deduction_sec37_disallowance", deduction_sec37); + + let deduction_80g = getValue("deduction_80g"); + + // Net taxable income + let net_taxable_income = gross_total_income - deduction_sec37 - deduction_80g; + setValue("net_taxable_income", net_taxable_income); + + // Tax calculations + setValue("tax_30_percent", net_taxable_income * 0.30); + + let tax_book_profit = getValue("tax_book_profit_18_5"); + setValue("tax_payable", tax_book_profit); + + let surcharge = tax_book_profit * 0.12; + setValue("surcharge_12", surcharge); + + let edu_cess = (tax_book_profit + surcharge) * 0.03; + setValue("edu_cess_3", edu_cess); + + let total_tax_payable = tax_book_profit + surcharge + edu_cess; + setValue("total_tax_payable", total_tax_payable); + + let mat_credit = getValue("mat_credit"); + let interest_234c = getValue("interest_234c"); + + let total_tax = total_tax_payable + mat_credit + interest_234c; + setValue("total_tax", total_tax); + + // Assessment + let adv_tax = getValue("advance_tax"); + let tds = getValue("tds"); + let tcs = getValue("tcs"); + + let tax_on_assessment = adv_tax + tds + tcs; + setValue("tax_on_assessment", tax_on_assessment); + + let refund = total_tax - tax_on_assessment; + setValue("refund", refund); + } + + // Attach event listeners + fields.forEach(id => { + const element = document.getElementsByName(id)[0]; + if (element) { + element.addEventListener("input", calculate); + } + }); +}); diff --git a/templates/add_ao.html b/templates/add_ao.html index af1e681..003e6fa 100644 --- a/templates/add_ao.html +++ b/templates/add_ao.html @@ -1,8 +1,11 @@ +