@classytic/ca-tax 0.0.5 → 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/CHANGELOG.md +238 -0
- package/dist/forms.mjs +340 -72
- package/dist/index.mjs +2 -2
- package/dist/index3.d.mts +3007 -21
- package/dist/index4.d.mts +2 -2
- package/dist/t2/index.d.mts +2 -2
- package/dist/t2/index.mjs +2 -2
- package/dist/t2.mjs +2688 -172
- package/package.json +5 -5
package/dist/forms.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/t2/at1/forms/at4970.ts
|
|
2
2
|
/** `SSSFFFOOO` — placeholder schedule code; see the module note above. */
|
|
3
|
-
const id$
|
|
3
|
+
const id$11 = (field, occurrence = 1) => `497${field}${String(occurrence).padStart(3, "0")}`;
|
|
4
4
|
const AT4970 = {
|
|
5
5
|
id: "AT4970",
|
|
6
6
|
program: "AT1",
|
|
@@ -83,7 +83,7 @@ const AT4970 = {
|
|
|
83
83
|
}
|
|
84
84
|
].map(({ field, ...rest }) => ({
|
|
85
85
|
...rest,
|
|
86
|
-
line: id$
|
|
86
|
+
line: id$11(field)
|
|
87
87
|
})).sort((a, b) => a.line.localeCompare(b.line)),
|
|
88
88
|
provenance: {
|
|
89
89
|
document: "research/sources/tra-guides/tra-guide-claiming-the-innovation-employment-grant.pdf",
|
|
@@ -565,8 +565,8 @@ const AT1_JACKET_CAPTIONS = [
|
|
|
565
565
|
//#endregion
|
|
566
566
|
//#region src/t2/at1/forms/jacket.ts
|
|
567
567
|
/** `SSSFFFOOO` — schedule, field, occurrence. The jacket is schedule 000. */
|
|
568
|
-
const id$
|
|
569
|
-
const SECTIONS$
|
|
568
|
+
const id$10 = (field, occurrence = 1) => `000${field}${String(occurrence).padStart(3, "0")}`;
|
|
569
|
+
const SECTIONS$31 = [
|
|
570
570
|
{
|
|
571
571
|
id: "identification",
|
|
572
572
|
title: "Identification",
|
|
@@ -693,12 +693,12 @@ const AT1_JACKET = {
|
|
|
693
693
|
title: "Alberta Corporate Income Tax Return — AT1",
|
|
694
694
|
scheme: "tra-line-item-id",
|
|
695
695
|
taxYears: { from: 2025 },
|
|
696
|
-
sections: SECTIONS$
|
|
696
|
+
sections: SECTIONS$31,
|
|
697
697
|
fields: AT1_JACKET_CAPTIONS.map((c) => {
|
|
698
698
|
const carried = CARRIED_IN$1[c.line];
|
|
699
699
|
const note = NOTES$2[c.line];
|
|
700
700
|
return {
|
|
701
|
-
line: id$
|
|
701
|
+
line: id$10(c.line),
|
|
702
702
|
caption: c.caption,
|
|
703
703
|
kind: kindOf(c),
|
|
704
704
|
role: COMPUTED.has(c.line) ? "computed" : carried ? "carried-in" : "input",
|
|
@@ -719,25 +719,25 @@ const AT1_JACKET = {
|
|
|
719
719
|
}
|
|
720
720
|
};
|
|
721
721
|
/** 000080001 — Alberta tax payable, before credits. */
|
|
722
|
-
const AT1_TAX_PAYABLE_LINE = id$
|
|
722
|
+
const AT1_TAX_PAYABLE_LINE = id$10("080");
|
|
723
723
|
/** 000090001 — the balance, signed. Negative is an overpayment. */
|
|
724
|
-
const AT1_BALANCE_LINE = id$
|
|
724
|
+
const AT1_BALANCE_LINE = id$10("090");
|
|
725
725
|
/**
|
|
726
726
|
* The five credits the specification nets against 080 to reach 090. The
|
|
727
727
|
* Innovation Employment Grant (129) is NOT among them.
|
|
728
728
|
*/
|
|
729
729
|
const AT1_BALANCE_CREDIT_LINES = Object.freeze([
|
|
730
|
-
id$
|
|
731
|
-
id$
|
|
732
|
-
id$
|
|
733
|
-
id$
|
|
734
|
-
id$
|
|
730
|
+
id$10("081"),
|
|
731
|
+
id$10("082"),
|
|
732
|
+
id$10("085"),
|
|
733
|
+
id$10("086"),
|
|
734
|
+
id$10("087")
|
|
735
735
|
]);
|
|
736
736
|
//#endregion
|
|
737
737
|
//#region src/t2/at1/forms/schedule12.ts
|
|
738
738
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
739
|
-
const id$
|
|
740
|
-
const SECTIONS$
|
|
739
|
+
const id$9 = (field, occurrence = 1) => `012${field}${String(occurrence).padStart(3, "0")}`;
|
|
740
|
+
const SECTIONS$30 = [{
|
|
741
741
|
id: "area-a",
|
|
742
742
|
title: "Area A — net income for Alberta corporate income tax purposes",
|
|
743
743
|
description: "Reconciling items between federal and Alberta net income. Report a pair only where the two figures differ."
|
|
@@ -999,21 +999,21 @@ const SINGLES = [
|
|
|
999
999
|
}
|
|
1000
1000
|
];
|
|
1001
1001
|
const pairFields = AT1_SCHEDULE_12_PAIRS.flatMap((p) => [{
|
|
1002
|
-
line: id$
|
|
1002
|
+
line: id$9(p.federal),
|
|
1003
1003
|
caption: `${p.label} — federal`,
|
|
1004
1004
|
kind: "money",
|
|
1005
1005
|
role: "input",
|
|
1006
1006
|
section: p.section,
|
|
1007
1007
|
requirement: "conditional",
|
|
1008
|
-
note: `Report only if it differs from the Alberta figure at ${id$
|
|
1008
|
+
note: `Report only if it differs from the Alberta figure at ${id$9(p.alberta)}.${p.note ? ` ${p.note}` : ""}`
|
|
1009
1009
|
}, {
|
|
1010
|
-
line: id$
|
|
1010
|
+
line: id$9(p.alberta),
|
|
1011
1011
|
caption: `${p.label} — Alberta`,
|
|
1012
1012
|
kind: "money",
|
|
1013
1013
|
role: "input",
|
|
1014
1014
|
section: p.section,
|
|
1015
1015
|
requirement: "conditional",
|
|
1016
|
-
note: `Report only if it differs from the federal figure at ${id$
|
|
1016
|
+
note: `Report only if it differs from the federal figure at ${id$9(p.federal)}.${p.note ? ` ${p.note}` : ""}`
|
|
1017
1017
|
}]);
|
|
1018
1018
|
const AT1_SCHEDULE_12 = {
|
|
1019
1019
|
id: "AT1SCH12",
|
|
@@ -1022,10 +1022,10 @@ const AT1_SCHEDULE_12 = {
|
|
|
1022
1022
|
title: "Alberta income/loss reconciliation",
|
|
1023
1023
|
scheme: "tra-line-item-id",
|
|
1024
1024
|
taxYears: { from: 2024 },
|
|
1025
|
-
sections: SECTIONS$
|
|
1025
|
+
sections: SECTIONS$30,
|
|
1026
1026
|
fields: [...SINGLES.map(({ field, ...rest }) => ({
|
|
1027
1027
|
...rest,
|
|
1028
|
-
line: id$
|
|
1028
|
+
line: id$9(field)
|
|
1029
1029
|
})), ...pairFields].sort((a, b) => a.line.localeCompare(b.line)),
|
|
1030
1030
|
provenance: {
|
|
1031
1031
|
document: "research/field-maps/at1-schedules-12-21.md",
|
|
@@ -1036,7 +1036,7 @@ const AT1_SCHEDULE_12 = {
|
|
|
1036
1036
|
//#endregion
|
|
1037
1037
|
//#region src/t2/at1/forms/schedule13.ts
|
|
1038
1038
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1039
|
-
const id$
|
|
1039
|
+
const id$8 = (field, occurrence = 1) => `013${field}${String(occurrence).padStart(3, "0")}`;
|
|
1040
1040
|
const AT1_SCHEDULE_13_COLUMNS = [
|
|
1041
1041
|
{
|
|
1042
1042
|
column: 1,
|
|
@@ -1193,10 +1193,10 @@ const AT1_SCHEDULE_13 = {
|
|
|
1193
1193
|
fields: [
|
|
1194
1194
|
...RETURN_LEVEL.map(({ field, ...rest }) => ({
|
|
1195
1195
|
...rest,
|
|
1196
|
-
line: id$
|
|
1196
|
+
line: id$8(field)
|
|
1197
1197
|
})),
|
|
1198
1198
|
...AT1_SCHEDULE_13_COLUMNS.filter((c) => c.line).map((c) => ({
|
|
1199
|
-
line: id$
|
|
1199
|
+
line: id$8(c.line),
|
|
1200
1200
|
caption: c.caption,
|
|
1201
1201
|
kind: c.column === 1 ? "code" : c.column === 20 ? "rate" : "money",
|
|
1202
1202
|
role: "input",
|
|
@@ -1204,7 +1204,7 @@ const AT1_SCHEDULE_13 = {
|
|
|
1204
1204
|
...c.note ? { note: c.note } : {}
|
|
1205
1205
|
})),
|
|
1206
1206
|
...TOTALS$3.map((t) => ({
|
|
1207
|
-
line: id$
|
|
1207
|
+
line: id$8(t.field),
|
|
1208
1208
|
caption: t.caption,
|
|
1209
1209
|
kind: "money",
|
|
1210
1210
|
role: "total",
|
|
@@ -1225,7 +1225,7 @@ const AT1_SCHEDULE_13 = {
|
|
|
1225
1225
|
//#endregion
|
|
1226
1226
|
//#region src/t2/at1/forms/schedule16.ts
|
|
1227
1227
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1228
|
-
const id$
|
|
1228
|
+
const id$7 = (field, occurrence = 1) => `016${field}${String(occurrence).padStart(3, "0")}`;
|
|
1229
1229
|
const AT1_SCHEDULE_16 = {
|
|
1230
1230
|
id: "AT1SCH16",
|
|
1231
1231
|
program: "AT1",
|
|
@@ -1355,7 +1355,7 @@ const AT1_SCHEDULE_16 = {
|
|
|
1355
1355
|
}
|
|
1356
1356
|
].map(({ field, ...rest }) => ({
|
|
1357
1357
|
...rest,
|
|
1358
|
-
line: id$
|
|
1358
|
+
line: id$7(field)
|
|
1359
1359
|
})),
|
|
1360
1360
|
provenance: {
|
|
1361
1361
|
document: "research/field-maps/at1-schedules-16-17.md",
|
|
@@ -1368,7 +1368,7 @@ const AT1_SCHEDULE_16_CARRYFORWARD_LINE = "016022001";
|
|
|
1368
1368
|
//#endregion
|
|
1369
1369
|
//#region src/t2/at1/forms/schedule17.ts
|
|
1370
1370
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1371
|
-
const id$
|
|
1371
|
+
const id$6 = (field, occurrence = 1) => `017${field}${String(occurrence).padStart(3, "0")}`;
|
|
1372
1372
|
const AT1_SCHEDULE_17_RESERVES = [
|
|
1373
1373
|
{
|
|
1374
1374
|
label: "Doubtful debts",
|
|
@@ -1425,7 +1425,7 @@ const AT1_SCHEDULE_17_RESERVES = [
|
|
|
1425
1425
|
federalOpening: "230"
|
|
1426
1426
|
}
|
|
1427
1427
|
];
|
|
1428
|
-
const SECTIONS$
|
|
1428
|
+
const SECTIONS$27 = [{
|
|
1429
1429
|
id: "reserves",
|
|
1430
1430
|
title: "Continuity of reserves",
|
|
1431
1431
|
description: "Eight reserve kinds. Six mirror federal Schedule 13; policy reserves and bank reserves exist only on the Alberta form."
|
|
@@ -1442,7 +1442,7 @@ const COLUMNS$1 = [
|
|
|
1442
1442
|
const reserveFields$1 = AT1_SCHEDULE_17_RESERVES.flatMap((r) => COLUMNS$1.map(([key, columnCaption]) => {
|
|
1443
1443
|
const isOpening = key === "opening";
|
|
1444
1444
|
return {
|
|
1445
|
-
line: id$
|
|
1445
|
+
line: id$6(r[key]),
|
|
1446
1446
|
caption: `${r.label} — ${columnCaption}`,
|
|
1447
1447
|
kind: "money",
|
|
1448
1448
|
role: "input",
|
|
@@ -1458,21 +1458,21 @@ const reserveFields$1 = AT1_SCHEDULE_17_RESERVES.flatMap((r) => COLUMNS$1.map(([
|
|
|
1458
1458
|
}));
|
|
1459
1459
|
const TOTALS$2 = [
|
|
1460
1460
|
{
|
|
1461
|
-
line: id$
|
|
1461
|
+
line: id$6("021"),
|
|
1462
1462
|
caption: "Total of the opening balances",
|
|
1463
1463
|
kind: "money",
|
|
1464
1464
|
role: "total",
|
|
1465
1465
|
section: "totals"
|
|
1466
1466
|
},
|
|
1467
1467
|
{
|
|
1468
|
-
line: id$
|
|
1468
|
+
line: id$6("051"),
|
|
1469
1469
|
caption: "Total of the transfers on wind-up or amalgamation",
|
|
1470
1470
|
kind: "money",
|
|
1471
1471
|
role: "total",
|
|
1472
1472
|
section: "totals"
|
|
1473
1473
|
},
|
|
1474
1474
|
{
|
|
1475
|
-
line: id$
|
|
1475
|
+
line: id$6("081"),
|
|
1476
1476
|
caption: "Total of the closing balances",
|
|
1477
1477
|
kind: "money",
|
|
1478
1478
|
role: "total",
|
|
@@ -1484,7 +1484,7 @@ const TOTALS$2 = [
|
|
|
1484
1484
|
note: "This year’s reserves, deducted from Alberta income."
|
|
1485
1485
|
},
|
|
1486
1486
|
{
|
|
1487
|
-
line: id$
|
|
1487
|
+
line: id$6("091"),
|
|
1488
1488
|
caption: "Total of line 021 plus line 051",
|
|
1489
1489
|
kind: "money",
|
|
1490
1490
|
role: "computed",
|
|
@@ -1503,7 +1503,7 @@ const AT1_SCHEDULE_17 = {
|
|
|
1503
1503
|
title: "Alberta continuity of reserves",
|
|
1504
1504
|
scheme: "tra-line-item-id",
|
|
1505
1505
|
taxYears: { from: 2024 },
|
|
1506
|
-
sections: SECTIONS$
|
|
1506
|
+
sections: SECTIONS$27,
|
|
1507
1507
|
fields: [...reserveFields$1, ...TOTALS$2].sort((a, b) => a.line.localeCompare(b.line)),
|
|
1508
1508
|
provenance: {
|
|
1509
1509
|
document: "research/field-maps/at1-schedules-16-17.md",
|
|
@@ -1514,7 +1514,7 @@ const AT1_SCHEDULE_17 = {
|
|
|
1514
1514
|
//#endregion
|
|
1515
1515
|
//#region src/t2/at1/forms/schedule18.ts
|
|
1516
1516
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1517
|
-
const id$
|
|
1517
|
+
const id$5 = (field, occurrence = 1) => `018${field}${String(occurrence).padStart(3, "0")}`;
|
|
1518
1518
|
const AT1_SCHEDULE_18_CATEGORIES = [
|
|
1519
1519
|
{
|
|
1520
1520
|
label: "Shares",
|
|
@@ -1561,7 +1561,7 @@ const AT1_SCHEDULE_18_CATEGORIES = [
|
|
|
1561
1561
|
lossRestricted: true
|
|
1562
1562
|
}
|
|
1563
1563
|
];
|
|
1564
|
-
const SECTIONS$
|
|
1564
|
+
const SECTIONS$26 = [
|
|
1565
1565
|
{
|
|
1566
1566
|
id: "dispositions",
|
|
1567
1567
|
title: "Dispositions by category",
|
|
@@ -1586,7 +1586,7 @@ const COLUMNS = [
|
|
|
1586
1586
|
["gainOrLoss", "D — gain or (loss)"]
|
|
1587
1587
|
];
|
|
1588
1588
|
const categoryFields = AT1_SCHEDULE_18_CATEGORIES.flatMap((c) => COLUMNS.map(([key, columnCaption]) => ({
|
|
1589
|
-
line: id$
|
|
1589
|
+
line: id$5(c[key]),
|
|
1590
1590
|
caption: `${c.label} — ${columnCaption}`,
|
|
1591
1591
|
kind: "money",
|
|
1592
1592
|
role: key === "gainOrLoss" ? "computed" : "input",
|
|
@@ -1809,10 +1809,10 @@ const AT1_SCHEDULE_18 = {
|
|
|
1809
1809
|
title: "Alberta dispositions of capital property",
|
|
1810
1810
|
scheme: "tra-line-item-id",
|
|
1811
1811
|
taxYears: { from: 2024 },
|
|
1812
|
-
sections: SECTIONS$
|
|
1812
|
+
sections: SECTIONS$26,
|
|
1813
1813
|
fields: [...categoryFields, ...REST.map(({ field, ...rest }) => ({
|
|
1814
1814
|
...rest,
|
|
1815
|
-
line: id$
|
|
1815
|
+
line: id$5(field)
|
|
1816
1816
|
}))].sort((a, b) => a.line.localeCompare(b.line)),
|
|
1817
1817
|
provenance: {
|
|
1818
1818
|
document: "research/field-maps/at1-schedule-18-dispositions.md",
|
|
@@ -1825,7 +1825,7 @@ const AT1_SECTION_34_2_GROSS_UP = 2;
|
|
|
1825
1825
|
//#endregion
|
|
1826
1826
|
//#region src/t2/at1/forms/schedule20.ts
|
|
1827
1827
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1828
|
-
const id$
|
|
1828
|
+
const id$4 = (field, occurrence = 1) => `020${field}${String(occurrence).padStart(3, "0")}`;
|
|
1829
1829
|
/** The ten rows every donation continuity runs through, in form order. */
|
|
1830
1830
|
const CONTINUITY_ROWS = [
|
|
1831
1831
|
["opening", "Balance at the end of the previous year"],
|
|
@@ -1870,7 +1870,7 @@ const AT1_SCHEDULE_20_POOLS = [{
|
|
|
1870
1870
|
closing: "078"
|
|
1871
1871
|
}
|
|
1872
1872
|
}];
|
|
1873
|
-
const SECTIONS$
|
|
1873
|
+
const SECTIONS$25 = [
|
|
1874
1874
|
{
|
|
1875
1875
|
id: "charitable",
|
|
1876
1876
|
title: "Area A — Charitable donations",
|
|
@@ -1941,11 +1941,11 @@ const AT1_SCHEDULE_20 = {
|
|
|
1941
1941
|
title: "Alberta charitable donations and gifts",
|
|
1942
1942
|
scheme: "tra-line-item-id",
|
|
1943
1943
|
taxYears: { from: 2024 },
|
|
1944
|
-
sections: SECTIONS$
|
|
1944
|
+
sections: SECTIONS$25,
|
|
1945
1945
|
fields: [...AT1_SCHEDULE_20_POOLS.flatMap((pool) => CONTINUITY_ROWS.map(([key, caption]) => {
|
|
1946
1946
|
const computed = key === "beginning" || key === "subtotal" || key === "available" || key === "closing";
|
|
1947
1947
|
return {
|
|
1948
|
-
line: id$
|
|
1948
|
+
line: id$4(pool.lines[key]),
|
|
1949
1949
|
caption: `${pool.label} — ${caption}`,
|
|
1950
1950
|
kind: "money",
|
|
1951
1951
|
role: computed ? "computed" : "input",
|
|
@@ -1954,7 +1954,7 @@ const AT1_SCHEDULE_20 = {
|
|
|
1954
1954
|
};
|
|
1955
1955
|
})), ...MAXIMUM.map(({ field, ...rest }) => ({
|
|
1956
1956
|
...rest,
|
|
1957
|
-
line: id$
|
|
1957
|
+
line: id$4(field)
|
|
1958
1958
|
}))].sort((a, b) => a.line.localeCompare(b.line)),
|
|
1959
1959
|
provenance: {
|
|
1960
1960
|
document: "research/validation/auratax/2026-08-07-cca-classes/README.md",
|
|
@@ -1974,7 +1974,7 @@ const AT1_DONATION_CARRYFORWARD_YEARS = 5;
|
|
|
1974
1974
|
//#endregion
|
|
1975
1975
|
//#region src/t2/at1/forms/schedule21.ts
|
|
1976
1976
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
1977
|
-
const id$
|
|
1977
|
+
const id$3 = (field, occurrence = 1) => `021${field}${String(occurrence).padStart(3, "0")}`;
|
|
1978
1978
|
const AT1_SCHEDULE_21_POOLS = [
|
|
1979
1979
|
{
|
|
1980
1980
|
key: "non-capital",
|
|
@@ -2046,7 +2046,7 @@ const AT1_SCHEDULE_21_POOLS = [
|
|
|
2046
2046
|
closing: "125"
|
|
2047
2047
|
}
|
|
2048
2048
|
];
|
|
2049
|
-
const SECTIONS$
|
|
2049
|
+
const SECTIONS$24 = [{
|
|
2050
2050
|
id: "current-year",
|
|
2051
2051
|
title: "Part 1 — Calculating the current-year non-capital loss",
|
|
2052
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."
|
|
@@ -2165,7 +2165,7 @@ const continuityFields = AT1_SCHEDULE_21_POOLS.flatMap((pool) => CONTINUITY_ORDE
|
|
|
2165
2165
|
const isClosing = k === "closing";
|
|
2166
2166
|
const isCarryBack = k === "carryBack";
|
|
2167
2167
|
return {
|
|
2168
|
-
line: id$
|
|
2168
|
+
line: id$3(pool[k]),
|
|
2169
2169
|
caption: `${pool.label} — ${CONTINUITY_CAPTIONS[k]}`,
|
|
2170
2170
|
kind: "money",
|
|
2171
2171
|
role: isClosing ? "computed" : "input",
|
|
@@ -2185,10 +2185,10 @@ const AT1_SCHEDULE_21 = {
|
|
|
2185
2185
|
title: "Current-year loss and continuity of losses",
|
|
2186
2186
|
scheme: "tra-line-item-id",
|
|
2187
2187
|
taxYears: { from: 2024 },
|
|
2188
|
-
sections: SECTIONS$
|
|
2188
|
+
sections: SECTIONS$24,
|
|
2189
2189
|
fields: [...PART_1.map(({ field, ...rest }) => ({
|
|
2190
2190
|
...rest,
|
|
2191
|
-
line: id$
|
|
2191
|
+
line: id$3(field)
|
|
2192
2192
|
})), ...continuityFields].sort((a, b) => a.line.localeCompare(b.line)),
|
|
2193
2193
|
provenance: {
|
|
2194
2194
|
document: "research/field-maps/at1-schedules-12-21.md",
|
|
@@ -2199,7 +2199,7 @@ const AT1_SCHEDULE_21 = {
|
|
|
2199
2199
|
//#endregion
|
|
2200
2200
|
//#region src/t2/at1/forms/schedule29.ts
|
|
2201
2201
|
/** `SSSFFFOOO` — schedule, field, occurrence. */
|
|
2202
|
-
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")}`;
|
|
2203
2203
|
const AT1_SCHEDULE_29 = {
|
|
2204
2204
|
id: "AT1SCH29",
|
|
2205
2205
|
program: "AT1",
|
|
@@ -2604,7 +2604,7 @@ const AT1_SCHEDULE_29 = {
|
|
|
2604
2604
|
}
|
|
2605
2605
|
].map(({ field, ...rest }) => ({
|
|
2606
2606
|
...rest,
|
|
2607
|
-
line: id(field)
|
|
2607
|
+
line: id$2(field)
|
|
2608
2608
|
})).sort((a, b) => a.line.localeCompare(b.line)),
|
|
2609
2609
|
provenance: {
|
|
2610
2610
|
document: "research/sources/tra-forms/pdf/AT1SCH29-innovation-employment-grant-TRA14637.pdf",
|
|
@@ -2624,7 +2624,7 @@ const AT1_IEG_PRIOR_YEARS = 2;
|
|
|
2624
2624
|
const AT1_IEG_JACKET_LINE = "000129001";
|
|
2625
2625
|
//#endregion
|
|
2626
2626
|
//#region src/t2/co17/forms/co17.ts
|
|
2627
|
-
const SECTIONS$
|
|
2627
|
+
const SECTIONS$22 = [
|
|
2628
2628
|
{
|
|
2629
2629
|
id: "identity",
|
|
2630
2630
|
title: "1 — Renseignements sur l'identité de la société"
|
|
@@ -2660,7 +2660,7 @@ const CO17_RETURN = {
|
|
|
2660
2660
|
title: "CO-17 — Déclaration de revenus des sociétés",
|
|
2661
2661
|
scheme: "rq-box",
|
|
2662
2662
|
taxYears: { from: 2025 },
|
|
2663
|
-
sections: SECTIONS$
|
|
2663
|
+
sections: SECTIONS$22,
|
|
2664
2664
|
fields: [
|
|
2665
2665
|
F$5("01a", "Numéro d'entreprise du Québec (NEQ)", "identity", { kind: "text" }),
|
|
2666
2666
|
F$5("01b", "Numéro d'identification", "identity", { kind: "text" }),
|
|
@@ -2722,7 +2722,7 @@ const CO17_QUEBEC_PROPORTION_BOX = "421";
|
|
|
2722
2722
|
const CO17_TAX_PAYABLE_BOX = "425";
|
|
2723
2723
|
//#endregion
|
|
2724
2724
|
//#region src/t2/forms/jacket.ts
|
|
2725
|
-
const SECTIONS$
|
|
2725
|
+
const SECTIONS$21 = [
|
|
2726
2726
|
{
|
|
2727
2727
|
id: "taxable-income",
|
|
2728
2728
|
title: "Taxable income",
|
|
@@ -2778,7 +2778,7 @@ const T2_JACKET = {
|
|
|
2778
2778
|
title: "T2 Corporation Income Tax Return",
|
|
2779
2779
|
scheme: "cra-line",
|
|
2780
2780
|
taxYears: { from: 2025 },
|
|
2781
|
-
sections: SECTIONS$
|
|
2781
|
+
sections: SECTIONS$21,
|
|
2782
2782
|
fields: [
|
|
2783
2783
|
F$4("300", "Net income or (loss) for income tax purposes", "taxable-income", {
|
|
2784
2784
|
role: "carried-in",
|
|
@@ -3714,7 +3714,7 @@ new Map(SCHEDULE_1_CAPTIONS.map((c) => [c.line, c]));
|
|
|
3714
3714
|
* Captions come from `./generated/schedule1.captions.ts`, which is produced from
|
|
3715
3715
|
* the CRA document. This module adds only what the paper does not say.
|
|
3716
3716
|
*/
|
|
3717
|
-
const SECTIONS$
|
|
3717
|
+
const SECTIONS$20 = [
|
|
3718
3718
|
{
|
|
3719
3719
|
id: "add-1",
|
|
3720
3720
|
title: "Add",
|
|
@@ -3843,7 +3843,7 @@ const T2_SCHEDULE_1 = {
|
|
|
3843
3843
|
title: "Net income (loss) for income tax purposes",
|
|
3844
3844
|
scheme: "cra-line",
|
|
3845
3845
|
taxYears: { from: 2023 },
|
|
3846
|
-
sections: SECTIONS$
|
|
3846
|
+
sections: SECTIONS$20,
|
|
3847
3847
|
fields: SCHEDULE_1_CAPTIONS.map((c) => {
|
|
3848
3848
|
const section = sectionFor(Number(c.line));
|
|
3849
3849
|
const side = section.startsWith("add") ? "add" : "deduct";
|
|
@@ -3883,7 +3883,7 @@ const SCHEDULE_1_LINE_BY_NUMBER = indexByLine(T2_SCHEDULE_1);
|
|
|
3883
3883
|
const SCHEDULE_1_LINES = T2_SCHEDULE_1.fields;
|
|
3884
3884
|
//#endregion
|
|
3885
3885
|
//#region src/t2/forms/schedule2.ts
|
|
3886
|
-
const SECTIONS$
|
|
3886
|
+
const SECTIONS$19 = [
|
|
3887
3887
|
{
|
|
3888
3888
|
id: "charitable",
|
|
3889
3889
|
title: "Part 2 — Charitable donations",
|
|
@@ -3915,7 +3915,7 @@ const T2_SCHEDULE_2 = {
|
|
|
3915
3915
|
title: "Charitable donations and gifts",
|
|
3916
3916
|
scheme: "cra-line",
|
|
3917
3917
|
taxYears: { from: 2023 },
|
|
3918
|
-
sections: SECTIONS$
|
|
3918
|
+
sections: SECTIONS$19,
|
|
3919
3919
|
fields: [
|
|
3920
3920
|
F$3("239", "Charitable donations expired after five tax years", "charitable"),
|
|
3921
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." }),
|
|
@@ -3949,7 +3949,7 @@ const SCHEDULE_2_CARRYFORWARD_YEARS = {
|
|
|
3949
3949
|
};
|
|
3950
3950
|
//#endregion
|
|
3951
3951
|
//#region src/t2/forms/schedule3.ts
|
|
3952
|
-
const SECTIONS$
|
|
3952
|
+
const SECTIONS$18 = [{
|
|
3953
3953
|
id: "received",
|
|
3954
3954
|
title: "Part 1 — Dividends received in the tax year",
|
|
3955
3955
|
description: "One row per payer. Columns B, C, D, I and J are completed only when the payer is connected."
|
|
@@ -3973,7 +3973,7 @@ const T2_SCHEDULE_3 = {
|
|
|
3973
3973
|
title: "Dividends received, taxable dividends paid, and Part IV tax calculation",
|
|
3974
3974
|
scheme: "cra-line",
|
|
3975
3975
|
taxYears: { from: 2023 },
|
|
3976
|
-
sections: SECTIONS$
|
|
3976
|
+
sections: SECTIONS$18,
|
|
3977
3977
|
fields: [
|
|
3978
3978
|
F$2("200", "Name of payer corporation from which the corporation received the dividend", "received", { kind: "text" }),
|
|
3979
3979
|
F$2("205", "Enter 1 if the payer corporation is connected", "received", {
|
|
@@ -4953,7 +4953,7 @@ const SCHEDULE_6_GRIDS = [
|
|
|
4953
4953
|
]
|
|
4954
4954
|
}
|
|
4955
4955
|
];
|
|
4956
|
-
const SECTIONS$
|
|
4956
|
+
const SECTIONS$15 = [
|
|
4957
4957
|
{
|
|
4958
4958
|
id: "designation",
|
|
4959
4959
|
title: "Designation under paragraph 111(4)(e)"
|
|
@@ -5085,7 +5085,7 @@ const T2_SCHEDULE_6 = {
|
|
|
5085
5085
|
title: "Summary of dispositions of capital property",
|
|
5086
5086
|
scheme: "cra-line",
|
|
5087
5087
|
taxYears: { from: 2023 },
|
|
5088
|
-
sections: SECTIONS$
|
|
5088
|
+
sections: SECTIONS$15,
|
|
5089
5089
|
fields: [...gridFields, ...SUMMARY].sort((a, b) => Number(a.line) - Number(b.line)),
|
|
5090
5090
|
provenance: {
|
|
5091
5091
|
document: "research/sources/cra-forms/T2SCH06-capital-gains.pdf",
|
|
@@ -5501,7 +5501,7 @@ const SCHEDULE_8_COLUMNS = [
|
|
|
5501
5501
|
caption: "UCC at the end of the year"
|
|
5502
5502
|
}
|
|
5503
5503
|
];
|
|
5504
|
-
const SECTIONS$
|
|
5504
|
+
const SECTIONS$13 = [{
|
|
5505
5505
|
id: "cca-grid",
|
|
5506
5506
|
title: "Capital cost allowance by class",
|
|
5507
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."
|
|
@@ -5533,7 +5533,7 @@ const T2_SCHEDULE_8 = {
|
|
|
5533
5533
|
title: "Capital cost allowance",
|
|
5534
5534
|
scheme: "cra-line",
|
|
5535
5535
|
taxYears: { from: 2026 },
|
|
5536
|
-
sections: SECTIONS$
|
|
5536
|
+
sections: SECTIONS$13,
|
|
5537
5537
|
fields: SCHEDULE_8_COLUMNS.filter((c) => c.line).map((c) => {
|
|
5538
5538
|
const dest = DESTINATIONS[c.line];
|
|
5539
5539
|
return {
|
|
@@ -5597,7 +5597,7 @@ const SCHEDULE_13_RESERVE_ROWS = [
|
|
|
5597
5597
|
closing: "240"
|
|
5598
5598
|
}
|
|
5599
5599
|
];
|
|
5600
|
-
const SECTIONS$
|
|
5600
|
+
const SECTIONS$12 = [{
|
|
5601
5601
|
id: "capital-gains",
|
|
5602
5602
|
title: "Part 1 — Capital gains reserves",
|
|
5603
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."
|
|
@@ -5736,7 +5736,7 @@ const T2_SCHEDULE_13 = {
|
|
|
5736
5736
|
title: "Continuity of reserves",
|
|
5737
5737
|
scheme: "cra-line",
|
|
5738
5738
|
taxYears: { from: 2011 },
|
|
5739
|
-
sections: SECTIONS$
|
|
5739
|
+
sections: SECTIONS$12,
|
|
5740
5740
|
fields: [
|
|
5741
5741
|
...COLUMN_HEADS,
|
|
5742
5742
|
...reserveFields,
|
|
@@ -5750,7 +5750,7 @@ const T2_SCHEDULE_13 = {
|
|
|
5750
5750
|
};
|
|
5751
5751
|
//#endregion
|
|
5752
5752
|
//#region src/t2/forms/schedule21.ts
|
|
5753
|
-
const SECTIONS$
|
|
5753
|
+
const SECTIONS$11 = [
|
|
5754
5754
|
{
|
|
5755
5755
|
id: "non-business",
|
|
5756
5756
|
title: "Part 1 — Federal foreign non-business income tax credit",
|
|
@@ -5781,7 +5781,7 @@ const T2_SCHEDULE_21 = {
|
|
|
5781
5781
|
title: "Federal and provincial or territorial foreign income tax credits and federal logging tax credit",
|
|
5782
5782
|
scheme: "cra-line",
|
|
5783
5783
|
taxYears: { from: 2023 },
|
|
5784
|
-
sections: SECTIONS$
|
|
5784
|
+
sections: SECTIONS$11,
|
|
5785
5785
|
fields: [
|
|
5786
5786
|
F$1("100", "Country of source of foreign non-business income", "non-business", { kind: "text" }),
|
|
5787
5787
|
F$1("110", "Net foreign non-business income earned in the year", "non-business"),
|
|
@@ -5937,7 +5937,7 @@ const T2_SCHEDULE_23 = {
|
|
|
5937
5937
|
const SCHEDULE_23_GROUP_BUSINESS_LIMIT = 5e5;
|
|
5938
5938
|
//#endregion
|
|
5939
5939
|
//#region src/t2/forms/schedule24.ts
|
|
5940
|
-
const SECTIONS$
|
|
5940
|
+
const SECTIONS$9 = [
|
|
5941
5941
|
{
|
|
5942
5942
|
id: "operation",
|
|
5943
5943
|
title: "Part 1 — Type of operation",
|
|
@@ -5968,7 +5968,7 @@ const T2_SCHEDULE_24 = {
|
|
|
5968
5968
|
title: "First-time filer after incorporation, amalgamation, or wind-up of a subsidiary",
|
|
5969
5969
|
scheme: "cra-line",
|
|
5970
5970
|
taxYears: { from: 2011 },
|
|
5971
|
-
sections: SECTIONS$
|
|
5971
|
+
sections: SECTIONS$9,
|
|
5972
5972
|
fields: [
|
|
5973
5973
|
F("100", "Type of operation that applies to the corporation", "operation", {
|
|
5974
5974
|
kind: "code",
|
|
@@ -8162,6 +8162,208 @@ const T2_SCHEDULE_130 = {
|
|
|
8162
8162
|
}
|
|
8163
8163
|
};
|
|
8164
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
|
|
8165
8367
|
//#region src/forms/registry.ts
|
|
8166
8368
|
/**
|
|
8167
8369
|
* THE FORM REGISTRY — every form definition, and the links between them.
|
|
@@ -8205,8 +8407,74 @@ const FORMS = [
|
|
|
8205
8407
|
T2_SCHEDULE_53,
|
|
8206
8408
|
T2_SCHEDULE_55,
|
|
8207
8409
|
AT1_JACKET,
|
|
8410
|
+
AT1_SCHEDULE_3,
|
|
8208
8411
|
AT1_SCHEDULE_12,
|
|
8209
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
|
+
},
|
|
8210
8478
|
AT1_SCHEDULE_16,
|
|
8211
8479
|
AT1_SCHEDULE_17,
|
|
8212
8480
|
AT1_SCHEDULE_18,
|