@classytic/ca-tax 0.0.2 → 0.0.12

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/dist/forms.mjs CHANGED
@@ -1,3 +1,114 @@
1
+ //#region src/t2/at1/forms/at4970.ts
2
+ /** `SSSFFFOOO` — placeholder schedule code; see the module note above. */
3
+ const id$11 = (field, occurrence = 1) => `497${field}${String(occurrence).padStart(3, "0")}`;
4
+ const AT4970 = {
5
+ id: "AT4970",
6
+ program: "AT1",
7
+ schedule: "4970",
8
+ title: "Listing of Innovation Employment Grant Projects Carried Out in Alberta",
9
+ scheme: "tra-line-item-id",
10
+ taxYears: { from: 2021 },
11
+ sections: [{
12
+ id: "projects",
13
+ title: "Listing of Innovation Employment Grant Projects Carried Out in Alberta",
14
+ description: "One row per Alberta SR&ED project. The TOTAL row transcribes onto Schedule 29 page 1 (105→005, 111→007, 113→009)."
15
+ }, {
16
+ id: "jurisdictions",
17
+ title: "Jurisdictions where federal qualified expenditures were incurred",
18
+ description: "Informational breakdown by province/territory. Entered directly, not derived."
19
+ }],
20
+ fields: [
21
+ {
22
+ field: "101",
23
+ caption: "Project title",
24
+ kind: "text",
25
+ role: "input",
26
+ section: "projects",
27
+ note: "Same information as line 200 from Part 2 of federal T661."
28
+ },
29
+ {
30
+ field: "103",
31
+ caption: "Project code",
32
+ kind: "text",
33
+ role: "input",
34
+ section: "projects",
35
+ note: "Federal T661 line 206."
36
+ },
37
+ {
38
+ field: "105",
39
+ caption: "Portion of federal T661 line 559/557 incurred in Alberta, this project",
40
+ kind: "money",
41
+ role: "input",
42
+ section: "projects",
43
+ note: "Before IEG, for the taxation year. TOTAL feeds Schedule 29 page 1 line 005."
44
+ },
45
+ {
46
+ field: "107",
47
+ caption: "Portion of federal T661 line 559/557 NOT carried out in Alberta, this project",
48
+ kind: "money",
49
+ role: "input",
50
+ section: "projects"
51
+ },
52
+ {
53
+ field: "109",
54
+ caption: "Total salaries and wages re SR&ED carried out in Alberta, this project",
55
+ kind: "money",
56
+ role: "input",
57
+ section: "projects",
58
+ note: "Excludes bonuses, remuneration based on profits, and taxable benefits."
59
+ },
60
+ {
61
+ field: "111",
62
+ caption: "Total prescribed proxy amount included in the Alberta portion, this project",
63
+ kind: "money",
64
+ role: "input",
65
+ section: "projects",
66
+ note: "If claimed federally. TOTAL feeds Schedule 29 page 1 line 007."
67
+ },
68
+ {
69
+ field: "113",
70
+ caption: "Alberta proxy amount for this project",
71
+ kind: "money",
72
+ role: "input",
73
+ section: "projects",
74
+ note: "If line 111 is applicable. TOTAL feeds Schedule 29 page 1 line 009."
75
+ },
76
+ {
77
+ field: "170",
78
+ caption: "Total of all jurisdictions",
79
+ kind: "money",
80
+ role: "total",
81
+ section: "jurisdictions",
82
+ note: "Σ every jurisdiction amount (135–161). Informational — see the compute module’s note."
83
+ }
84
+ ].map(({ field, ...rest }) => ({
85
+ ...rest,
86
+ line: id$11(field)
87
+ })).sort((a, b) => a.line.localeCompare(b.line)),
88
+ provenance: {
89
+ document: "research/sources/tra-guides/tra-guide-claiming-the-innovation-employment-grant.pdf",
90
+ retrieved: "2026-08-29",
91
+ revision: "Field numbers (101–113, 135–161, 170) transcribed from TRA’s own worked Examples 3 and 4 (pages 24 and 29 of the Guide), independently verified twice — once directly, once by an independent multi-agent re-derivation blind to the first reading. The NetFile wire-format encoding (schedule code, line-item id scheme) is NOT confirmed — see the module’s own top-of-file note."
92
+ }
93
+ };
94
+ /** The 13 named jurisdictions the jurisdiction table lists, in the form’s own order. Plus 'other'. */
95
+ const AT4970_JURISDICTIONS = Object.freeze([
96
+ "alberta",
97
+ "britishColumbia",
98
+ "manitoba",
99
+ "newBrunswick",
100
+ "newfoundlandAndLabrador",
101
+ "northwestTerritories",
102
+ "novaScotia",
103
+ "nunavut",
104
+ "ontario",
105
+ "princeEdwardIsland",
106
+ "quebec",
107
+ "saskatchewan",
108
+ "yukon",
109
+ "other"
110
+ ]);
111
+ //#endregion
1
112
  //#region src/t2/at1/forms/generated/jacket.captions.ts
