feat: update TDS config, RBI reserve returns, current products, and dormancy reports

This commit is contained in:
2026-09-24 18:07:54 +05:30
parent 1eaa8cc8cf
commit be35f3cbc3
66 changed files with 5474 additions and 565 deletions
@@ -7,7 +7,8 @@
*/
import { isTdsApplicable, tdsDeducteeOf } from '../letter-mgmt/certificates/form-15gh/tds-15gh.compute';
import { TDS_AS_AT, TDS_FYS, depositDueDate, tdsDeductees } from './tds-reports-data';
import { installTdsConfigFixture } from '../letter-mgmt/certificates/form-15gh/tds-config.fixture';
import { TDS_AS_AT, depositDueDate, tdsDeductees, tdsFys } from './tds-reports-data';
import {
NEAR_THRESHOLD_BAND,
TdsReportFilter,
@@ -19,6 +20,8 @@ import {
tdsRemittanceRows
} from './tds-reports.compute';
installTdsConfigFixture();
/** The complete year in the seed — the one a return would be filed for. */
const CLOSED_FY = '2025-26';
@@ -75,7 +78,7 @@ describe('the reports follow the Act that governed each year', () => {
});
it('keeps the age-based threshold band in both years', () => {
for (const fy of TDS_FYS) {
for (const fy of tdsFys()) {
const rows = tdsInterestRowsForFy(fy);
expect(rows.some((r) => r.band === 'SENIOR')).toBe(true);
expect(rows.some((r) => r.band === 'GENERAL')).toBe(true);
@@ -240,7 +243,7 @@ describe('remittance schedule', () => {
});
describe('the 26Q reconciliation control', () => {
it.each(TDS_FYS)('balances for FY %s', (fy) => {
it.each(tdsFys())('balances for FY %s', (fy) => {
const s = tds26qSummary(fy, TDS_AS_AT);
// Deducted must equal deposited plus what is still within its due date.
// Anything else means tax has gone missing between the ledger and the