document.addEventListener("DOMContentLoaded", function () { function getValue(name) { var el = document.getElementsByName(name)[0]; return el ? parseFloat(el.value) || 0 : 0; } function setValue(name, val) { var el = document.getElementsByName(name)[0]; if (el) el.value = Number(val).toFixed(2); } // ---- Track last edited field for Tax(A) ---- let lastEditedTaxA = null; document.getElementsByName("per_tax_a")[0].addEventListener("input", () => { lastEditedTaxA = "percentage"; }); document.getElementsByName("tax_a_cal")[0].addEventListener("input", () => { lastEditedTaxA = "amount"; }); window.calculate = function () { // ---------------- BASIC INPUTS ---------------- var gross_total_income = getValue("gross_total_income"); var disallowance_14a = getValue("disallowance_14a"); var disallowance_37 = getValue("disallowance_37"); var gross_total = gross_total_income + disallowance_14a + disallowance_37; setValue("gti_as_per_ao", gross_total); // ---------------- DEDUCTIONS ---------------- var d80_business = getValue("deduction_80ia_business"); var d80_misc = getValue("deduction_80ia_misc"); var d80_other = getValue("deduction_80ia_other"); var d80_sec37 = getValue("deduction_sec37_disallowance"); var deduction_80g = getValue("deduction_80g"); var deduction = d80_business + d80_misc + d80_other + d80_sec37 - 1.35; var net_taxable_income = gross_total - deduction - deduction_80g; setValue("net_taxable_income", net_taxable_income); // ================= TAX (A) – TWO WAY ================= var per_tax_a = getValue("per_tax_a"); var tax_a_cal = getValue("tax_a_cal"); if (net_taxable_income > 0) { if (lastEditedTaxA === "percentage") { tax_a_cal = net_taxable_income * (per_tax_a / 100); setValue("tax_a_cal", tax_a_cal); } else if (lastEditedTaxA === "amount") { per_tax_a = (tax_a_cal / net_taxable_income) * 100; setValue("per_tax_a", per_tax_a); } } var per_surcharge_a = getValue("per_surcharge_a"); var surcharge_a_cal = tax_a_cal * (per_surcharge_a / 100); setValue("surcharge_a_cal", surcharge_a_cal); var per_cess_a = getValue("per_cess_a"); var edu_cess_a_cal = (tax_a_cal + surcharge_a_cal) * (per_cess_a / 100); setValue("edu_cess_a_cal", edu_cess_a_cal); var sum_of_a = tax_a_cal + surcharge_a_cal + edu_cess_a_cal; setValue("sum_of_a", sum_of_a); // ================= TAX (B) ================= var tax_b_cal = getValue("tax_b_cal"); var per_surcharge_b = getValue("per_surcharge_b"); var surcharge_b_cal = tax_b_cal * (per_surcharge_b / 100); setValue("surcharge_b_cal", surcharge_b_cal); var per_cess_b = getValue("per_cess_b"); var edu_cess_b_cal = (tax_b_cal + surcharge_b_cal) * (per_cess_b / 100); setValue("edu_cess_b_cal", edu_cess_b_cal); var sum_of_b = tax_b_cal + surcharge_b_cal + edu_cess_b_cal; setValue("sum_of_b", sum_of_b); // ================= TAX PAYABLE ================= var tax_payable = (sum_of_a > sum_of_b) ? tax_a_cal : tax_b_cal; setValue("tax_payable", tax_payable); var total_tax_payable = (sum_of_a > sum_of_b) ? sum_of_a : sum_of_b; setValue("total_tax_payable", total_tax_payable); // ================= MAT CREDIT ================= var mat_created = 0; var mat_utilized = 0; if (sum_of_a < sum_of_b) { mat_created = sum_of_b - sum_of_a; } else { mat_utilized = sum_of_a - sum_of_b; } setValue("mat_credit_created", mat_created); setValue("mat_credit_utilized", mat_utilized); // ================= Opening Balance and closing ================= var opening_balance = getValue("opening_balance"); var closing_balance = (opening_balance + mat_created) - mat_utilized setValue("closing_balance", closing_balance); // ================= FINAL TAX ================= var interest_234c = getValue("interest_234c"); var total_tax = total_tax_payable + interest_234c - mat_utilized; setValue("total_tax", total_tax); // ================= ADJUSTMENTS ================= var adv_tax = getValue("advance_tax"); var tds = getValue("tds"); var tcs = getValue("tcs"); var tax_on_assessment = getValue("tax_on_assessment"); var interest_244a_per143 = getValue("interest_244a_per143"); var refund_received = getValue("refund_received"); var paid_tax = adv_tax + tds + tcs + tax_on_assessment; var refund = total_tax - paid_tax; setValue("refund", refund); var balance_receivable = (refund + interest_244a_per143) - refund_received setValue("balance_receivable", balance_receivable); }; });