2
113
  const AT1_JACKET_CAPTIONS = [
3
114
  {
@@ -454,8 +565,8 @@ const AT1_JACKET_CAPTIONS = [
454
565
  //#endregion
455
566
  //#region src/t2/at1/forms/jacket.ts
456
567
  /** `SSSFFFOOO` — schedule, field, occurrence. The jacket is schedule 000. */
457
- const id$8 = (field, occurrence = 1) => `000${field}${String(occurrence).padStart(3, "0")}`;
458
- const SECTIONS$29 = [
568
+ const id$10 = (field, occurrence = 1) => `000${field}${String(occurrence).padStart(3, "0")}`;
569
+ const SECTIONS$31 = [
459
570
  {
460
571
  id: "identification",
461
572
  title: "Identification",
@@ -582,12 +693,12 @@ const AT1_JACKET = {
582
693
  title: "Alberta Corporate Income Tax Return — AT1",
583
694
  scheme: "tra-line-item-id",
584
695
  taxYears: { from: 2025 },
585
- sections: SECTIONS$29,
696
+ sections: SECTIONS$31,
586
697
  fields: AT1_JACKET_CAPTIONS.map((c) => {
587
698
  const carried = CARRIED_IN$1[c.line];
588
699
  const note = NOTES$2[c.line];
589
700
  return {
590
- line: id$8(c.line),
701
+ line: id$10(c.line),
591
702
  caption: c.caption,
592
703
  kind: kindOf(c),
593
704
  role: COMPUTED.has(c.line) ? "computed" : carried ? "carried-in" : "input",
@@ -608,25 +719,25 @@ const AT1_JACKET = {
608
719
  }
609
720
  };
610
721
  /** 000080001 — Alberta tax payable, before credits. */
611
- const AT1_TAX_PAYABLE_LINE = id$8("080");
722
+ const AT1_TAX_PAYABLE_LINE = id$10("080");
612
723
  /** 000090001 — the balance, signed. Negative is an overpayment. */
613
- const AT1_BALANCE_LINE = id$8("090");
724
+ const AT1_BALANCE_LINE = id$10("090");
614
725
  /**
615
726
  * The five credits the specification nets against 080 to reach 090. The
616
727
  * Innovation Employment Grant (129) is NOT among them.
617
728
  */
618
729
  const AT1_BALANCE_CREDIT_LINES = Object.freeze([
619
- id$8("081"),
620
- id$8("082"),
621
- id$8("085"),
622
- id$8("086"),
623
- id$8("087")
730
+ id$10("081"),
731
+ id$10("082"),
732
+ id$10("085"),
733
+ id$10("086"),
734
+ id$10("087")
624
735
  ]);
625
736
  //#endregion
626
737
  //#region src/t2/at1/forms/schedule12.ts
627
738
  /** `SSSFFFOOO` — schedule, field, occurrence. */
628
- const id$7 = (field, occurrence = 1) => `012${field}${String(occurrence).padStart(3, "0")}`;
629
- const SECTIONS$28 = [{
739
+ const id$9 = (field, occurrence = 1) => `012${field}${String(occurrence).padStart(3, "0")}`;
740
+ const SECTIONS$30 = [{
630
741
  id: "area-a",
631
742
  title: "Area A — net income for Alberta corporate income tax purposes",
632
743
  description: "Reconciling items between federal and Alberta net income. Report a pair only where the two figures differ."
@@ -888,21 +999,21 @@ const SINGLES = [
888
999
  }
889
1000
  ];
890
1001
  const pairFields = AT1_SCHEDULE_12_PAIRS.flatMap((p) => [{
891
- line: id$7(p.federal),
1002
+ line: id$9(p.federal),
892
1003
  caption: `${p.label} — federal`,
893
1004
  kind: "money",
894
1005
  role: "input",
895
1006
  section: p.section,
896
1007
  requirement: "conditional",
897
- note: `Report only if it differs from the Alberta figure at ${id$7(p.alberta)}.${p.note ? ` ${p.note}` : ""}`
1008
+ note: `Report only if it differs from the Alberta figure at ${id$9(p.alberta)}.${p.note ? ` ${p.note}` : ""}`
898
1009
  }, {
899
- line: id$7(p.alberta),
1010
+ line: id$9(p.alberta),
900
1011
  caption: `${p.label} — Alberta`,
901
1012
  kind: "money",
902
1013
  role: "input",
903
1014
  section: p.section,
904
1015
  requirement: "conditional",
905
- note: `Report only if it differs from the federal figure at ${id$7(p.federal)}.${p.note ? ` ${p.note}` : ""}`
1016
+ note: `Report only if it differs from the federal figure at ${id$9(p.federal)}.${p.note ? ` ${p.note}` : ""}`
906
1017
  }]);
907
1018
  const AT1_SCHEDULE_12 = {
908
1019
  id: "AT1SCH12",
@@ -911,10 +1022,10 @@ const AT1_SCHEDULE_12 = {
911
1022
  title: "Alberta income/loss reconciliation",
912
1023
  scheme: "tra-line-item-id",
913
1024
  taxYears: { from: 2024 },
914
- sections: SECTIONS$28,
1025
+ sections: SECTIONS$30,
915
1026
  fields: [...SINGLES.map(({ field, ...rest }) => ({
916
1027
  ...rest,
917
- line: id$7(field)
1028
+ line: id$9(field)
918
1029
  })), ...pairFields].sort((a, b) => a.line.localeCompare(b.line)),
919
1030
  provenance: {
920
1031
  document: "research/field-maps/at1-schedules-12-21.md",
@@ -925,7 +1036,7 @@ const AT1_SCHEDULE_12 = {
925
1036
  //#endregion
926
1037
  //#region src/t2/at1/forms/schedule13.ts
927
1038
  /** `SSSFFFOOO` — schedule, field, occurrence. */
928
- const id$6 = (field, occurrence = 1) => `013${field}${String(occurrence).padStart(3, "0")}`;
1039
+ const id$8 = (field, occurrence = 1) => `013${field}${String(occurrence).padStart(3, "0")}`;
929
1040
  const AT1_SCHEDULE_13_COLUMNS = [
930
1041
  {
931
1042
  column: 1,
@@ -1082,10 +1193,10 @@ const AT1_SCHEDULE_13 = {
1082
1193
  fields: [
1083
1194
  ...RETURN_LEVEL.map(({ field, ...rest }) => ({
1084
1195
  ...rest,
1085
- line: id$6(field)
1196
+ line: id$8(field)
1086
1197
  })),
1087
1198
  ...AT1_SCHEDULE_13_COLUMNS.filter((c) => c.line).map((c) => ({
1088
- line: id$6(c.line),
1199
+ line: id$8(c.line),
1089
1200
  caption: c.caption,
1090
1201
  kind: c.column === 1 ? "code" : c.column === 20 ? "rate" : "money",
1091
1202
  role: "input",
@@ -1093,7 +1204,7 @@ const AT1_SCHEDULE_13 = {
1093
1204
  ...c.note ? { note: c.note } : {}
1094
1205
  })),
1095
1206
  ...TOTALS$3.map((t) => ({
1096
- line: id$6(t.field),
1207
+ line: id$8(t.field),
1097
1208
  caption: t.caption,
1098
1209
  kind: "money",
1099
1210
  role: "total",
@@ -1114,7 +1225,7 @@ const AT1_SCHEDULE_13 = {
1114
1225
  //#endregion
1115
1226
  //#region src/t2/at1/forms/schedule16.ts
1116
1227
  /** `SSSFFFOOO` — schedule, field, occurrence. */
1117
- const id$5 = (field, occurrence = 1) => `016${field}${String(occurrence).padStart(3, "0")}`;
1228
+ const id$7 = (field, occurrence = 1) => `016${field}${String(occurrence).padStart(3, "0")}`;
1118
1229
  const AT1_SCHEDULE_16 = {
1119
1230
  id: "AT1SCH16",
1120
1231
  program: "AT1",
@@ -1244,7 +1355,7 @@ const AT1_SCHEDULE_16 = {
1244
1355
  }
1245
1356
  ].map(({ field, ...rest }) => ({
1246
1357
  ...rest,
1247
- line: id$5(field)
1358
+ line: id$7(field)
1248
1359
  })),
1249
1360
  provenance: {
1250
1361
  document: "research/field-maps/at1-schedules-16-17.md",
@@ -1257,7 +1368,7 @@ const AT1_SCHEDULE_16_CARRYFORWARD_LINE = "016022001";
1257
1368
  //#endregion
1258
1369
  //#region src/t2/at1/forms/schedule17.ts
1259
1370
  /** `SSSFFFOOO` — schedule, field, occurrence. */
1260
- const id$4 = (field, occurrence = 1) => `017${field}${String(occurrence).padStart(3, "0")}`;
1371
+ const id$6 = (field, occurrence = 1) => `017${field}${String(occurrence).padStart(3, "0")}`;
1261
1372
  const AT1_SCHEDULE_17_RESERVES = [
1262
1373
  {
1263
1374
  label: "Doubtful debts",
@@ -1314,7 +1425,7 @@ const AT1_SCHEDULE_17_RESERVES = [
1314
1425
  federalOpening: "230"
1315
1426
  }
1316
1427
  ];
1317
- const SECTIONS$25 = [{
1428
+ const SECTIONS$27 = [{
1318
1429
  id: "reserves",
1319
1430
  title: "Continuity of reserves",
1320
1431
  description: "Eight reserve kinds. Six mirror federal Schedule 13; policy reserves and bank reserves exist only on the Alberta form."
@@ -1331,7 +1442,7 @@ const COLUMNS$1 = [
1331
1442
  const reserveFields$1 = AT1_SCHEDULE_17_RESERVES.flatMap((r) => COLUMNS$1.map(([key, columnCaption]) => {
1332
1443
  const isOpening = key === "opening";
1333
1444
  return {
1334
- line: id$4(r[key]),
1445
+ line: id$6(r[key]),
1335
1446
  caption: `${r.label} — ${columnCaption}`,
1336
1447
  kind: "money",
1337
1448
  role: "input",
@@ -1347,21 +1458,21 @@ const reserveFields$1 = AT1_SCHEDULE_17_RESERVES.flatMap((r) => COLUMNS$1.map(([
1347
1458
  }));
1348
1459
  const TOTALS$2 = [
1349
1460
  {
1350
- line: id$4("021"),
1461
+ line: id$6("021"),
1351
1462
  caption: "Total of the opening balances",
1352
1463
  kind: "money",
1353
1464
  role: "total",
1354
1465
  section: "totals"
1355
1466
  },
1356
1467
  {
1357
- line: id$4("051"),
1468
+ line: id$6("051"),
1358
1469
  caption: "Total of the transfers on wind-up or amalgamation",
1359
1470
  kind: "money",
1360
1471
  role: "total",
1361
1472
  section: "totals"
1362
1473
  },
1363
1474
  {
1364
- line: id$4("081"),
1475
+ line: id$6("081"),
1365
1476
  caption: "Total of the closing balances",
1366
1477
  kind: "money",
1367
1478
  role: "total",
@@ -1373,7 +1484,7 @@ const TOTALS$2 = [
1373
1484
  note: "This year’s reserves, deducted from Alberta income."
1374
1485
  },
1375
1486
  {
1376
- line: id$4("091"),
1487
+ line: id$6("091"),
1377
1488
  caption: "Total of line 021 plus line 051",
1378
1489
  kind: "money",
1379
1490
  role: "computed",
@@ -1392,7 +1503,7 @@ const AT1_SCHEDULE_17 = {
1392
1503
  title: "Alberta continuity of reserves",
1393
1504
  scheme: "tra-line-item-id",
1394
1505
  taxYears: { from: 2024 },
1395
- sections: SECTIONS$25,
1506
+ sections: SECTIONS$27,
1396
1507
  fields: [...reserveFields$1, ...TOTALS$2].sort((a, b) => a.line.localeCompare(b.line)),
1397
1508
  provenance: {
1398
1509
  document: "research/field-maps/at1-schedules-16-17.md",
@@ -1403,7 +1514,7 @@ const AT1_SCHEDULE_17 = {
1403
1514
  //#endregion
1404
1515
  //#region src/t2/at1/forms/schedule18.ts
1405
1516
  /** `SSSFFFOOO` — schedule, field, occurrence. */
1406
- const id$3 = (field, occurrence = 1) => `018${field}${String(occurrence).padStart(3, "0")}`;
1517
+ const id$5 = (field, occurrence = 1) => `018${field}${String(occurrence).padStart(3, "0")}`;
1407
1518
  const AT1_SCHEDULE_18_CATEGORIES = [
1408
1519
  {
1409
1520
  label: "Shares",
@@ -1450,7 +1561,7 @@ const AT1_SCHEDULE_18_CATEGORIES = [
1450
1561
  lossRestricted: true
1451
1562
  }
1452
1563
  ];
1453
- const SECTIONS$24 = [
1564
+ const SECTIONS$26 = [
1454
1565
  {
1455
1566
  id: "dispositions",
1456
1567
  title: "Dispositions by category",
@@ -1475,7 +1586,7 @@ const COLUMNS = [
1475
1586
  ["gainOrLoss", "D — gain or (loss)"]
1476
1587
  ];
1477
1588
  const categoryFields = AT1_SCHEDULE_18_CATEGORIES.flatMap((c) => COLUMNS.map(([key, columnCaption]) => ({
1478
- line: id$3(c[key]),
1589
+ line: id$5(c[key]),
1479
1590
  caption: `${c.label} — ${columnCaption}`,
1480
1591
  kind: "money",
1481
1592
  role: key === "gainOrLoss" ? "computed" : "input",
@@ -1698,10 +1809,10 @@ const AT1_SCHEDULE_18 = {
1698
1809
  title: "Alberta dispositions of capital property",
1699
1810
  scheme: "tra-line-item-id",
1700
1811
  taxYears: { from: 2024 },
1701
- sections: SECTIONS$24,
1812
+ sections: SECTIONS$26,
1702
1813
  fields: [...categoryFields, ...REST.map(({ field, ...rest }) => ({
1703
1814
  ...rest,
1704
- line: id$3(field)
1815
+ line: id$5(field)
1705
1816
  }))].sort((a, b) => a.line.localeCompare(b.line)),
1706
1817
  provenance: {
1707
1818
  document: "research/field-maps/at1-schedule-18-dispositions.md",
@@ -1714,7 +1825,7 @@ const AT1_SECTION_34_2_GROSS_UP = 2;
1714
1825
  //#endregion
1715
1826
  //#region src/t2/at1/forms/schedule20.ts
1716
1827
  /** `SSSFFFOOO` — schedule, field, occurrence. */
1717
- const id$2 = (field, occurrence = 1) => `020${field}${String(occurrence).padStart(3, "0")}`;
1828
+ const id$4 = (field, occurrence = 1) => `020${field}${String(occurrence).padStart(3, "0")}`;
1718
1829
  /** The ten rows every donation continuity runs through, in form order. */
1719
1830
  const CONTINUITY_ROWS = [
1720
1831
  ["opening", "Balance at the end of the previous year"],
@@ -1759,7 +1870,7 @@ const AT1_SCHEDULE_20_POOLS = [{
1759
1870
  closing: "078"
1760
1871
  }
1761
1872
  }];
1762
- const SECTIONS$23 = [
1873
+ const SECTIONS$25 = [
1763
1874
  {
1764
1875
  id: "charitable",
1765
1876
  title: "Area A — Charitable donations",
@@ -1830,11 +1941,11 @@ const AT1_SCHEDULE_20 = {
1830
1941
  title: "Alberta charitable donations and gifts",
1831
1942
  scheme: "tra-line-item-id",
1832
1943
  taxYears: { from: 2024 },
1833
- sections: SECTIONS$23,
1944
+ sections: SECTIONS$25,
1834
1945
  fields: [...AT1_SCHEDULE_20_POOLS.flatMap((pool) => CONTINUITY_ROWS.map(([key, caption]) => {
1835
1946
  const computed = key === "beginning" || key === "subtotal" || key === "available" || key === "closing";
1836
1947
  return {
1837
- line: id$2(pool.lines[key]),
1948
+ line: id$4(pool.lines[key]),
1838
1949
  caption: `${pool.label} — ${caption}`,
1839
1950
  kind: "money",
1840
1951
  role: computed ? "computed" : "input",
@@ -1843,7 +1954,7 @@ const AT1_SCHEDULE_20 = {
1843
1954
  };
1844
1955
  })), ...MAXIMUM.map(({ field, ...rest }) => ({
1845
1956
  ...rest,
1846
- line: id$2(field)
1957
+ line: id$4(field)
1847
1958
  }))].sort((a, b) => a.line.localeCompare(b.line)),
1848
1959
  provenance: {
1849
1960
  document: "research/validation/auratax/2026-08-07-cca-classes/README.md",
@@ -1863,7 +1974,7 @@ const AT1_DONATION_CARRYFORWARD_YEARS = 5;
1863
1974
  //#endregion
1864
1975
  //#region src/t2/at1/forms/schedule21.ts
1865
1976
  /** `SSSFFFOOO` — schedule, field, occurrence. */
1866
- const id$1 = (field, occurrence = 1) => `021${field}${String(occurrence).padStart(3, "0")}`;
1977
+ const id$3 = (field, occurrence = 1) => `021${field}${String(occurrence).padStart(3, "0")}`;
1867
1978
  const AT1_SCHEDULE_21_POOLS = [
1868
1979
  {
1869
1980
  key: "non-capital",
@@ -1935,7 +2046,7 @@ const AT1_SCHEDULE_21_POOLS = [
1935
2046
  closing: "125"
1936
2047
  }
1937
2048
  ];
1938
- const SECTIONS$22 = [{
2049
+ const SECTIONS$24 = [{
1939
2050
  id: "current-year",
1940
2051
  title: "Part 1 — Calculating the current-year non-capital loss",
1941
2052
  description: "Starts from Alberta net income on Schedule 12 line 054 and works down through the Division C deductions to the loss for the year."
@@ -2054,7 +2165,7 @@ const continuityFields = AT1_SCHEDULE_21_POOLS.flatMap((pool) => CONTINUITY_ORDE
2054
2165
  const isClosing = k === "closing";
2055
2166
  const isCarryBack = k === "carryBack";
2056
2167
  return {
2057
- line: id$1(pool[k]),
2168
+ line: id$3(pool[k]),
2058
2169
  caption: `${pool.label} — ${CONTINUITY_CAPTIONS[k]}`,
2059
2170
  kind: "money",
2060
2171
  role: isClosing ? "computed" : "input",
@@ -2074,10 +2185,10 @@ const AT1_SCHEDULE_21 = {
2074
2185
  title: "Current-year loss and continuity of losses",
2075
2186
  scheme: "tra-line-item-id",
2076
2187
  taxYears: { from: 2024 },
2077
- sections: SECTIONS$22,
2188
+ sections: SECTIONS$24,
2078
2189
  fields: [...PART_1.map(({ field, ...rest }) => ({
2079
2190
  ...rest,
2080
- line: id$1(field)
2191
+ line: id$3(field)
2081
2192
  })), ...continuityFields].sort((a, b) => a.line.localeCompare(b.line)),
2082
2193
  provenance: {
2083
2194
  document: "research/field-maps/at1-schedules-12-21.md",
@@ -2088,7 +2199,7 @@ const AT1_SCHEDULE_21 = {
2088
2199
  //#endregion
2089
2200
  //#region src/t2/at1/forms/schedule29.ts
2090
2201
  /** `SSSFFFOOO` — schedule, field, occurrence. */
2091
- const id = (field, occurrence = 1) => `029${field}${String(occurrence).padStart(3, "0")}`;
2202
+ const id$2 = (field, occurrence = 1) => `029${field}${String(occurrence).padStart(3, "0")}`;
2092
2203
  const AT1_SCHEDULE_29 = {
2093
2204
  id: "AT1SCH29",
2094
2205
  program: "AT1",
@@ -2097,6 +2208,12 @@ const AT1_SCHEDULE_29 = {
2097
2208
  scheme: "tra-line-item-id",
2098
2209
  taxYears: { from: 2021 },
2099
2210
  sections: [
2211
+ {
2212
+ id: "eligible",
2213
+ title: "Eligible Expenditures for IEG Purposes",
2214
+ page: 1,
2215
+ description: "Derives line 031, the \"eligible expenditures\" figure everything else on this schedule is built from, off federal T661 line 559 or 557 (see the field notes below) and the AT4970 attachment’s own totals."
2216
+ },
2100
2217
  {
2101
2218
  id: "limit",
2102
2219
  title: "Maximum Expenditure Limit",
@@ -2117,6 +2234,70 @@ const AT1_SCHEDULE_29 = {
2117
2234
  }
2118
2235
  ],
2119
2236
  fields: [
2237
+ {
2238
+ field: "003",
2239
+ caption: "Federal amount of qualified/current SR&ED expenditures",
2240
+ kind: "money",
2241
+ role: "input",
2242
+ section: "eligible",
2243
+ note: "Federal T661 line 559 for a taxation year ending on or before 2024-12-15; T661 line 557 (a DIFFERENT federal figure — current, not qualified, SR&ED expenditures) for a taxation year ending on or after 2024-12-16. See `iegT661SourceLine` in `schedule29-eligible-expenditures.ts`."
2244
+ },
2245
+ {
2246
+ field: "005",
2247
+ caption: "Portion of line 003 carried out in Alberta",
2248
+ kind: "money",
2249
+ role: "input",
2250
+ section: "eligible",
2251
+ note: "Normally the AT4970 attachment’s own total of column 105 across every project."
2252
+ },
2253
+ {
2254
+ field: "007",
2255
+ caption: "Deduct: federal prescribed proxy amount included in the Alberta portion",
2256
+ kind: "money",
2257
+ role: "input",
2258
+ section: "eligible",
2259
+ note: "Normally AT4970’s total of column 111."
2260
+ },
2261
+ {
2262
+ field: "009",
2263
+ caption: "Add: Alberta proxy amount",
2264
+ kind: "money",
2265
+ role: "input",
2266
+ section: "eligible",
2267
+ note: "Normally AT4970’s total of column 113."
2268
+ },
2269
+ {
2270
+ field: "011",
2271
+ caption: "Add: IEG that reduced the federal expenditure in the taxation year",
2272
+ kind: "money",
2273
+ role: "input",
2274
+ section: "eligible",
2275
+ note: "Zero for a first-time current-year claim reported on the pre-deduction federal figures — only non-zero when line 003 was already reported net of this year’s own IEG (see the Step 1 / Step 2 note in schedule29-eligible-expenditures.ts)."
2276
+ },
2277
+ {
2278
+ field: "025",
2279
+ caption: "Add: repayment of government assistance or a contract payment",
2280
+ kind: "money",
2281
+ role: "input",
2282
+ section: "eligible",
2283
+ note: "The Alberta portion of EITHER a repayment of government assistance (other than an IEG) OR a contract payment — two independent triggers — relating to amounts in line 005 from the current year or ANY PRECEDING taxation year."
2284
+ },
2285
+ {
2286
+ field: "031",
2287
+ caption: "Total: Eligible Expenditures for Alberta Purposes",
2288
+ kind: "money",
2289
+ role: "total",
2290
+ section: "eligible",
2291
+ note: "005 − 007 + 009 + 011 + 025. Feeds every other \"eligible expenditures\" figure on this schedule."
2292
+ },
2293
+ {
2294
+ field: "040",
2295
+ caption: "Primary field of science or technology",
2296
+ kind: "code",
2297
+ role: "input",
2298
+ section: "eligible",
2299
+ note: "1 = Natural and formal sciences, 2 = Engineering and technology, 3 = Medical and health sciences, 4 = Agricultural sciences."
2300
+ },
2120
2301
  {
2121
2302
  field: "100",
2122
2303
  caption: "Associated with one or more corporations for IEG purposes?",
@@ -2423,7 +2604,7 @@ const AT1_SCHEDULE_29 = {
2423
2604
  }
2424
2605
  ].map(({ field, ...rest }) => ({
2425
2606
  ...rest,
2426
- line: id(field)
2607
+ line: id$2(field)
2427
2608
  })).sort((a, b) => a.line.localeCompare(b.line)),
2428
2609
  provenance: {
2429
2610
  document: "research/sources/tra-forms/pdf/AT1SCH29-innovation-employment-grant-TRA14637.pdf",
@@ -2443,7 +2624,7 @@ const AT1_IEG_PRIOR_YEARS = 2;
2443
2624
  const AT1_IEG_JACKET_LINE = "000129001";
2444
2625
  //#endregion
2445
2626
  //#region src/t2/co17/forms/co17.ts
2446
- const SECTIONS$20 = [
2627
+ const SECTIONS$22 = [
2447
2628
  {
2448
2629
  id: "identity",
2449
2630
  title: "1 — Renseignements sur l'identité de la société"
@@ -2479,7 +2660,7 @@ const CO17_RETURN = {
2479
2660
  title: "CO-17 — Déclaration de revenus des sociétés",
2480
2661
  scheme: "rq-box",
2481
2662
  taxYears: { from: 2025 },
2482
- sections: SECTIONS$20,
2663
+ sections: SECTIONS$22,
2483
2664
  fields: [
2484
2665
  F$5("01a", "Numéro d'entreprise du Québec (NEQ)", "identity", { kind: "text" }),
2485
2666
  F$5("01b", "Numéro d'identification", "identity", { kind: "text" }),
@@ -2541,7 +2722,7 @@ const CO17_QUEBEC_PROPORTION_BOX = "421";
2541
2722
  const CO17_TAX_PAYABLE_BOX = "425";
2542
2723
  //#endregion
2543
2724
  //#region src/t2/forms/jacket.ts
2544
- const SECTIONS$19 = [
2725
+ const SECTIONS$21 = [
2545
2726
  {
2546
2727
  id: "taxable-income",
2547
2728
  title: "Taxable income",
@@ -2597,7 +2778,7 @@ const T2_JACKET = {
2597
2778
  title: "T2 Corporation Income Tax Return",
2598
2779
  scheme: "cra-line",
2599
2780
  taxYears: { from: 2025 },
2600
- sections: SECTIONS$19,
2781
+ sections: SECTIONS$21,
2601
2782
  fields: [
2602
2783
  F$4("300", "Net income or (loss) for income tax purposes", "taxable-income", {
2603
2784
  role: "carried-in",
@@ -3533,7 +3714,7 @@ new Map(SCHEDULE_1_CAPTIONS.map((c) => [c.line, c]));
3533
3714
  * Captions come from `./generated/schedule1.captions.ts`, which is produced from
3534
3715
  * the CRA document. This module adds only what the paper does not say.
3535
3716
  */
3536
- const SECTIONS$18 = [
3717
+ const SECTIONS$20 = [
3537
3718
  {
3538
3719
  id: "add-1",
3539
3720
  title: "Add",
@@ -3662,7 +3843,7 @@ const T2_SCHEDULE_1 = {
3662
3843
  title: "Net income (loss) for income tax purposes",
3663
3844
  scheme: "cra-line",
3664
3845
  taxYears: { from: 2023 },
3665
- sections: SECTIONS$18,
3846
+ sections: SECTIONS$20,
3666
3847
  fields: SCHEDULE_1_CAPTIONS.map((c) => {
3667
3848
  const section = sectionFor(Number(c.line));
3668
3849
  const side = section.startsWith("add") ? "add" : "deduct";
@@ -3702,7 +3883,7 @@ const SCHEDULE_1_LINE_BY_NUMBER = indexByLine(T2_SCHEDULE_1);
3702
3883
  const SCHEDULE_1_LINES = T2_SCHEDULE_1.fields;
3703
3884
  //#endregion
3704
3885
  //#region src/t2/forms/schedule2.ts
3705
- const SECTIONS$17 = [
3886
+ const SECTIONS$19 = [
3706
3887
  {
3707
3888
  id: "charitable",
3708
3889
  title: "Part 2 — Charitable donations",
@@ -3734,7 +3915,7 @@ const T2_SCHEDULE_2 = {
3734
3915
  title: "Charitable donations and gifts",
3735
3916
  scheme: "cra-line",
3736
3917
  taxYears: { from: 2023 },
3737
- sections: SECTIONS$17,
3918
+ sections: SECTIONS$19,
3738
3919
  fields: [
3739
3920
  F$3("239", "Charitable donations expired after five tax years", "charitable"),
3740
3921
  F$3("240", "Charitable donations at the beginning of the current tax year", "charitable", { note: "Amount 1A less the expired amount at line 239 — last year’s closing pool, net of what aged out." }),
@@ -3768,7 +3949,7 @@ const SCHEDULE_2_CARRYFORWARD_YEARS = {
3768
3949
  };
3769
3950
  //#endregion
3770
3951
  //#region src/t2/forms/schedule3.ts
3771
- const SECTIONS$16 = [{
3952
+ const SECTIONS$18 = [{
3772
3953
  id: "received",
3773
3954
  title: "Part 1 — Dividends received in the tax year",
3774
3955
  description: "One row per payer. Columns B, C, D, I and J are completed only when the payer is connected."
@@ -3792,7 +3973,7 @@ const T2_SCHEDULE_3 = {
3792
3973
  title: "Dividends received, taxable dividends paid, and Part IV tax calculation",
3793
3974
  scheme: "cra-line",
3794
3975
  taxYears: { from: 2023 },
3795
- sections: SECTIONS$16,
3976
+ sections: SECTIONS$18,
3796
3977
  fields: [
3797
3978
  F$2("200", "Name of payer corporation from which the corporation received the dividend", "received", { kind: "text" }),
3798
3979
  F$2("205", "Enter 1 if the payer corporation is connected", "received", {
@@ -4772,7 +4953,7 @@ const SCHEDULE_6_GRIDS = [
4772
4953
  ]
4773
4954
  }
4774
4955
  ];
4775
- const SECTIONS$13 = [
4956
+ const SECTIONS$15 = [
4776
4957
  {
4777
4958
  id: "designation",
4778
4959
  title: "Designation under paragraph 111(4)(e)"
@@ -4904,7 +5085,7 @@ const T2_SCHEDULE_6 = {
4904
5085
  title: "Summary of dispositions of capital property",
4905
5086
  scheme: "cra-line",
4906
5087
  taxYears: { from: 2023 },
4907
- sections: SECTIONS$13,
5088
+ sections: SECTIONS$15,
4908
5089
  fields: [...gridFields, ...SUMMARY].sort((a, b) => Number(a.line) - Number(b.line)),
4909
5090
  provenance: {
4910
5091
  document: "research/sources/cra-forms/T2SCH06-capital-gains.pdf",
@@ -5320,7 +5501,7 @@ const SCHEDULE_8_COLUMNS = [
5320
5501
  caption: "UCC at the end of the year"
5321
5502
  }
5322
5503
  ];
5323
- const SECTIONS$11 = [{
5504
+ const SECTIONS$13 = [{
5324
5505
  id: "cca-grid",
5325
5506
  title: "Capital cost allowance by class",
5326
5507
  description: "One row per class. The numbered columns are what a return transmits; the unnumbered ones are arithmetic the form shows on the way."
@@ -5352,7 +5533,7 @@ const T2_SCHEDULE_8 = {
5352
5533
  title: "Capital cost allowance",
5353
5534
  scheme: "cra-line",
5354
5535
  taxYears: { from: 2026 },
5355
- sections: SECTIONS$11,
5536
+ sections: SECTIONS$13,
5356
5537
  fields: SCHEDULE_8_COLUMNS.filter((c) => c.line).map((c) => {
5357
5538
  const dest = DESTINATIONS[c.line];
5358
5539
  return {
@@ -5416,7 +5597,7 @@ const SCHEDULE_13_RESERVE_ROWS = [
5416
5597
  closing: "240"
5417
5598
  }
5418
5599
  ];
5419
- const SECTIONS$10 = [{
5600
+ const SECTIONS$12 = [{
5420
5601
  id: "capital-gains",
5421
5602
  title: "Part 1 — Capital gains reserves",
5422
5603
  description: "A repeating grid, one row per property. Lines 001–004 head the columns rather than naming fields, so only the totals carry single figures."
@@ -5555,7 +5736,7 @@ const T2_SCHEDULE_13 = {
5555
5736
  title: "Continuity of reserves",
5556
5737
  scheme: "cra-line",
5557
5738
  taxYears: { from: 2011 },
5558
- sections: SECTIONS$10,
5739
+ sections: SECTIONS$12,
5559
5740
  fields: [
5560
5741
  ...COLUMN_HEADS,
5561
5742
  ...reserveFields,
@@ -5569,7 +5750,7 @@ const T2_SCHEDULE_13 = {
5569
5750
  };
5570
5751
  //#endregion
5571
5752
  //#region src/t2/forms/schedule21.ts
5572
- const SECTIONS$9 = [
5753
+ const SECTIONS$11 = [
5573
5754
  {
5574
5755
  id: "non-business",
5575
5756
  title: "Part 1 — Federal foreign non-business income tax credit",
@@ -5600,7 +5781,7 @@ const T2_SCHEDULE_21 = {
5600
5781
  title: "Federal and provincial or territorial foreign income tax credits and federal logging tax credit",
5601
5782
  scheme: "cra-line",
5602
5783
  taxYears: { from: 2023 },
5603
- sections: SECTIONS$9,
5784
+ sections: SECTIONS$11,
5604
5785
  fields: [
5605
5786
  F$1("100", "Country of source of foreign non-business income", "non-business", { kind: "text" }),
5606
5787
  F$1("110", "Net foreign non-business income earned in the year", "non-business"),
@@ -5756,7 +5937,7 @@ const T2_SCHEDULE_23 = {
5756
5937
  const SCHEDULE_23_GROUP_BUSINESS_LIMIT = 5e5;
5757
5938
  //#endregion
5758
5939
  //#region src/t2/forms/schedule24.ts
5759
- const SECTIONS$7 = [
5940
+ const SECTIONS$9 = [
5760
5941
  {
5761
5942
  id: "operation",
5762
5943
  title: "Part 1 — Type of operation",
@@ -5787,7 +5968,7 @@ const T2_SCHEDULE_24 = {
5787
5968
  title: "First-time filer after incorporation, amalgamation, or wind-up of a subsidiary",
5788
5969
  scheme: "cra-line",
5789
5970
  taxYears: { from: 2011 },
5790
- sections: SECTIONS$7,
5971
+ sections: SECTIONS$9,
5791
5972
  fields: [
5792
5973
  F("100", "Type of operation that applies to the corporation", "operation", {
5793
5974
  kind: "code",
@@ -7981,6 +8162,208 @@ const T2_SCHEDULE_130 = {
7981
8162
  }
7982
8163
  };
7983
8164
  //#endregion
8165
+ //#region src/t2/at1/forms/schedule3.ts
8166
+ /** `SSSFFFOOO` — schedule, field, occurrence. */
8167
+ const id$1 = (field, occurrence = 1) => `003${field}${String(occurrence).padStart(3, "0")}`;
8168
+ const AT1_SCHEDULE_3 = {
8169
+ id: "AT1SCH03",
8170
+ program: "AT1",
8171
+ schedule: "003",
8172
+ title: "Alberta Other Tax Deductions and Credits",
8173
+ scheme: "tra-line-item-id",
8174
+ taxYears: { from: 2024 },
8175
+ sections: [
8176
+ {
8177
+ id: "itc",
8178
+ title: "Investor Tax Credit (ITC)"
8179
+ },
8180
+ {
8181
+ id: "citc",
8182
+ title: "Capital Investment Tax Credit (CITC)"
8183
+ },
8184
+ {
8185
+ id: "apitc",
8186
+ title: "Agri-Processing Investment Tax Credit (APITC)",
8187
+ description: "Per-vintage caps: 20% current year, 30% 1st preceding, 50% 2nd preceding, uncapped 3rd-10th."
8188
+ },
8189
+ {
8190
+ id: "mad",
8191
+ title: "Maximum Allowable Deduction (MAD)",
8192
+ description: "The shared ceiling across all three credits — ITC has first call on it."
8193
+ }
8194
+ ],
8195
+ fields: [
8196
+ {
8197
+ field: "100",
8198
+ caption: "ITC — total on certificates issued during the year",
8199
+ kind: "money",
8200
+ role: "input",
8201
+ section: "itc"
8202
+ },
8203
+ {
8204
+ field: "102",
8205
+ caption: "ITC — carried forward from prior year(s)",
8206
+ kind: "money",
8207
+ role: "input",
8208
+ section: "itc",
8209
+ note: "= prior year’s line 108."
8210
+ },
8211
+ {
8212
+ field: "104",
8213
+ caption: "ITC — amount applied to the current taxation year",
8214
+ kind: "money",
8215
+ role: "input",
8216
+ section: "itc",
8217
+ note: "Blank claims the maximum the shared room (604) and the pool (100+102) both allow."
8218
+ },
8219
+ {
8220
+ field: "106",
8221
+ caption: "ITC — expired during the year",
8222
+ kind: "money",
8223
+ role: "input",
8224
+ section: "itc"
8225
+ },
8226
+ {
8227
+ field: "108",
8228
+ caption: "ITC — carried forward to next year",
8229
+ kind: "money",
8230
+ role: "computed",
8231
+ section: "itc",
8232
+ note: "= 100 + 102 − 104 − 106."
8233
+ },
8234
+ {
8235
+ field: "200",
8236
+ caption: "CITC — total on certificates issued during the year",
8237
+ kind: "money",
8238
+ role: "input",
8239
+ section: "citc"
8240
+ },
8241
+ {
8242
+ field: "202",
8243
+ caption: "CITC — carried forward from prior year(s)",
8244
+ kind: "money",
8245
+ role: "input",
8246
+ section: "citc",
8247
+ note: "= prior year’s line 208."
8248
+ },
8249
+ {
8250
+ field: "204",
8251
+ caption: "CITC — amount applied to the current taxation year",
8252
+ kind: "money",
8253
+ role: "input",
8254
+ section: "citc",
8255
+ note: "Forced to nil while ITC (line 108) still has an unused carryforward balance."
8256
+ },
8257
+ {
8258
+ field: "206",
8259
+ caption: "CITC — expired during the year",
8260
+ kind: "money",
8261
+ role: "input",
8262
+ section: "citc"
8263
+ },
8264
+ {
8265
+ field: "208",
8266
+ caption: "CITC — carried forward to next year",
8267
+ kind: "money",
8268
+ role: "computed",
8269
+ section: "citc",
8270
+ note: "= 200 + 202 − 204 − 206."
8271
+ },
8272
+ {
8273
+ field: "300",
8274
+ caption: "APITC — total received on certificates issued this year",
8275
+ kind: "money",
8276
+ role: "input",
8277
+ section: "apitc"
8278
+ },
8279
+ {
8280
+ field: "302",
8281
+ caption: "APITC — carried forward from prior year(s), all vintages",
8282
+ kind: "money",
8283
+ role: "input",
8284
+ section: "apitc"
8285
+ },
8286
+ {
8287
+ field: "304",
8288
+ caption: "APITC — applied, current year (≤20%)",
8289
+ kind: "money",
8290
+ role: "input",
8291
+ section: "apitc"
8292
+ },
8293
+ {
8294
+ field: "306",
8295
+ caption: "APITC — applied, 1st preceding taxation year (≤30%)",
8296
+ kind: "money",
8297
+ role: "input",
8298
+ section: "apitc"
8299
+ },
8300
+ {
8301
+ field: "308",
8302
+ caption: "APITC — applied, 2nd preceding taxation year (≤50%)",
8303
+ kind: "money",
8304
+ role: "input",
8305
+ section: "apitc"
8306
+ },
8307
+ {
8308
+ field: "310",
8309
+ caption: "APITC — applied, 3rd-10th preceding taxation years (uncapped)",
8310
+ kind: "money",
8311
+ role: "input",
8312
+ section: "apitc"
8313
+ },
8314
+ {
8315
+ field: "312",
8316
+ caption: "APITC — total applied, after shared-room allocation",
8317
+ kind: "money",
8318
+ role: "computed",
8319
+ section: "apitc",
8320
+ note: "= 304 + 306 + 308 + 310."
8321
+ },
8322
+ {
8323
+ field: "314",
8324
+ caption: "APITC — expired during the year",
8325
+ kind: "money",
8326
+ role: "input",
8327
+ section: "apitc"
8328
+ },
8329
+ {
8330
+ field: "316",
8331
+ caption: "APITC — available for carryforward",
8332
+ kind: "money",
8333
+ role: "computed",
8334
+ section: "apitc",
8335
+ note: "= 300 + 302 − 312 − 314."
8336
+ },
8337
+ {
8338
+ field: "600",
8339
+ caption: "MAD — total credits applied (104 + 204 + 312)",
8340
+ kind: "money",
8341
+ role: "computed",
8342
+ section: "mad"
8343
+ },
8344
+ {
8345
+ field: "604",
8346
+ caption: "MAD — maximum allowable deduction for the year",
8347
+ kind: "money",
8348
+ role: "computed",
8349
+ section: "mad",
8350
+ note: "Lesser of line 600 and the room at line 602 (AT1 jacket line 068 minus lines 070+071+072+074); floored at nil."
8351
+ }
8352
+ ].map(({ field, ...rest }) => ({
8353
+ ...rest,
8354
+ line: id$1(field)
8355
+ })).sort((a, b) => a.line.localeCompare(b.line)),
8356
+ provenance: {
8357
+ document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
8358
+ retrieved: "2026-08-29",
8359
+ revision: "AT1 Chapter 3, 2025.2 — no fillable PDF exists for this schedule"
8360
+ }
8361
+ };
8362
+ //#endregion
8363
+ //#region src/t2/at1/forms/schedule15.ts
8364
+ /** `SSSFFFOOO` — schedule, field, occurrence. */
8365
+ const id = (field, occurrence = 1) => `015${field}${String(occurrence).padStart(3, "0")}`;
8366
+ //#endregion
7984
8367
  //#region src/forms/registry.ts
7985
8368
  /**
7986
8369
  * THE FORM REGISTRY — every form definition, and the links between them.
@@ -8024,14 +8407,81 @@ const FORMS = [
8024
8407
  T2_SCHEDULE_53,
8025
8408
  T2_SCHEDULE_55,
8026
8409
  AT1_JACKET,
8410
+ AT1_SCHEDULE_3,
8027
8411
  AT1_SCHEDULE_12,
8028
8412
  AT1_SCHEDULE_13,
8413
+ {
8414
+ id: "AT1SCH15",
8415
+ program: "AT1",
8416
+ schedule: "015",
8417
+ title: "Alberta Resource Related Deductions",
8418
+ scheme: "tra-line-item-id",
8419
+ taxYears: { from: 2024 },
8420
+ sections: [{
8421
+ id: "sfede",
8422
+ title: "SFEDE — Specified Foreign Exploration and Development Expenses, per country"
8423
+ }, {
8424
+ id: "cfre",
8425
+ title: "CFRE — Cumulative Foreign Resource Expenses, per country"
8426
+ }],
8427
+ fields: [
8428
+ {
8429
+ field: "241",
8430
+ caption: "SFEDE regular — country code",
8431
+ kind: "code",
8432
+ role: "input",
8433
+ section: "sfede",
8434
+ note: "Must equal the federal country code (fed 012601)."
8435
+ },
8436
+ {
8437
+ field: "261",
8438
+ caption: "SFEDE successor — country code",
8439
+ kind: "code",
8440
+ role: "input",
8441
+ section: "sfede",
8442
+ note: "Must equal the federal country code (fed 012651)."
8443
+ },
8444
+ {
8445
+ field: "281",
8446
+ caption: "CFRE regular — country code",
8447
+ kind: "code",
8448
+ role: "input",
8449
+ section: "cfre",
8450
+ note: "Must equal the federal country code (fed 012701)."
8451
+ },
8452
+ {
8453
+ field: "293",
8454
+ caption: "CFRE regular — amount claimed this year",
8455
+ kind: "money",
8456
+ role: "input",
8457
+ section: "cfre",
8458
+ note: "= A + B: A is a 10%-floor/30%-income-capped amount from this country’s own pool; B draws on the (spec-undefined) global foreign resource limit."
8459
+ },
8460
+ {
8461
+ field: "301",
8462
+ caption: "CFRE successor — country code",
8463
+ kind: "code",
8464
+ role: "input",
8465
+ section: "cfre",
8466
+ note: "Must equal the federal country code (fed 012751)."
8467
+ }
8468
+ ].map(({ field, ...rest }) => ({
8469
+ ...rest,
8470
+ line: id(field)
8471
+ })).sort((a, b) => a.line.localeCompare(b.line)),
8472
+ provenance: {
8473
+ document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
8474
+ retrieved: "2026-08-29",
8475
+ revision: "AT1 Chapter 3, 2025.2 — no fillable PDF exists for this schedule; partial (SFEDE/CFRE per-country lines only)"
8476
+ }
8477
+ },
8029
8478
  AT1_SCHEDULE_16,
8030
8479
  AT1_SCHEDULE_17,
8031
8480
  AT1_SCHEDULE_18,
8032
8481
  AT1_SCHEDULE_20,
8033
8482
  AT1_SCHEDULE_21,
8034
- AT1_SCHEDULE_29
8483
+ AT1_SCHEDULE_29,
8484
+ AT4970
8035
8485
  ];
8036
8486
  const BY_ID = new Map(FORMS.map((f) => [f.id, f]));
8037
8487
  /** A form definition by id — `'T2SCH1'`, `'AT1SCH12'`. */
@@ -8078,4 +8528,4 @@ function findBrokenLinks() {
8078
8528
  return problems;
8079
8529
  }
8080
8530
  //#endregion
8081
- export { SCHEDULE_2_CARRYFORWARD_YEARS as $, SCHEDULE_8_CCA_LINE as A, AT1_DONATION_CARRYFORWARD_YEARS as At, SCHEDULE_5_JURISDICTIONS as B, AT1_SCHEDULE_13 as Bt, SCHEDULE_23_GROUP_BUSINESS_LIMIT as C, AT1_IEG_ENHANCED_RATE as Ct, T2_SCHEDULE_21 as D, AT1_SCHEDULE_29 as Dt, SCHEDULE_21_NON_BUSINESS_CREDIT_LINE as E, AT1_IEG_PRIOR_YEARS as Et, SCHEDULE_7_ADJUSTED_AII_LINE as F, AT1_SECTION_34_2_GROSS_UP as Ft, SCHEDULE_4_LPP_CARRYFORWARD_YEARS as G, AT1_BALANCE_LINE as Gt, SCHEDULE_5_SALARIES_OFFSET as H, AT1_SCHEDULE_12 as Ht, SCHEDULE_7_PASSIVE_INCOME_THRESHOLD as I, AT1_SCHEDULE_17 as It, UnclassifiedLineError as J, SCHEDULE_4_NON_CAPITAL_CARRYFORWARD_YEARS as K, AT1_JACKET as Kt, T2_SCHEDULE_7 as L, AT1_SCHEDULE_17_RESERVES as Lt, SCHEDULE_8_RECAPTURE_LINE as M, AT1_SCHEDULE_20_POOLS as Mt, SCHEDULE_8_TERMINAL_LOSS_LINE as N, AT1_SCHEDULE_18 as Nt, SCHEDULE_13_RESERVE_ROWS as O, AT1_SCHEDULE_21 as Ot, T2_SCHEDULE_8 as P, AT1_SCHEDULE_18_CATEGORIES as Pt, T2_SCHEDULE_3 as Q, SCHEDULE_6_GRIDS as R, AT1_SCHEDULE_16 as Rt, T2_SCHEDULE_24 as S, AT1_IEG_BASE_RATE as St, SCHEDULE_21_BUSINESS_CREDIT_LINE as T, AT1_IEG_MAX_EXPENDITURE as Tt, T2_SCHEDULE_5 as U, AT1_SCHEDULE_12_PAIRS as Ut, SCHEDULE_5_REVENUE_OFFSET as V, AT1_SCHEDULE_13_COLUMNS as Vt, SCHEDULE_4_CARRYBACK_YEARS as W, AT1_BALANCE_CREDIT_LINES as Wt, SCHEDULE_3_ELIGIBLE_PAID_LINE as X, buildFields as Y, SCHEDULE_3_TAXABLE_PAID_LINE as Z, T2_SCHEDULE_33 as _, T2_TOTAL_TAX_PAYABLE_LINE as _t, getField as a, SCHEDULE_1_TOTAL_DEDUCTIONS_LINE as at, T2_SCHEDULE_31 as b, CO17_TAXABLE_INCOME_BOX as bt, T2_SCHEDULE_55 as c, indexByLine as ct, T2_SCHEDULE_53 as d, validateFormDefinition as dt, SCHEDULE_2_CHARITABLE_CURRENT_LINE as et, SCHEDULE_50_DISCLOSURE_THRESHOLD as f, T2_BASE_PART_I_RATE as ft, SCHEDULE_33_TAXABLE_CAPITAL_IN_CANADA_LINE as g, T2_TAXABLE_INCOME_LINE as gt, T2_SCHEDULE_43 as h, T2_SMALL_BUSINESS_DEDUCTION_RATE as ht, formsForProgram as i, SCHEDULE_1_TOTAL_ADDITIONS_LINE as it, SCHEDULE_8_COLUMNS as j, AT1_SCHEDULE_20 as jt, T2_SCHEDULE_13 as k, AT1_SCHEDULE_21_POOLS as kt, SCHEDULE_53_CLOSING_GRIP_LINE as l, inputFields as lt, SCHEDULE_43_DIVIDEND_ALLOWANCE as m, T2_NET_INCOME_FOR_TAX_LINE as mt, describeLine as n, SCHEDULE_1_LINES as nt, getForm as o, T2_SCHEDULE_1 as ot, T2_SCHEDULE_50 as p, T2_JACKET as pt, T2_SCHEDULE_4 as q, AT1_TAX_PAYABLE_LINE as qt, findBrokenLinks as r, SCHEDULE_1_LINE_BY_NUMBER as rt, T2_SCHEDULE_130 as s, fieldsInSection as st, FORMS as t, T2_SCHEDULE_2 as tt, SCHEDULE_53_GENERAL_RATE_FACTOR as u, isEnterableLine as ut, SCHEDULE_31_ENHANCED_SRED_RATE as v, CO17_QUEBEC_PROPORTION_BOX as vt, T2_SCHEDULE_23 as w, AT1_IEG_JACKET_LINE as wt, SCHEDULE_24_OPERATION_TYPE_LINE as x, CO17_TAX_PAYABLE_BOX as xt, SCHEDULE_31_GENERAL_SRED_RATE as y, CO17_RETURN as yt, T2_SCHEDULE_6 as z, AT1_SCHEDULE_16_CARRYFORWARD_LINE as zt };
8531
+ export { SCHEDULE_2_CARRYFORWARD_YEARS as $, SCHEDULE_8_CCA_LINE as A, AT1_DONATION_CARRYFORWARD_YEARS as At, SCHEDULE_5_JURISDICTIONS as B, AT1_SCHEDULE_13 as Bt, SCHEDULE_23_GROUP_BUSINESS_LIMIT as C, AT1_IEG_ENHANCED_RATE as Ct, T2_SCHEDULE_21 as D, AT1_SCHEDULE_29 as Dt, SCHEDULE_21_NON_BUSINESS_CREDIT_LINE as E, AT1_IEG_PRIOR_YEARS as Et, SCHEDULE_7_ADJUSTED_AII_LINE as F, AT1_SECTION_34_2_GROSS_UP as Ft, SCHEDULE_4_LPP_CARRYFORWARD_YEARS as G, AT1_BALANCE_LINE as Gt, SCHEDULE_5_SALARIES_OFFSET as H, AT1_SCHEDULE_12 as Ht, SCHEDULE_7_PASSIVE_INCOME_THRESHOLD as I, AT1_SCHEDULE_17 as It, UnclassifiedLineError as J, AT4970 as Jt, SCHEDULE_4_NON_CAPITAL_CARRYFORWARD_YEARS as K, AT1_JACKET as Kt, T2_SCHEDULE_7 as L, AT1_SCHEDULE_17_RESERVES as Lt, SCHEDULE_8_RECAPTURE_LINE as M, AT1_SCHEDULE_20_POOLS as Mt, SCHEDULE_8_TERMINAL_LOSS_LINE as N, AT1_SCHEDULE_18 as Nt, SCHEDULE_13_RESERVE_ROWS as O, AT1_SCHEDULE_21 as Ot, T2_SCHEDULE_8 as P, AT1_SCHEDULE_18_CATEGORIES as Pt, T2_SCHEDULE_3 as Q, SCHEDULE_6_GRIDS as R, AT1_SCHEDULE_16 as Rt, T2_SCHEDULE_24 as S, AT1_IEG_BASE_RATE as St, SCHEDULE_21_BUSINESS_CREDIT_LINE as T, AT1_IEG_MAX_EXPENDITURE as Tt, T2_SCHEDULE_5 as U, AT1_SCHEDULE_12_PAIRS as Ut, SCHEDULE_5_REVENUE_OFFSET as V, AT1_SCHEDULE_13_COLUMNS as Vt, SCHEDULE_4_CARRYBACK_YEARS as W, AT1_BALANCE_CREDIT_LINES as Wt, SCHEDULE_3_ELIGIBLE_PAID_LINE as X, buildFields as Y, AT4970_JURISDICTIONS as Yt, SCHEDULE_3_TAXABLE_PAID_LINE as Z, T2_SCHEDULE_33 as _, T2_TOTAL_TAX_PAYABLE_LINE as _t, getField as a, SCHEDULE_1_TOTAL_DEDUCTIONS_LINE as at, T2_SCHEDULE_31 as b, CO17_TAXABLE_INCOME_BOX as bt, T2_SCHEDULE_55 as c, indexByLine as ct, T2_SCHEDULE_53 as d, validateFormDefinition as dt, SCHEDULE_2_CHARITABLE_CURRENT_LINE as et, SCHEDULE_50_DISCLOSURE_THRESHOLD as f, T2_BASE_PART_I_RATE as ft, SCHEDULE_33_TAXABLE_CAPITAL_IN_CANADA_LINE as g, T2_TAXABLE_INCOME_LINE as gt, T2_SCHEDULE_43 as h, T2_SMALL_BUSINESS_DEDUCTION_RATE as ht, formsForProgram as i, SCHEDULE_1_TOTAL_ADDITIONS_LINE as it, SCHEDULE_8_COLUMNS as j, AT1_SCHEDULE_20 as jt, T2_SCHEDULE_13 as k, AT1_SCHEDULE_21_POOLS as kt, SCHEDULE_53_CLOSING_GRIP_LINE as l, inputFields as lt, SCHEDULE_43_DIVIDEND_ALLOWANCE as m, T2_NET_INCOME_FOR_TAX_LINE as mt, describeLine as n, SCHEDULE_1_LINES as nt, getForm as o, T2_SCHEDULE_1 as ot, T2_SCHEDULE_50 as p, T2_JACKET as pt, T2_SCHEDULE_4 as q, AT1_TAX_PAYABLE_LINE as qt, findBrokenLinks as r, SCHEDULE_1_LINE_BY_NUMBER as rt, T2_SCHEDULE_130 as s, fieldsInSection as st, FORMS as t, T2_SCHEDULE_2 as tt, SCHEDULE_53_GENERAL_RATE_FACTOR as u, isEnterableLine as ut, SCHEDULE_31_ENHANCED_SRED_RATE as v, CO17_QUEBEC_PROPORTION_BOX as vt, T2_SCHEDULE_23 as w, AT1_IEG_JACKET_LINE as wt, SCHEDULE_24_OPERATION_TYPE_LINE as x, CO17_TAX_PAYABLE_BOX as xt, SCHEDULE_31_GENERAL_SRED_RATE as y, CO17_RETURN as yt, T2_SCHEDULE_6 as z, AT1_SCHEDULE_16_CARRYFORWARD_LINE as zt };