Files
IncomeTaxSystem/static/js/ao_calc.js

94 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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");
// 11 Total Tax
let total_tax = total_tax_payable + mat_credit + interest_234c;
setVal("total_tax", total_tax);
// 12 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);
// 13 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);
}
});
});