/** * Form 16 / 26AS data retention: add archived_at to keep last 5 FY active. * Records with financial_year older than 5 years get archived_at set by scheduler (no deletion). */ import { QueryInterface, DataTypes } from 'sequelize'; const TABLES_WITH_FY = [ 'tds_26as_entries', 'form_16_26as_quarter_snapshots', 'form_16_quarter_status', 'form_16_ledger_entries', 'form_16_credit_notes', 'form16a_submissions', ] as const; export async function up(queryInterface: QueryInterface): Promise { for (const table of TABLES_WITH_FY) { await queryInterface.addColumn(table, 'archived_at', { type: DataTypes.DATE, allowNull: true, comment: 'Set when record is older than 5 financial years; active when NULL', }); } await queryInterface.addColumn('form_16_debit_notes', 'archived_at', { type: DataTypes.DATE, allowNull: true, comment: 'Set when linked credit_note is archived; active when NULL', }); } export async function down(queryInterface: QueryInterface): Promise { for (const table of [...TABLES_WITH_FY, 'form_16_debit_notes']) { await queryInterface.removeColumn(table, 'archived_at'); } }