@mudraforge/statutory 2.11.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +172 -1
- package/CONTRIBUTING.md +2 -2
- package/README.md +14 -1
- package/SECURITY.md +2 -2
- package/SKILL.md +1 -1
- package/bin/cli.js +288 -27
- package/docs/ACCOUNTING_ASSURANCE_AUDIT_DOSSIER.md +276 -0
- package/docs/ARCHITECTURE.md +76 -53
- package/docs/ARCHITECTURE_DECISIONS.md +22 -2
- package/docs/CASE_01_FORM_TEXT.txt +48 -0
- package/docs/CATALOG.md +405 -39
- package/docs/CA_PILOT_BENCHMARK_CASES.md +282 -0
- package/docs/CORPUS_QUALITY.md +31 -22
- package/docs/DOMAIN_BREADTH_AND_DEPTH_COMPARISON.md +5 -5
- package/docs/ENTERPRISE_GOVERNANCE.md +2 -1
- package/docs/OKF_MAINTENANCE_SOP.md +5 -5
- package/docs/PILOT_EVALUATION_GUIDE.md +5 -4
- package/docs/PROVENANCE.md +6 -6
- package/docs/VERIFICATION.md +6 -6
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/ast.json +20 -0
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/circulars/mca_notification_indas_103_business_combinations.md +41 -0
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/forms/purchase_price_allocation_schedule.json +110 -0
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/section.json +65 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/ast.json +20 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/circulars/mca_notification_indas_36_impairment.md +45 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/forms/cgu_impairment_testing_register.json +53 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/section.json +61 -0
- package/okf/corporate_ma_restructuring/loss_carryforward_sec79/ast.json +33 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/ast.json +20 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/circulars/icai_guidance_share_based_payments.md +37 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/forms/esop_graded_vesting_amortization_schedule.json +49 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/section.json +60 -0
- package/okf/corporate_ma_restructuring/slump_sale_50b/ast.json +21 -0
- package/okf/corporate_ma_restructuring/tax_clearance_sec281/ast.json +21 -0
- package/okf/direct_tax/corporate_tax_115baa_115jb/ast.json +23 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/ast.json +20 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/circulars/mca_notification_indas_12_income_taxes.md +40 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/forms/deferred_tax_asset_liability_reconciliation_schedule.json +46 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/section.json +61 -0
- package/okf/direct_tax/special_rates_non_filer_206ab/ast.json +26 -0
- package/okf/direct_tax/statutory_disallowance_43b/ast.json +35 -0
- package/okf/direct_tax/tcs_goods_206c_1h/ast.json +69 -0
- package/okf/direct_tax/tds_commission_194h/ast.json +60 -0
- package/okf/direct_tax/tds_commission_194h/section.json +5 -4
- package/okf/direct_tax/tds_contractor_194c/ast.json +71 -0
- package/okf/direct_tax/tds_contractor_194c/section.json +3 -3
- package/okf/direct_tax/tds_ecommerce_194o/ast.json +48 -0
- package/okf/direct_tax/tds_ecommerce_194o/section.json +3 -3
- package/okf/direct_tax/tds_goods_194q/ast.json +71 -0
- package/okf/direct_tax/tds_goods_194q/circulars/cbdt_circular_13_2021_guidelines.md +2 -2
- package/okf/direct_tax/tds_goods_194q/section.json +9 -3
- package/okf/direct_tax/tds_goods_393/ast.json +59 -0
- package/okf/direct_tax/tds_goods_393/section.json +6 -4
- package/okf/direct_tax/tds_individual_contract_194m/ast.json +59 -0
- package/okf/direct_tax/tds_individual_contract_194m/section.json +3 -3
- package/okf/direct_tax/tds_interest_194a/ast.json +59 -0
- package/okf/direct_tax/tds_interest_194a/section.json +7 -4
- package/okf/direct_tax/tds_perquisites_194r/ast.json +47 -0
- package/okf/direct_tax/tds_perquisites_194r/section.json +1 -1
- package/okf/direct_tax/tds_property_194ia/ast.json +70 -0
- package/okf/direct_tax/tds_property_194ia/section.json +3 -3
- package/okf/direct_tax/tds_rent_194i/ast.json +60 -0
- package/okf/direct_tax/tds_rent_194i/section.json +5 -4
- package/okf/direct_tax/tds_rent_individual_194ib/ast.json +59 -0
- package/okf/direct_tax/tds_rent_individual_194ib/section.json +2 -2
- package/okf/direct_tax/tds_services_194j/ast.json +60 -0
- package/okf/direct_tax/tds_services_194j/circulars/cbdt_circular_03_2020_fts_rate_cut.md +1 -1
- package/okf/direct_tax/tds_services_194j/section.json +10 -3
- package/okf/indirect_tax_gst/blocked_itc_17_5/ast.json +26 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/ast.json +26 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_circular_170_2022_itc_reporting.md +30 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_notification_18_2022_cutoff_amendment.md +26 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/gstr_3b_table_4b1_reversal_schedule.json +101 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/rule_42_43_annual_reconciliation_worksheet.json +87 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/section.json +65 -0
- package/okf/indirect_tax_gst/composite_mixed_supplies_sec8/ast.json +21 -0
- package/okf/indirect_tax_gst/composition_levy_sec10/ast.json +23 -0
- package/okf/indirect_tax_gst/credit_debit_notes_sec34/ast.json +21 -0
- package/okf/indirect_tax_gst/e_invoicing_rule48_4/ast.json +20 -0
- package/okf/indirect_tax_gst/export_services_lut_sec16/ast.json +20 -0
- package/okf/indirect_tax_gst/gst_tds_sec51/ast.json +23 -0
- package/okf/indirect_tax_gst/itc_eligibility_16_2/ast.json +20 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/ast.json +45 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/circulars/cbic_circular_192_2023_ecl_interest_calculation.md +36 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/section.json +8 -1
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/ast.json +26 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_07_2025_composition_rent_exclusion.md +41 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_09_2024_renting_rcm.md +37 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/gst_council_55th_meeting_renting_rcm_regularization.md +31 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/section.json +24 -2
- package/okf/international_tax/cross_border_remittance_195/ast.json +39 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/ast.json +24 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/circulars/mca_notification_indas_109_financial_instruments.md +43 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/forms/indas_109_ecl_provision_matrix_schedule.json +43 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/section.json +62 -0
- package/okf/international_tax/foreign_exchange_indas_21_109/ast.json +20 -0
- package/okf/international_tax/foreign_tax_credit_irc_901_904/ast.json +20 -0
- package/okf/international_tax/transfer_pricing_alp_92c/ast.json +25 -0
- package/okf/manifest.json +117 -20
- package/okf/msme_commercial/delayed_payments_15_16/ast.json +38 -0
- package/okf/msme_commercial/enterprise_classification_sec7/ast.json +25 -0
- package/okf/msme_commercial/lease_accounting_indas_116/ast.json +20 -0
- package/okf/msme_commercial/lease_accounting_indas_116/circulars/mca_notification_indas_116_leases.md +48 -0
- package/okf/msme_commercial/lease_accounting_indas_116/forms/lease_rou_asset_and_liability_schedule.json +55 -0
- package/okf/msme_commercial/lease_accounting_indas_116/section.json +67 -0
- package/okf/msme_commercial/mca_msme_1_filing/ast.json +20 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/ast.json +20 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/circulars/mca_notification_indas_37_provisions.md +36 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/forms/provisions_and_contingent_liabilities_register.json +38 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/section.json +61 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/ast.json +20 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/circulars/mca_notification_indas_115_revenue_contracts.md +56 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/forms/revenue_contract_5step_allocation_schedule.json +54 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/section.json +69 -0
- package/okf/msme_commercial/statutory_disclosures_sec22/ast.json +21 -0
- package/package.json +22 -1
- package/src/calculators.js +2195 -260
- package/src/constants.js +1 -1
- package/src/index.js +421 -23
- package/src/payroll.js +506 -0
- package/src/tally.js +812 -0
- package/src/usvm/evaluation_vm.js +504 -0
- package/src/usvm/index.js +65 -0
- package/src/usvm/math_rational.js +165 -0
- package/src/usvm/rules/sec_115baa_115jb_mat.json +23 -0
- package/src/usvm/rules/sec_192_salary_tds.json +23 -0
- package/src/usvm/rules/sec_194a_interest.json +59 -0
- package/src/usvm/rules/sec_194c_contractors.json +71 -0
- package/src/usvm/rules/sec_194h_commission.json +60 -0
- package/src/usvm/rules/sec_194i_rent.json +60 -0
- package/src/usvm/rules/sec_194ia_property.json +70 -0
- package/src/usvm/rules/sec_194ib_rent_ind.json +59 -0
- package/src/usvm/rules/sec_194j_services.json +60 -0
- package/src/usvm/rules/sec_194m_contract_ind.json +59 -0
- package/src/usvm/rules/sec_194o_ecommerce.json +48 -0
- package/src/usvm/rules/sec_194q_goods.json +71 -0
- package/src/usvm/rules/sec_194r_perquisites.json +47 -0
- package/src/usvm/rules/sec_195_cross_border.json +39 -0
- package/src/usvm/rules/sec_206ab_non_filer.json +26 -0
- package/src/usvm/rules/sec_206c1h_tcs.json +69 -0
- package/src/usvm/rules/sec_281_tax_clearance.json +21 -0
- package/src/usvm/rules/sec_393_goods.json +59 -0
- package/src/usvm/rules/sec_43bh_disallowance.json +35 -0
- package/src/usvm/rules/sec_50b_slump_sale.json +21 -0
- package/src/usvm/rules/sec_79_loss_continuity.json +33 -0
- package/src/usvm/rules/sec_92c_transfer_pricing.json +25 -0
- package/src/usvm/rules/sec_ftc_dtaa_relief.json +20 -0
- package/src/usvm/rules/sec_gst_blocked_itc_17_5.json +26 -0
- package/src/usvm/rules/sec_gst_composite_mixed_8.json +21 -0
- package/src/usvm/rules/sec_gst_composition_levy_10.json +23 -0
- package/src/usvm/rules/sec_gst_credit_debit_notes_34.json +21 -0
- package/src/usvm/rules/sec_gst_einvoicing_rule48_4.json +20 -0
- package/src/usvm/rules/sec_gst_ewaybill_rule138.json +21 -0
- package/src/usvm/rules/sec_gst_export_lut_16.json +20 -0
- package/src/usvm/rules/sec_gst_itc_eligibility_16_2.json +20 -0
- package/src/usvm/rules/sec_gst_itc_reversal_rule37_37a.json +45 -0
- package/src/usvm/rules/sec_gst_rcm_liability_9_3.json +26 -0
- package/src/usvm/rules/sec_gst_rule42_43_apportionment.json +26 -0
- package/src/usvm/rules/sec_gst_tds_sec51.json +23 -0
- package/src/usvm/rules/sec_indas102_esop.json +20 -0
- package/src/usvm/rules/sec_indas103_mna.json +20 -0
- package/src/usvm/rules/sec_indas109_ecl.json +24 -0
- package/src/usvm/rules/sec_indas115_revenue.json +20 -0
- package/src/usvm/rules/sec_indas116_leases.json +20 -0
- package/src/usvm/rules/sec_indas12_deferred_tax.json +20 -0
- package/src/usvm/rules/sec_indas21_fx_reval.json +20 -0
- package/src/usvm/rules/sec_indas36_impairment.json +20 -0
- package/src/usvm/rules/sec_indas37_provisions.json +20 -0
- package/src/usvm/rules/sec_msme_classification_sec7.json +25 -0
- package/src/usvm/rules/sec_msme_delayed_payments_15_16.json +38 -0
- package/src/usvm/rules/sec_msme_disclosures_sec22.json +21 -0
- package/src/usvm/rules/sec_msme_mca_form_1.json +20 -0
- package/src/usvm/schemas/statutory_ast_schema.js +203 -0
- package/src/usvm/usvm_domain_evaluators.js +1021 -0
- package/src/zoho_gstr2b.js +2964 -0
- package/types/index.d.ts +515 -0
package/src/constants.js
CHANGED
package/src/index.js
CHANGED
|
@@ -14,15 +14,35 @@ import os from 'node:os';
|
|
|
14
14
|
import crypto from 'node:crypto';
|
|
15
15
|
import dns from 'node:dns';
|
|
16
16
|
import { fileURLToPath } from 'node:url';
|
|
17
|
+
import {
|
|
18
|
+
evaluateStatutoryAst,
|
|
19
|
+
resolveTemporalCrystallization
|
|
20
|
+
} from './usvm/index.js';
|
|
17
21
|
import {
|
|
18
22
|
roundToPaisa,
|
|
19
23
|
roundSection288B,
|
|
24
|
+
cleanNumericAmount,
|
|
25
|
+
toIntegerPaise,
|
|
26
|
+
fromIntegerPaise,
|
|
27
|
+
MalformedNumericInputError,
|
|
28
|
+
MissingMandatoryParameterError,
|
|
29
|
+
assertMandatoryNumeric,
|
|
20
30
|
calculateCorporateTaxMatVsConcessional,
|
|
21
31
|
evaluatePlaceOfSupplyAndLut,
|
|
22
32
|
calculateTransferPricingAlp,
|
|
23
33
|
evaluateSection79LossContinuity,
|
|
24
34
|
evaluateSection281TaxClearance,
|
|
25
35
|
revalueForeignExchangeIndAs109,
|
|
36
|
+
calculateBusinessCombinationsIndAs103,
|
|
37
|
+
calculateImpairmentIndAs36,
|
|
38
|
+
calculateRevenueAllocationIndAs115,
|
|
39
|
+
calculateLeaseAmortizationIndAs116,
|
|
40
|
+
calculateExpectedCreditLossIndAs109,
|
|
41
|
+
calculateEsopAmortizationIndAs102,
|
|
42
|
+
calculateDeferredTaxIndAs12,
|
|
43
|
+
evaluateProvisionsAndContingenciesIndAs37,
|
|
44
|
+
calculateForeignCurrencyIndAs21,
|
|
45
|
+
resolveMissingPanPenaltyFloor,
|
|
26
46
|
evaluateSection194Q,
|
|
27
47
|
evaluateSection194C,
|
|
28
48
|
evaluateSection194H,
|
|
@@ -41,6 +61,9 @@ import {
|
|
|
41
61
|
evaluateSection43bH,
|
|
42
62
|
calculateMsmeCompoundInterest,
|
|
43
63
|
calculateAdvanceTaxAndInterest,
|
|
64
|
+
calculateRule42InputServiceReversal,
|
|
65
|
+
reconcileRule42AnnualTrueUp,
|
|
66
|
+
calculateRule43CapitalGoodsReversal,
|
|
44
67
|
calculateGstItcApportionmentRule42_43,
|
|
45
68
|
evaluateCrossBorderRemittance,
|
|
46
69
|
generateMsme1AndScheduleThreeAging,
|
|
@@ -58,6 +81,27 @@ import {
|
|
|
58
81
|
STATUTORY_OUTCOMES_DICTIONARY,
|
|
59
82
|
enrichWithOutcomeExplanation
|
|
60
83
|
} from './outcomes.js';
|
|
84
|
+
import {
|
|
85
|
+
parseTallyDaybookCsv,
|
|
86
|
+
parseTallyDaybookXml,
|
|
87
|
+
reconcile194QDaybook,
|
|
88
|
+
generateTally194QJournalXml,
|
|
89
|
+
generateAuditMarkdownReport,
|
|
90
|
+
getIndianFinancialYear
|
|
91
|
+
} from './tally.js';
|
|
92
|
+
import {
|
|
93
|
+
parseZohoBillsCsv,
|
|
94
|
+
parseZohoBillsJson,
|
|
95
|
+
parseGstr2bJson,
|
|
96
|
+
reconcileZohoGstr2b,
|
|
97
|
+
generateGstr2bAuditMarkdownReport,
|
|
98
|
+
normalizeInvoiceNumber,
|
|
99
|
+
normalizeGstin,
|
|
100
|
+
calculateOverdueStartDate,
|
|
101
|
+
calculateEclUtilizationInterest,
|
|
102
|
+
calculatePortfolioEclUtilizationInterest,
|
|
103
|
+
buildEvidenceProvenance
|
|
104
|
+
} from './zoho_gstr2b.js';
|
|
61
105
|
|
|
62
106
|
import { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL } from './constants.js';
|
|
63
107
|
|
|
@@ -77,7 +121,7 @@ export { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL };
|
|
|
77
121
|
/**
|
|
78
122
|
* Current verified Merkle root digest for the active OKF v0.2 corpus.
|
|
79
123
|
*/
|
|
80
|
-
export const CURRENT_RELEASE_MERKLE_ROOT = 'sha256-
|
|
124
|
+
export const CURRENT_RELEASE_MERKLE_ROOT = 'sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364';
|
|
81
125
|
export const MERKLE_ROOT_OKF_V2 = CURRENT_RELEASE_MERKLE_ROOT;
|
|
82
126
|
|
|
83
127
|
/**
|
|
@@ -85,6 +129,13 @@ export const MERKLE_ROOT_OKF_V2 = CURRENT_RELEASE_MERKLE_ROOT;
|
|
|
85
129
|
* Prevents unauthorized bundle substitution attacks even if an attacker controls the remote endpoint.
|
|
86
130
|
*/
|
|
87
131
|
export const PINNED_RELEASE_ROOTS = new Set([
|
|
132
|
+
'sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364', // feat/usvm-declarative-architecture (46 Declarative ASTs across 5 canonical domains)
|
|
133
|
+
'sha256-318004673a779499e82fd7316c7a6728f3bcdaf449bb4a557b6bd685b899dee3', // fix/public-okf-table1-sl-nos-and-temporal-thresholds (Section 393 Table 1 Sl Nos & 2025 Act thresholds)
|
|
134
|
+
'sha256-b17c37b2724aece2a28beaab5720a777ae27e661ac51f1436be6eff3ca5ef64b', // feat/okf-accounting-domain-expansion (46 Sections across 5 Domains, 52 Circulars, 47 Forms)
|
|
135
|
+
'sha256-a94baf08cbdea064a7b1bd25c1e1311821bf75e9b0d15cc8e0648339d487c79b', // feat/zoho-gstr2b-ap-reconciliation (38 Sections across 5 Domains, 44 Circulars, 39 Forms)
|
|
136
|
+
'sha256-df76c16ed86673426eeb87fafa1c23712830ce5314339ff17fbb2e0e1795e046', // feat/notification-07-2025-composition-rent-rcm-exclusion (38 Sections across 5 Domains, 42 Circulars)
|
|
137
|
+
'sha256-f7709f6a77a3b5ae16d69baf49f6e5c69bb01e29a4f13a506eb757220bf68e03', // feat/notification-09-2024-commercial-rent-rcm (38 Sections across 5 Domains, 41 Circulars)
|
|
138
|
+
'sha256-2e402bb02fe71939c79b9f11ad737d20faac21daf8e27417cb13ec1933511c19', // feat/gst-rule-42-43 (38 Sections across 5 Domains)
|
|
88
139
|
'sha256-feb1555f10c9f5c70de18ef340e0ba6cf1f060fb19cae866aa36240345c46f3a', // feat/rent-194ib-contract-194m (37 Sections across 5 Domains)
|
|
89
140
|
'sha256-02090e4063a863e3486401215469350c911dc0c9a24855e1d9db2903946aa644', // feat/perquisites-194r (35 Sections across 5 Domains)
|
|
90
141
|
'sha256-bd351719a8235c44f2bac87cc347423baa8ac3ecb74c0ee63d1fffa9f33dbebe', // feat/property-194ia (35 Sections across 5 Domains)
|
|
@@ -870,6 +921,13 @@ export function lookupLocalStatute(section, okfDir = DEFAULT_LOCAL_OKF_DIR) {
|
|
|
870
921
|
forms: fs.existsSync(formsDir) ? fs.readdirSync(formsDir).filter(f => f.endsWith('.json') || f.endsWith('.md')) : []
|
|
871
922
|
};
|
|
872
923
|
|
|
924
|
+
const astPath = path.join(parentDir, 'ast.json');
|
|
925
|
+
if (fs.existsSync(astPath)) {
|
|
926
|
+
try {
|
|
927
|
+
data.ast = JSON.parse(fs.readFileSync(astPath, 'utf8'));
|
|
928
|
+
} catch (_) {}
|
|
929
|
+
}
|
|
930
|
+
|
|
873
931
|
return data;
|
|
874
932
|
}
|
|
875
933
|
return null;
|
|
@@ -1847,6 +1905,69 @@ export class StatutoryClient {
|
|
|
1847
1905
|
return revalueForeignExchangeIndAs109(payload);
|
|
1848
1906
|
}
|
|
1849
1907
|
|
|
1908
|
+
/**
|
|
1909
|
+
* Business Combinations & Purchase Price Allocation (PPA) under Ind AS 103 / IFRS 3 / ASC 805.
|
|
1910
|
+
*/
|
|
1911
|
+
calculateBusinessCombinationsIndAs103(payload) {
|
|
1912
|
+
return calculateBusinessCombinationsIndAs103(payload);
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
/**
|
|
1916
|
+
* Asset & CGU Impairment Testing & DCF Value in Use under Ind AS 36 / IAS 36 / ASC 360.
|
|
1917
|
+
*/
|
|
1918
|
+
calculateImpairmentIndAs36(payload) {
|
|
1919
|
+
return calculateImpairmentIndAs36(payload);
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
/**
|
|
1923
|
+
* 5-Step Revenue Recognition & Relative SSP Allocation under Ind AS 115 / IFRS 15 / ASC 606.
|
|
1924
|
+
*/
|
|
1925
|
+
calculateRevenueAllocationIndAs115(payload) {
|
|
1926
|
+
return calculateRevenueAllocationIndAs115(payload);
|
|
1927
|
+
}
|
|
1928
|
+
|
|
1929
|
+
/**
|
|
1930
|
+
* Right-of-Use Asset & Lease Liability Amortization under Ind AS 116 / IFRS 16 / ASC 842.
|
|
1931
|
+
*/
|
|
1932
|
+
calculateLeaseAmortizationIndAs116(payload) {
|
|
1933
|
+
return calculateLeaseAmortizationIndAs116(payload);
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
/**
|
|
1937
|
+
* Expected Credit Loss (ECL) Impairment under Ind AS 109 / IFRS 9 / ASC 326.
|
|
1938
|
+
*/
|
|
1939
|
+
calculateExpectedCreditLossIndAs109(payload) {
|
|
1940
|
+
return calculateExpectedCreditLossIndAs109(payload);
|
|
1941
|
+
}
|
|
1942
|
+
|
|
1943
|
+
/**
|
|
1944
|
+
* ESOP Graded Vesting Front-Loaded Amortization under Ind AS 102 / IFRS 2 / ASC 718.
|
|
1945
|
+
*/
|
|
1946
|
+
calculateEsopAmortizationIndAs102(payload) {
|
|
1947
|
+
return calculateEsopAmortizationIndAs102(payload);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
/**
|
|
1951
|
+
* Balance Sheet Deferred Tax (DTA / DTL) and ETR Reconciliation under Ind AS 12 / IAS 12 / ASC 740.
|
|
1952
|
+
*/
|
|
1953
|
+
calculateDeferredTaxIndAs12(payload) {
|
|
1954
|
+
return calculateDeferredTaxIndAs12(payload);
|
|
1955
|
+
}
|
|
1956
|
+
|
|
1957
|
+
/**
|
|
1958
|
+
* Provisions, Contingent Liabilities & Tax Dispute Triangulation under Ind AS 37 / IAS 37 / ASC 450.
|
|
1959
|
+
*/
|
|
1960
|
+
evaluateProvisionsAndContingenciesIndAs37(payload) {
|
|
1961
|
+
return evaluateProvisionsAndContingenciesIndAs37(payload);
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1964
|
+
/**
|
|
1965
|
+
* Foreign Currency Monetary Revaluation & FCTR Translation under Ind AS 21 / IAS 21 / ASC 830.
|
|
1966
|
+
*/
|
|
1967
|
+
calculateForeignCurrencyIndAs21(payload) {
|
|
1968
|
+
return calculateForeignCurrencyIndAs21(payload);
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1850
1971
|
/**
|
|
1851
1972
|
* Section 194Q: Deduction of tax at source on purchase of goods exceeding ₹50 Lakh.
|
|
1852
1973
|
*/
|
|
@@ -1952,6 +2073,34 @@ export class StatutoryClient {
|
|
|
1952
2073
|
return calculateRule37ASupplierNonFilingReversal(payload);
|
|
1953
2074
|
}
|
|
1954
2075
|
|
|
2076
|
+
/**
|
|
2077
|
+
* Rule 42: Inputs and input services common ITC reversal (monthly provisional).
|
|
2078
|
+
*/
|
|
2079
|
+
calculateRule42InputServiceReversal(payload) {
|
|
2080
|
+
return calculateRule42InputServiceReversal(payload);
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
/**
|
|
2084
|
+
* Rule 42(2): Annual common credit true-up reconciliation & Section 50(1) interest.
|
|
2085
|
+
*/
|
|
2086
|
+
reconcileRule42AnnualTrueUp(payload) {
|
|
2087
|
+
return reconcileRule42AnnualTrueUp(payload);
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
/**
|
|
2091
|
+
* Rule 43: Capital goods common ITC 60-month amortisation and reversal.
|
|
2092
|
+
*/
|
|
2093
|
+
calculateRule43CapitalGoodsReversal(payload) {
|
|
2094
|
+
return calculateRule43CapitalGoodsReversal(payload);
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
/**
|
|
2098
|
+
* Rule 42 & 43: Combined input tax credit apportionment orchestrator.
|
|
2099
|
+
*/
|
|
2100
|
+
calculateGstItcApportionmentRule42_43(payload) {
|
|
2101
|
+
return calculateGstItcApportionmentRule42_43(payload);
|
|
2102
|
+
}
|
|
2103
|
+
|
|
1955
2104
|
/**
|
|
1956
2105
|
* MSMED Act Section 16: Compound interest with monthly rests at 3x RBI Bank Rate.
|
|
1957
2106
|
*/
|
|
@@ -1973,6 +2122,211 @@ export class StatutoryClient {
|
|
|
1973
2122
|
return evaluateCrossBorderRemittance(payload);
|
|
1974
2123
|
}
|
|
1975
2124
|
|
|
2125
|
+
/**
|
|
2126
|
+
* Parse raw Tally or ERP daybook CSV text into normalized vouchers.
|
|
2127
|
+
* @param {string} csvText
|
|
2128
|
+
*/
|
|
2129
|
+
parseTallyDaybookCsv(csvText) {
|
|
2130
|
+
return parseTallyDaybookCsv(csvText);
|
|
2131
|
+
}
|
|
2132
|
+
|
|
2133
|
+
/**
|
|
2134
|
+
* Parse raw Tally XML daybook export into normalized vouchers.
|
|
2135
|
+
* @param {string} xmlText
|
|
2136
|
+
*/
|
|
2137
|
+
parseTallyDaybookXml(xmlText) {
|
|
2138
|
+
return parseTallyDaybookXml(xmlText);
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
/**
|
|
2142
|
+
* Reconcile daybook vouchers against Section 194Q and Section 40(a)(ia) rules.
|
|
2143
|
+
* @param {Array<Object>} vouchers
|
|
2144
|
+
* @param {Object} [options]
|
|
2145
|
+
*/
|
|
2146
|
+
reconcileDaybook(vouchers, options = {}) {
|
|
2147
|
+
return reconcile194QDaybook(vouchers, options);
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
/**
|
|
2151
|
+
* Programmatic alias for reconcileDaybook.
|
|
2152
|
+
*/
|
|
2153
|
+
reconcile194QDaybook(vouchers, options = {}) {
|
|
2154
|
+
return reconcile194QDaybook(vouchers, options);
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
/**
|
|
2158
|
+
* Generate Tally-compliant XML compensating journal vouchers for unwithheld TDS.
|
|
2159
|
+
* @param {Object} reconciliationResult
|
|
2160
|
+
* @param {Object} [options]
|
|
2161
|
+
*/
|
|
2162
|
+
generateTallyJournalXml(reconciliationResult, options = {}) {
|
|
2163
|
+
return generateTally194QJournalXml(reconciliationResult, options);
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
/**
|
|
2167
|
+
* Programmatic alias for generateTallyJournalXml.
|
|
2168
|
+
*/
|
|
2169
|
+
generateTally194QJournalXml(reconciliationResult, options = {}) {
|
|
2170
|
+
return generateTally194QJournalXml(reconciliationResult, options);
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
/**
|
|
2174
|
+
* Format a clean Markdown audit exception report for Form 3CD working papers.
|
|
2175
|
+
* @param {Object} reconciliationResult
|
|
2176
|
+
*/
|
|
2177
|
+
generateAuditReport(reconciliationResult) {
|
|
2178
|
+
return generateAuditMarkdownReport(reconciliationResult);
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
/**
|
|
2182
|
+
* Parse raw Zoho Books Bills CSV text into normalized bill records.
|
|
2183
|
+
* @param {string} csvText
|
|
2184
|
+
*/
|
|
2185
|
+
parseZohoBillsCsv(csvText) {
|
|
2186
|
+
return parseZohoBillsCsv(csvText);
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
/**
|
|
2190
|
+
* Parse raw Zoho Books API JSON payload into normalized bill records.
|
|
2191
|
+
* @param {Object|string} jsonData
|
|
2192
|
+
*/
|
|
2193
|
+
parseZohoBillsJson(jsonData) {
|
|
2194
|
+
return parseZohoBillsJson(jsonData);
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
/**
|
|
2198
|
+
* Parse raw GST Portal Form GSTR-2B JSON payload into normalized invoice and CDNR records.
|
|
2199
|
+
* @param {Object|string} gstr2bData
|
|
2200
|
+
*/
|
|
2201
|
+
parseGstr2bJson(gstr2bData) {
|
|
2202
|
+
return parseGstr2bJson(gstr2bData);
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
/**
|
|
2206
|
+
* Reconcile Zoho Books AP Bills with Form GSTR-2B and audit Rule 37 180-day aging.
|
|
2207
|
+
* @param {Object} params
|
|
2208
|
+
* @param {Array<Object>|string} params.zohoBills
|
|
2209
|
+
* @param {Array<Object>|string} params.gstr2b
|
|
2210
|
+
* @param {Object} [params.options]
|
|
2211
|
+
*/
|
|
2212
|
+
reconcileZohoGstr2b(params) {
|
|
2213
|
+
return reconcileZohoGstr2b(params);
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
/**
|
|
2217
|
+
* Generate an executive Markdown audit exception memorandum for Zoho Books & GSTR-2B.
|
|
2218
|
+
* @param {Object} reconResult
|
|
2219
|
+
*/
|
|
2220
|
+
generateGstr2bAuditMarkdownReport(reconResult) {
|
|
2221
|
+
return generateGstr2bAuditMarkdownReport(reconResult);
|
|
2222
|
+
}
|
|
2223
|
+
|
|
2224
|
+
/**
|
|
2225
|
+
* Programmatic alias for generateGstr2bAuditMarkdownReport.
|
|
2226
|
+
*/
|
|
2227
|
+
generateGstr2bAuditReport(reconResult) {
|
|
2228
|
+
return generateGstr2bAuditMarkdownReport(reconResult);
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
/**
|
|
2232
|
+
* Reconstruct cumulative portfolio ECL utilization for multiple overlapping overdue invoices under Rule 88B(3).
|
|
2233
|
+
* @param {Object} params
|
|
2234
|
+
*/
|
|
2235
|
+
calculatePortfolioEclUtilizationInterest(params) {
|
|
2236
|
+
return calculatePortfolioEclUtilizationInterest(params);
|
|
2237
|
+
}
|
|
2238
|
+
|
|
2239
|
+
/**
|
|
2240
|
+
* Run regulatory watchtower surveillance and generate Empanelment Freshness Certificate.
|
|
2241
|
+
* @param {Object} [options]
|
|
2242
|
+
*/
|
|
2243
|
+
async runWatchtower(options = {}) {
|
|
2244
|
+
const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
|
|
2245
|
+
return runner({ okfDir: this.okfDir, ...options });
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2248
|
+
/**
|
|
2249
|
+
* Calculate exact Day 180 overdue start date for an invoice.
|
|
2250
|
+
* @param {string} billDateIso
|
|
2251
|
+
*/
|
|
2252
|
+
calculateOverdueStartDate(billDateIso) {
|
|
2253
|
+
return calculateOverdueStartDate(billDateIso);
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
/**
|
|
2257
|
+
* Calculate chronological interest under Section 50(1) read with Rule 88B(3)
|
|
2258
|
+
* across Electronic Credit Ledger (ECL) movements.
|
|
2259
|
+
* @param {Object} params
|
|
2260
|
+
*/
|
|
2261
|
+
calculateEclUtilizationInterest(params) {
|
|
2262
|
+
return calculateEclUtilizationInterest(params);
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
/**
|
|
2266
|
+
* Construct an immutable evidence provenance record for a reconciliation item.
|
|
2267
|
+
* @param {Object} params
|
|
2268
|
+
*/
|
|
2269
|
+
buildEvidenceProvenance(params) {
|
|
2270
|
+
return buildEvidenceProvenance(params);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
/**
|
|
2274
|
+
* Normalize invoice number for exact and alphanumeric canonical matching.
|
|
2275
|
+
* @param {string} raw
|
|
2276
|
+
*/
|
|
2277
|
+
normalizeInvoiceNumber(raw) {
|
|
2278
|
+
return normalizeInvoiceNumber(raw);
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
/**
|
|
2282
|
+
* Normalize and validate GSTIN string.
|
|
2283
|
+
* @param {string} raw
|
|
2284
|
+
*/
|
|
2285
|
+
normalizeGstin(raw) {
|
|
2286
|
+
return normalizeGstin(raw);
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
/**
|
|
2290
|
+
* Programmatic alias for generateAuditReport.
|
|
2291
|
+
*/
|
|
2292
|
+
generateAuditMarkdownReport(reconciliationResult) {
|
|
2293
|
+
return generateAuditMarkdownReport(reconciliationResult);
|
|
2294
|
+
}
|
|
2295
|
+
|
|
2296
|
+
/**
|
|
2297
|
+
* Clean and normalize raw accounting numeric input.
|
|
2298
|
+
* @param {any} val
|
|
2299
|
+
* @param {Object} [options]
|
|
2300
|
+
*/
|
|
2301
|
+
cleanNumericAmount(val, options = {}) {
|
|
2302
|
+
return cleanNumericAmount(val, options);
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
/**
|
|
2306
|
+
* Round an amount to paisa precision (2 decimal places).
|
|
2307
|
+
* @param {any} amount
|
|
2308
|
+
*/
|
|
2309
|
+
roundToPaisa(amount) {
|
|
2310
|
+
return roundToPaisa(amount);
|
|
2311
|
+
}
|
|
2312
|
+
|
|
2313
|
+
/**
|
|
2314
|
+
* Convert rupee amount to integer paise for zero-drift arithmetic.
|
|
2315
|
+
* @param {any} amount
|
|
2316
|
+
* @param {string} [fieldName='amount']
|
|
2317
|
+
*/
|
|
2318
|
+
toIntegerPaise(amount, fieldName = 'amount') {
|
|
2319
|
+
return toIntegerPaise(amount, fieldName);
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
/**
|
|
2323
|
+
* Convert integer paise back to rounded rupees.
|
|
2324
|
+
* @param {number} paise
|
|
2325
|
+
*/
|
|
2326
|
+
fromIntegerPaise(paise) {
|
|
2327
|
+
return fromIntegerPaise(paise);
|
|
2328
|
+
}
|
|
2329
|
+
|
|
1976
2330
|
/**
|
|
1977
2331
|
* Retrieve statutory outcomes and disposition codes.
|
|
1978
2332
|
* @param {string} [provision] Optional section code or provision alias
|
|
@@ -2217,7 +2571,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2217
2571
|
successor: {
|
|
2218
2572
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2219
2573
|
sectionCode: '393',
|
|
2220
|
-
statutorySection: 'Section 393(1), Table
|
|
2574
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 8(ii)',
|
|
2221
2575
|
title: 'Deduction of tax at source on payment of a certain sum for purchase of goods',
|
|
2222
2576
|
effectiveDate: '2026-04-01',
|
|
2223
2577
|
threshold: 'Buyer turnover > ₹10 Cr in preceding FY; annual purchases > ₹50 Lakhs in current FY',
|
|
@@ -2232,10 +2586,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2232
2586
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2233
2587
|
legalPrinciple: 'Tax withholding liability crystallizes on the earlier of credit to payee account in books or payment disbursement. If the trigger event occurred on or before 31 March 2026, the 1961 Act governs the deduction, remittance, and compliance obligations, notwithstanding subsequent settlement.'
|
|
2234
2588
|
},
|
|
2235
|
-
aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 8)(ii)', 'goods tds', 'purchase of goods']
|
|
2589
|
+
aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 1)(sl 8)(ii)', '393(1)(table 8)(ii)', 'ita2025_sec393_table1_sl8_ii', 'goods tds', 'purchase of goods']
|
|
2236
2590
|
},
|
|
2237
2591
|
{
|
|
2238
|
-
id: '
|
|
2592
|
+
id: 'CROSSWALK_194J_393_TABLE1_SL6_III',
|
|
2239
2593
|
domain: 'direct_tax',
|
|
2240
2594
|
predecessor: {
|
|
2241
2595
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2251,10 +2605,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2251
2605
|
successor: {
|
|
2252
2606
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2253
2607
|
sectionCode: '393',
|
|
2254
|
-
statutorySection: 'Section 393(1), Table
|
|
2608
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 6(iii)',
|
|
2255
2609
|
title: 'Deduction of tax at source on fees for professional or technical services',
|
|
2256
2610
|
effectiveDate: '2026-04-01',
|
|
2257
|
-
threshold: '₹
|
|
2611
|
+
threshold: '₹50,000 aggregate in financial year per category',
|
|
2258
2612
|
standardRate: '2.0% (FTS) / 10.0% (Professional)',
|
|
2259
2613
|
penaltyRate: '20.0% (Section 397(2))',
|
|
2260
2614
|
challan: 'Challan under Income-tax Act, 2025',
|
|
@@ -2266,10 +2620,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2266
2620
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2267
2621
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2268
2622
|
},
|
|
2269
|
-
aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 6)', 'technical services tds', 'professional fees tds', 'fts']
|
|
2623
|
+
aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 1)(sl 6)(iii)', '393(1)(table 6)', 'ita2025_sec393_table1_sl6_iii', 'technical services tds', 'professional fees tds', 'fts']
|
|
2270
2624
|
},
|
|
2271
2625
|
{
|
|
2272
|
-
id: '
|
|
2626
|
+
id: 'CROSSWALK_194C_393_TABLE1_SL6_I',
|
|
2273
2627
|
domain: 'direct_tax',
|
|
2274
2628
|
predecessor: {
|
|
2275
2629
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2285,7 +2639,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2285
2639
|
successor: {
|
|
2286
2640
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2287
2641
|
sectionCode: '393',
|
|
2288
|
-
statutorySection: 'Section 393(1), Table
|
|
2642
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 6(i)',
|
|
2289
2643
|
title: 'Deduction of tax at source on payments to contractors',
|
|
2290
2644
|
effectiveDate: '2026-04-01',
|
|
2291
2645
|
threshold: 'Single contract > ₹30,000 or aggregate > ₹1,00,000 in FY',
|
|
@@ -2300,17 +2654,17 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2300
2654
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2301
2655
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2302
2656
|
},
|
|
2303
|
-
aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
|
|
2657
|
+
aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 1)(sl 6)(i)', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
|
|
2304
2658
|
},
|
|
2305
2659
|
{
|
|
2306
|
-
id: '
|
|
2660
|
+
id: 'CROSSWALK_194I_393_TABLE1_SL2',
|
|
2307
2661
|
domain: 'direct_tax',
|
|
2308
2662
|
predecessor: {
|
|
2309
2663
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
2310
2664
|
sectionCode: '194I',
|
|
2311
2665
|
statutorySection: 'Section 194I',
|
|
2312
2666
|
title: 'Deduction of tax at source on rent',
|
|
2313
|
-
threshold: '₹
|
|
2667
|
+
threshold: '₹50,000 per month (or part of month)',
|
|
2314
2668
|
standardRate: '2.0% (Plant & Machinery) / 10.0% (Land & Building)',
|
|
2315
2669
|
penaltyRate: '20.0% (Section 206AA)',
|
|
2316
2670
|
challan: 'ITNS 281',
|
|
@@ -2319,7 +2673,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2319
2673
|
successor: {
|
|
2320
2674
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2321
2675
|
sectionCode: '393',
|
|
2322
|
-
statutorySection: 'Section 393(1), Table
|
|
2676
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 2',
|
|
2323
2677
|
title: 'Deduction of tax at source on rent',
|
|
2324
2678
|
effectiveDate: '2026-04-01',
|
|
2325
2679
|
threshold: '₹2,40,000 aggregate in financial year',
|
|
@@ -2334,10 +2688,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2334
2688
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2335
2689
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2336
2690
|
},
|
|
2337
|
-
aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 5)', 'rent tds']
|
|
2691
|
+
aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 1)(sl 2)', '393(1)(table 5)', 'rent tds']
|
|
2338
2692
|
},
|
|
2339
2693
|
{
|
|
2340
|
-
id: '
|
|
2694
|
+
id: 'CROSSWALK_194H_393_TABLE1_SL1_II',
|
|
2341
2695
|
domain: 'direct_tax',
|
|
2342
2696
|
predecessor: {
|
|
2343
2697
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2353,10 +2707,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2353
2707
|
successor: {
|
|
2354
2708
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2355
2709
|
sectionCode: '393',
|
|
2356
|
-
statutorySection: 'Section 393(1), Table
|
|
2710
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 1(ii)',
|
|
2357
2711
|
title: 'Deduction of tax at source on commission or brokerage',
|
|
2358
2712
|
effectiveDate: '2026-04-01',
|
|
2359
|
-
threshold: '₹
|
|
2713
|
+
threshold: '₹20,000 aggregate in financial year',
|
|
2360
2714
|
standardRate: '2.0%',
|
|
2361
2715
|
penaltyRate: '20.0% (Section 397(2))',
|
|
2362
2716
|
challan: 'Challan under Income-tax Act, 2025',
|
|
@@ -2368,10 +2722,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2368
2722
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2369
2723
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2370
2724
|
},
|
|
2371
|
-
aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 4)', 'commission tds', 'brokerage tds']
|
|
2725
|
+
aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 1)(sl 1)(ii)', '393(1)(table 4)', 'commission tds', 'brokerage tds']
|
|
2372
2726
|
},
|
|
2373
2727
|
{
|
|
2374
|
-
id: '
|
|
2728
|
+
id: 'CROSSWALK_194R_393_TABLE1_SL8_IV',
|
|
2375
2729
|
domain: 'direct_tax',
|
|
2376
2730
|
predecessor: {
|
|
2377
2731
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2387,7 +2741,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2387
2741
|
successor: {
|
|
2388
2742
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2389
2743
|
sectionCode: '393',
|
|
2390
|
-
statutorySection: 'Section 393(1), Table
|
|
2744
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 8(iv)',
|
|
2391
2745
|
title: 'Deduction of tax at source on benefit or perquisite in respect of business or profession',
|
|
2392
2746
|
effectiveDate: '2026-04-01',
|
|
2393
2747
|
threshold: '₹20,000 aggregate value in financial year',
|
|
@@ -2402,7 +2756,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2402
2756
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2403
2757
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2404
2758
|
},
|
|
2405
|
-
aliases: ['194r', 'sec194r', 'section 194r', 'perquisites tds', 'business benefits tds']
|
|
2759
|
+
aliases: ['194r', 'sec194r', 'section 194r', '393(1)(table 1)(sl 8)(iv)', 'perquisites tds', 'business benefits tds']
|
|
2406
2760
|
},
|
|
2407
2761
|
{
|
|
2408
2762
|
id: 'CROSSWALK_195_393_2',
|
|
@@ -2930,7 +3284,7 @@ export const STATUTORY_AMENDMENTS_CHANGELOG = [
|
|
|
2930
3284
|
statute: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2931
3285
|
legalAuthority: 'Parliament of India / Income-tax Act, 2025',
|
|
2932
3286
|
previousValue: 'Income-tax Act, 1961 (Scattered Chapter XVII-B sections: 194C, 194J, 194Q, 194I, 194H, 194R, 195)',
|
|
2933
|
-
amendedValue: 'Income-tax Act, 2025 Section 393
|
|
3287
|
+
amendedValue: 'Income-tax Act, 2025 Section 393 Table 1 (Sl No 1: Commission, Sl No 2: Rent, Sl No 5: Interest, Sl No 6: Contractors/FTS, Sl No 8: Goods/Perquisites)',
|
|
2934
3288
|
changeSummary: 'The Income-tax Act, 2025 consolidates and restructures direct tax withholding into unified schedules under Section 393, repealing the 1961 Act subject to Section 536 savings.',
|
|
2935
3289
|
statutoryImpact: 'Withholding liabilities on or after 1 April 2026 are governed by 2025 Act section references and procedural compliance.',
|
|
2936
3290
|
aliases: ['393', 'income tax act 2025', '2025 act']
|
|
@@ -2988,15 +3342,36 @@ export function getStatutoryDiff(options = {}) {
|
|
|
2988
3342
|
}
|
|
2989
3343
|
|
|
2990
3344
|
// ── Deterministic Zero-Dependency Statutory Calculators Export ──────────────
|
|
3345
|
+
async function runStatutoryWatchtower(options = {}) {
|
|
3346
|
+
const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
|
|
3347
|
+
return runner(options);
|
|
3348
|
+
}
|
|
3349
|
+
|
|
2991
3350
|
export {
|
|
2992
3351
|
roundToPaisa,
|
|
2993
3352
|
roundSection288B,
|
|
3353
|
+
cleanNumericAmount,
|
|
3354
|
+
toIntegerPaise,
|
|
3355
|
+
fromIntegerPaise,
|
|
3356
|
+
MalformedNumericInputError,
|
|
3357
|
+
MissingMandatoryParameterError,
|
|
3358
|
+
assertMandatoryNumeric,
|
|
2994
3359
|
calculateCorporateTaxMatVsConcessional,
|
|
2995
3360
|
evaluatePlaceOfSupplyAndLut,
|
|
2996
3361
|
calculateTransferPricingAlp,
|
|
2997
3362
|
evaluateSection79LossContinuity,
|
|
2998
3363
|
evaluateSection281TaxClearance,
|
|
2999
3364
|
revalueForeignExchangeIndAs109,
|
|
3365
|
+
calculateBusinessCombinationsIndAs103,
|
|
3366
|
+
calculateImpairmentIndAs36,
|
|
3367
|
+
calculateRevenueAllocationIndAs115,
|
|
3368
|
+
calculateLeaseAmortizationIndAs116,
|
|
3369
|
+
calculateExpectedCreditLossIndAs109,
|
|
3370
|
+
calculateEsopAmortizationIndAs102,
|
|
3371
|
+
calculateDeferredTaxIndAs12,
|
|
3372
|
+
evaluateProvisionsAndContingenciesIndAs37,
|
|
3373
|
+
calculateForeignCurrencyIndAs21,
|
|
3374
|
+
resolveMissingPanPenaltyFloor,
|
|
3000
3375
|
evaluateSection194Q,
|
|
3001
3376
|
evaluateSection194C,
|
|
3002
3377
|
evaluateSection194H,
|
|
@@ -3015,6 +3390,9 @@ export {
|
|
|
3015
3390
|
evaluateSection43bH,
|
|
3016
3391
|
calculateMsmeCompoundInterest,
|
|
3017
3392
|
calculateAdvanceTaxAndInterest,
|
|
3393
|
+
calculateRule42InputServiceReversal,
|
|
3394
|
+
reconcileRule42AnnualTrueUp,
|
|
3395
|
+
calculateRule43CapitalGoodsReversal,
|
|
3018
3396
|
calculateGstItcApportionmentRule42_43,
|
|
3019
3397
|
evaluateCrossBorderRemittance,
|
|
3020
3398
|
generateMsme1AndScheduleThreeAging,
|
|
@@ -3028,7 +3406,27 @@ export {
|
|
|
3028
3406
|
getStatutoryOutcomes,
|
|
3029
3407
|
explainStatutoryDisposition,
|
|
3030
3408
|
STATUTORY_OUTCOMES_DICTIONARY,
|
|
3031
|
-
enrichWithOutcomeExplanation
|
|
3409
|
+
enrichWithOutcomeExplanation,
|
|
3410
|
+
parseTallyDaybookCsv,
|
|
3411
|
+
parseTallyDaybookXml,
|
|
3412
|
+
reconcile194QDaybook,
|
|
3413
|
+
generateTally194QJournalXml,
|
|
3414
|
+
generateAuditMarkdownReport,
|
|
3415
|
+
getIndianFinancialYear,
|
|
3416
|
+
parseZohoBillsCsv,
|
|
3417
|
+
parseZohoBillsJson,
|
|
3418
|
+
parseGstr2bJson,
|
|
3419
|
+
reconcileZohoGstr2b,
|
|
3420
|
+
generateGstr2bAuditMarkdownReport,
|
|
3421
|
+
normalizeInvoiceNumber,
|
|
3422
|
+
normalizeGstin,
|
|
3423
|
+
calculateOverdueStartDate,
|
|
3424
|
+
calculateEclUtilizationInterest,
|
|
3425
|
+
calculatePortfolioEclUtilizationInterest,
|
|
3426
|
+
buildEvidenceProvenance,
|
|
3427
|
+
runStatutoryWatchtower,
|
|
3428
|
+
evaluateStatutoryAst,
|
|
3429
|
+
resolveTemporalCrystallization
|
|
3032
3430
|
};
|
|
3033
3431
|
|
|
3034
3432
|
|