@classytic/ca-tax 0.0.13 → 0.0.14
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 +74 -0
- package/dist/forms.mjs +129 -31
- package/dist/index.d.mts +29 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.14] - 2026-09-01
|
|
4
|
+
|
|
5
|
+
### Added — `footnotes` on `FormDefinition`
|
|
6
|
+
|
|
7
|
+
`FormDefinition` gains an optional `footnotes?: readonly string[]` — asterisked
|
|
8
|
+
rules printed on the form itself (loss-expiry conditions, emission rules, carry
|
|
9
|
+
eligibility gates). Populated for the AT1 jacket and every AT1 schedule this
|
|
10
|
+
package models, transcribed from the matching TRA PDF's own printed instructions.
|
|
11
|
+
|
|
12
|
+
### Fixed — Schedule 21 carry-forward link fires on the wrong line
|
|
13
|
+
|
|
14
|
+
`continuityFields` emitted the `to: { form: 'AT1SCH12', line: '…' }` link on the
|
|
15
|
+
**closing balance** line (`k === 'closing'`). The form itself prints "Carry
|
|
16
|
+
forward to Schedule 12, line …" directly beside the **applied-against-income**
|
|
17
|
+
line — the closing balance is this schedule's own running total and never carries
|
|
18
|
+
anywhere. The check is now `k === 'appliedAgainstIncome'`.
|
|
19
|
+
|
|
20
|
+
The capital pool gains a `toSchedule12Note` reminding that Schedule 21 tracks
|
|
21
|
+
capital losses at their full amount while Schedule 12 wants the allowable
|
|
22
|
+
(inclusion-rate-scaled) portion — carrying the raw figure over-deducts by roughly
|
|
23
|
+
two.
|
|
24
|
+
|
|
25
|
+
### Fixed — restricted-farm pool missing its applied-against-income line
|
|
26
|
+
|
|
27
|
+
`restricted-farm` pool in `AT1_SCHEDULE_21_POOLS` had no `appliedAgainstIncome`
|
|
28
|
+
entry. Confirmed on the live form (`AT1SCH21-loss-continuity-TRA11741.pdf` page 2):
|
|
29
|
+
line 099 ("Amount applied against farming income") belongs to the **restricted**
|
|
30
|
+
farm pool, not the farm pool. An earlier field-map draft grouped it under "Farm",
|
|
31
|
+
which read ambiguously; the form settles it.
|
|
32
|
+
|
|
33
|
+
### Fixed — listed personal property carry-forward is conditional on Schedule 18
|
|
34
|
+
|
|
35
|
+
Listed personal property has no fixed Schedule 12 destination: the form makes it
|
|
36
|
+
conditional on whether Schedule 18 exists. The pool now carries
|
|
37
|
+
`appliedAgainstIncomeNote` instead of a `toSchedule12` — the note instructs the
|
|
38
|
+
preparer to take the amount from Schedule 18 line 060 when that schedule exists,
|
|
39
|
+
or from federal Schedule 6 line 655 when it does not.
|
|
40
|
+
|
|
41
|
+
### Fixed — `AlbertaLossPool.CONTINUITY_CAPTIONS` type updated
|
|
42
|
+
|
|
43
|
+
`CONTINUITY_CAPTIONS` was typed as a `Record` keyed on `AlbertaLossPool` minus
|
|
44
|
+
the three metadata fields. The two new fields (`toSchedule12Note`,
|
|
45
|
+
`appliedAgainstIncomeNote`) are also metadata — they are now omitted from the
|
|
46
|
+
key type so the record stays exhaustive over the actual row labels.
|
|
47
|
+
|
|
48
|
+
### Added — Schedule 3 carry link + PDF provenance
|
|
49
|
+
|
|
50
|
+
Schedule 3 line 601 (the CITC credit) gains a `to` link → AT1 line 076, as
|
|
51
|
+
printed on the form ("Enter this amount on AT1 page 2, line 076"). Provenance
|
|
52
|
+
updated from the spec text to the actual PDF (`AT1SCH03-TRA11725.pdf`).
|
|
53
|
+
|
|
54
|
+
### Added — Schedule 4 total/room/credit lines + PDF provenance
|
|
55
|
+
|
|
56
|
+
Schedule 4 gains a `total` section with three new fields:
|
|
57
|
+
|
|
58
|
+
- **014** — "Total Allowable Credits" (sum of line 012 column H)
|
|
59
|
+
- **018** — Room: AT1 jacket line 068 minus (lines 070 + 071) — distinct from
|
|
60
|
+
Schedule 3's room at 602, which subtracts 070 + 072 instead; both confirmed
|
|
61
|
+
by reading the printed forms directly
|
|
62
|
+
- **020** — Alberta Foreign Investment Income Tax Credit (lesser of 014 and 018),
|
|
63
|
+
carrying to AT1 line 072 via `to` link
|
|
64
|
+
|
|
65
|
+
Provenance updated to the actual PDF (`AT1SCH04-TRA11728.pdf`).
|
|
66
|
+
|
|
67
|
+
### Added — Schedule 20 carry links
|
|
68
|
+
|
|
69
|
+
Charitable donations and gifts pools gain `toSchedule12` entries, and the
|
|
70
|
+
computed totals carry to Schedule 12 via `to` links, confirmed against
|
|
71
|
+
`AT1SCH20-TRA11740.pdf`.
|
|
72
|
+
|
|
73
|
+
### Added — Schedule 29 carry link
|
|
74
|
+
|
|
75
|
+
Line 132 gains a `to` link to AT1 page 2, line 129, as printed on the form.
|
|
76
|
+
|
|
3
77
|
## [0.0.13] - 2026-08-31
|
|
4
78
|
|
|
5
79
|
### Added — 10 new AT1 schedule form definitions
|
package/dist/forms.mjs
CHANGED
|
@@ -716,7 +716,12 @@ const AT1_JACKET = {
|
|
|
716
716
|
document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
|
|
717
717
|
retrieved: "2026-08-14",
|
|
718
718
|
revision: "AT1 Net File specification 2025.2, Chapter 3 cross-reference tables"
|
|
719
|
-
}
|
|
719
|
+
},
|
|
720
|
+
footnotes: [
|
|
721
|
+
"The AT1 and applicable schedules must be received by Tax and Revenue Administration (TRA) within 6 months of the corporation's taxation year end. If the corporation is not exempt from filing, it must file electronically using Net File unless it is an insurance corporation, a non-resident corporation, or reports in functional currency.",
|
|
722
|
+
"Taxable income: the calculation for federal purposes can differ from the calculation for Alberta purposes if the corporation chooses different discretionary deduction amounts (e.g. different application of losses, CCA, charitable donations).",
|
|
723
|
+
"If line 060 and/or 061 is \"Yes\", Schedule 12 and supporting schedules must be completed to reconcile federal and Alberta taxable income. If both are \"No\", line 062 must equal federal T2 lines 360-370 (or federal Schedule 4 lines 110+310 for a loss)."
|
|
724
|
+
]
|
|
720
725
|
};
|
|
721
726
|
/** 000080001 — Alberta tax payable, before credits. */
|
|
722
727
|
const AT1_TAX_PAYABLE_LINE = id$20("080");
|
|
@@ -868,7 +873,13 @@ const AT1_SCHEDULE_1 = {
|
|
|
868
873
|
document: "research/sources/tra-forms/pdf/AT1SCH01-small-business-deduction-TRA11723.pdf",
|
|
869
874
|
retrieved: "2026-08-30",
|
|
870
875
|
revision: "TRA11723 (AT2) Rev. 2023-04 — lines 001-013 and 041/043/045 only, see this module's doc comment"
|
|
871
|
-
}
|
|
876
|
+
},
|
|
877
|
+
footnotes: [
|
|
878
|
+
"For corporations which were Canadian-controlled private corporations throughout the taxation year and which had income from active businesses carried on in Canada.",
|
|
879
|
+
"If the corporation has income (loss) from a partnership with a fiscal period ending after March 31, 2001, the income from active businesses must be recalculated for Alberta purposes by increasing the partnership's business limit for the period straddling that date — see the Guide for the full calculation.",
|
|
880
|
+
"Area A: the percentage allocated in column 044 must be the same percentage used to determine the business limit on federal Schedule 23 for all taxation years ending after December 4, 2002. The total of all percentages cannot exceed 100%.",
|
|
881
|
+
"Area A: the amount in column 045 must be rounded to the nearest dollar, rounding up at $.50 and over."
|
|
882
|
+
]
|
|
872
883
|
};
|
|
873
884
|
//#endregion
|
|
874
885
|
//#region src/t2/at1/forms/schedule2.ts
|
|
@@ -947,7 +958,12 @@ const AT1_SCHEDULE_2 = {
|
|
|
947
958
|
document: "research/sources/tra-forms/pdf/AT1SCH02-income-allocation-factor-TRA11724.pdf",
|
|
948
959
|
retrieved: "2026-08-30",
|
|
949
960
|
revision: "TRA11724 (AT271) Rev. 2023-10 — Area A only, see this module's doc comment"
|
|
950
|
-
}
|
|
961
|
+
},
|
|
962
|
+
footnotes: [
|
|
963
|
+
"For corporations with taxable income that is in part allocable to permanent establishments outside Alberta.",
|
|
964
|
+
"Non-resident corporations (ITA Regulation 413): salaries and wages paid in all jurisdictions does not include amounts paid to employees of a permanent establishment outside Canada; gross revenue in all jurisdictions does not include revenue reasonably attributable to a permanent establishment outside Canada.",
|
|
965
|
+
"If either amount B or D is nil, do not multiply by 1/2."
|
|
966
|
+
]
|
|
951
967
|
};
|
|
952
968
|
//#endregion
|
|
953
969
|
//#region src/t2/at1/forms/schedule10.ts
|
|
@@ -1175,7 +1191,13 @@ const AT1_SCHEDULE_10 = {
|
|
|
1175
1191
|
document: "research/sources/tra-forms/pdf/AT1SCH10-loss-carryback-TRA11731.pdf",
|
|
1176
1192
|
retrieved: "2026-08-30",
|
|
1177
1193
|
revision: "TRA11731 (AT293) Rev. 2025-12 — non-capital, farm, other-loss and capital; see this module's doc comment"
|
|
1178
|
-
}
|
|
1194
|
+
},
|
|
1195
|
+
footnotes: [
|
|
1196
|
+
"The application of losses is at the corporation's discretion — the application of losses for federal purposes does not apply for Alberta purposes.",
|
|
1197
|
+
"A Loss Carry-Back Application must be filed even if the corporation is exempt from filing its AT1.",
|
|
1198
|
+
"Inclusion rate for the capital loss column: 3/4 for dispositions before February 28, 2000; 2/3 for dispositions after February 27, 2000 and before October 18, 2000; 1/2 for dispositions after October 17, 2000. Where a taxation year straddles more than one period, use the effective rate computed on federal Schedule 6 or the Schedule 18 supporting documentation.",
|
|
1199
|
+
"The amount of loss claimed for Alberta purposes may differ from the amount claimed for federal purposes. Limitations on deductibility under the federal Act apply for Alberta purposes, except that an amount of non-capital or farm loss used to reduce the federal Part IV tax base does not reduce the loss balance available for Alberta purposes."
|
|
1200
|
+
]
|
|
1179
1201
|
};
|
|
1180
1202
|
//#endregion
|
|
1181
1203
|
//#region src/t2/at1/forms/schedule12.ts
|
|
@@ -1664,7 +1686,8 @@ const AT1_SCHEDULE_13 = {
|
|
|
1664
1686
|
document: "research/field-maps/at1-schedule-13-cca.md",
|
|
1665
1687
|
retrieved: "2026-08-07",
|
|
1666
1688
|
revision: "captured from the live TRA-certified form"
|
|
1667
|
-
}
|
|
1689
|
+
},
|
|
1690
|
+
footnotes: ["This schedule is required if the opening UCC or the CCA claimed for Alberta purposes for any class of assets differs from that for federal purposes.", "All federal notes listed on the T2 Schedule 8 — Capital Cost Allowance — also apply for Alberta purposes."]
|
|
1668
1691
|
};
|
|
1669
1692
|
//#endregion
|
|
1670
1693
|
//#region src/t2/at1/forms/schedule16.ts
|
|
@@ -1953,7 +1976,8 @@ const AT1_SCHEDULE_17 = {
|
|
|
1953
1976
|
document: "research/field-maps/at1-schedules-16-17.md",
|
|
1954
1977
|
retrieved: "2026-08-08",
|
|
1955
1978
|
revision: "verified line by line against the live TRA-certified form"
|
|
1956
|
-
}
|
|
1979
|
+
},
|
|
1980
|
+
footnotes: ["This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes."]
|
|
1957
1981
|
};
|
|
1958
1982
|
//#endregion
|
|
1959
1983
|
//#region src/t2/at1/forms/schedule18.ts
|
|
@@ -2302,7 +2326,8 @@ const AT1_SCHEDULE_20_POOLS = [{
|
|
|
2302
2326
|
available: "014",
|
|
2303
2327
|
applied: "016",
|
|
2304
2328
|
closing: "018"
|
|
2305
|
-
}
|
|
2329
|
+
},
|
|
2330
|
+
toSchedule12: "056"
|
|
2306
2331
|
}, {
|
|
2307
2332
|
key: "gifts",
|
|
2308
2333
|
label: "Gifts to Canada or a province, cultural property and ecologically sensitive land",
|
|
@@ -2317,7 +2342,8 @@ const AT1_SCHEDULE_20_POOLS = [{
|
|
|
2317
2342
|
available: "074",
|
|
2318
2343
|
applied: "076",
|
|
2319
2344
|
closing: "078"
|
|
2320
|
-
}
|
|
2345
|
+
},
|
|
2346
|
+
toSchedule12: "058"
|
|
2321
2347
|
}];
|
|
2322
2348
|
const SECTIONS$32 = [
|
|
2323
2349
|
{
|
|
@@ -2489,7 +2515,11 @@ const AT1_SCHEDULE_20 = {
|
|
|
2489
2515
|
kind: "money",
|
|
2490
2516
|
role: computed ? "computed" : "input",
|
|
2491
2517
|
section: pool.key,
|
|
2492
|
-
...NOTES$1[key] ? { note: NOTES$1[key] } : {}
|
|
2518
|
+
...NOTES$1[key] ? { note: NOTES$1[key] } : {},
|
|
2519
|
+
...key === "applied" ? { to: {
|
|
2520
|
+
form: "AT1SCH12",
|
|
2521
|
+
line: `012${pool.toSchedule12}001`
|
|
2522
|
+
} } : {}
|
|
2493
2523
|
};
|
|
2494
2524
|
})), ...MAXIMUM.map(({ field, ...rest }) => ({
|
|
2495
2525
|
...rest,
|
|
@@ -2499,7 +2529,12 @@ const AT1_SCHEDULE_20 = {
|
|
|
2499
2529
|
document: "research/validation/auratax/2026-08-07-cca-classes/README.md",
|
|
2500
2530
|
retrieved: "2026-08-08",
|
|
2501
2531
|
revision: "line numbers verified against the live TRA-certified form"
|
|
2502
|
-
}
|
|
2532
|
+
},
|
|
2533
|
+
footnotes: [
|
|
2534
|
+
"This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes.",
|
|
2535
|
+
"If the corporation is reporting nil net income or a loss for the year, donations cannot be claimed.",
|
|
2536
|
+
"If the corporation elects to differ its Alberta claim for the additional deduction for gifts of medicine (federal T2 Schedule 2, line 660), enter the Alberta amount on Schedule 12, line 40, the federal amount on Schedule 12, line 41, and provide the explanation of the difference on Schedule 12, line 48."
|
|
2537
|
+
]
|
|
2503
2538
|
};
|
|
2504
2539
|
/**
|
|
2505
2540
|
* Donations carry forward five years.
|
|
@@ -2543,7 +2578,8 @@ const AT1_SCHEDULE_21_POOLS = [
|
|
|
2543
2578
|
otherAdjustments: "065",
|
|
2544
2579
|
carryBack: "067",
|
|
2545
2580
|
closing: "069",
|
|
2546
|
-
toSchedule12: "066"
|
|
2581
|
+
toSchedule12: "066",
|
|
2582
|
+
toSchedule12Note: "Carry forward this amount × the inclusion rate. Schedule 21 tracks capital losses at their full amount; Schedule 12 wants the allowable portion — carrying the raw figure over-deducts by roughly two."
|
|
2547
2583
|
},
|
|
2548
2584
|
{
|
|
2549
2585
|
key: "farm",
|
|
@@ -2568,6 +2604,7 @@ const AT1_SCHEDULE_21_POOLS = [
|
|
|
2568
2604
|
opening: "093",
|
|
2569
2605
|
windUpTransfer: "095",
|
|
2570
2606
|
currentYearLoss: "097",
|
|
2607
|
+
appliedAgainstIncome: "099",
|
|
2571
2608
|
section80Adjustment: "101",
|
|
2572
2609
|
otherAdjustments: "103",
|
|
2573
2610
|
carryBack: "105",
|
|
@@ -2584,7 +2621,8 @@ const AT1_SCHEDULE_21_POOLS = [
|
|
|
2584
2621
|
appliedAgainstIncome: "119",
|
|
2585
2622
|
otherAdjustments: "121",
|
|
2586
2623
|
carryBack: "123",
|
|
2587
|
-
closing: "125"
|
|
2624
|
+
closing: "125",
|
|
2625
|
+
appliedAgainstIncomeNote: "If Schedule 18 exists, carry forward the amount from Schedule 18 line 060. Otherwise, carry forward the amount from federal Schedule 6 line 655."
|
|
2588
2626
|
}
|
|
2589
2627
|
];
|
|
2590
2628
|
const SECTIONS$31 = [{
|
|
@@ -2654,7 +2692,7 @@ const PART_1 = [
|
|
|
2654
2692
|
},
|
|
2655
2693
|
{
|
|
2656
2694
|
field: "013",
|
|
2657
|
-
caption: "Subtotal of lines
|
|
2695
|
+
caption: "Subtotal of lines 002 to 012",
|
|
2658
2696
|
kind: "money",
|
|
2659
2697
|
role: "total",
|
|
2660
2698
|
section: "current-year"
|
|
@@ -2706,17 +2744,19 @@ const CONTINUITY_ORDER = Object.keys(CONTINUITY_CAPTIONS);
|
|
|
2706
2744
|
const continuityFields = AT1_SCHEDULE_21_POOLS.flatMap((pool) => CONTINUITY_ORDER.filter((k) => pool[k]).map((k) => {
|
|
2707
2745
|
const isClosing = k === "closing";
|
|
2708
2746
|
const isCarryBack = k === "carryBack";
|
|
2747
|
+
const isAppliedLine = k === "appliedAgainstIncome";
|
|
2709
2748
|
return {
|
|
2710
2749
|
line: id$10(pool[k]),
|
|
2711
2750
|
caption: `${pool.label} — ${CONTINUITY_CAPTIONS[k]}`,
|
|
2712
2751
|
kind: "money",
|
|
2713
2752
|
role: isClosing ? "computed" : "input",
|
|
2714
2753
|
section: "continuity",
|
|
2715
|
-
...
|
|
2754
|
+
...isAppliedLine && pool.toSchedule12 ? { to: {
|
|
2716
2755
|
form: "AT1SCH12",
|
|
2717
2756
|
line: `012${pool.toSchedule12}001`,
|
|
2718
|
-
note:
|
|
2757
|
+
note: pool.toSchedule12Note ?? "Printed on the form directly beside this line."
|
|
2719
2758
|
} } : {},
|
|
2759
|
+
...isAppliedLine && pool.appliedAgainstIncomeNote ? { note: pool.appliedAgainstIncomeNote } : {},
|
|
2720
2760
|
...isCarryBack ? { note: "A carry-back also requires Schedule 10 to be completed." } : {}
|
|
2721
2761
|
};
|
|
2722
2762
|
}));
|
|
@@ -2736,7 +2776,14 @@ const AT1_SCHEDULE_21 = {
|
|
|
2736
2776
|
document: "research/field-maps/at1-schedules-12-21.md",
|
|
2737
2777
|
retrieved: "2026-08-08",
|
|
2738
2778
|
revision: "verified against the live TRA-certified form"
|
|
2739
|
-
}
|
|
2779
|
+
},
|
|
2780
|
+
footnotes: [
|
|
2781
|
+
"This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes.",
|
|
2782
|
+
"The corporation may choose whether or not to deduct an available loss from income in a taxation year. It can deduct losses in any order. However, for each type of loss, ensure that the oldest loss is deducted first.",
|
|
2783
|
+
"A non-capital loss expires after 7 taxation years if it arose in a taxation year ending before March 23, 2004, or after 10 taxation years if it arose in a taxation year ending after March 22, 2004 and before 2006, or after 20 years if it arose in a taxation year after 2005.",
|
|
2784
|
+
"An allowable business investment loss becomes a net capital loss after 7 taxation years if it arose in a taxation year ending before March 23, 2004, or after 10 taxation years if it arose in a taxation year ending after March 22, 2004.",
|
|
2785
|
+
"A farm loss or restricted farm loss expires after 10 tax years if it arose in a tax year ending before 2006, and after 20 tax years if it arose in a tax year ending after 2005."
|
|
2786
|
+
]
|
|
2740
2787
|
};
|
|
2741
2788
|
//#endregion
|
|
2742
2789
|
//#region src/t2/at1/forms/schedule29.ts
|
|
@@ -2958,7 +3005,12 @@ const AT1_SCHEDULE_29 = {
|
|
|
2958
3005
|
kind: "money",
|
|
2959
3006
|
role: "total",
|
|
2960
3007
|
section: "grant",
|
|
2961
|
-
note: "Line 130 minus line 132.
|
|
3008
|
+
note: "Line 130 minus line 132.",
|
|
3009
|
+
to: {
|
|
3010
|
+
form: "AT1",
|
|
3011
|
+
line: "000129001",
|
|
3012
|
+
note: "Carried to AT1 page 2, line 129."
|
|
3013
|
+
}
|
|
2962
3014
|
},
|
|
2963
3015
|
{
|
|
2964
3016
|
field: "200",
|
|
@@ -3152,7 +3204,8 @@ const AT1_SCHEDULE_29 = {
|
|
|
3152
3204
|
document: "research/sources/tra-forms/pdf/AT1SCH29-innovation-employment-grant-TRA14637.pdf",
|
|
3153
3205
|
retrieved: "2026-08-28",
|
|
3154
3206
|
revision: "TRA14637 (AT29) Rev. 2026-06. Page 1/2 rendered at 250dpi and cross-checked against AuraTax’s live rendering of the same schedule (research/validation/auratax/2026-08-25-at1-schedule1-royalty/); replaced a prior definition that ground the $4M limit by taxable capital instead of applying the reduction factor to the credit — see schedule29-ieg.ts. Page 2’s limit fields (100/102/104/108/114/116/118/125) and page 3 (the Agreement Among Associated Corporations, 200-325) were added 2026-08-28 by re-rendering the live form at 300dpi — this closed two gaps at once: `ui-line-citations` had no form definition to check the new UI’s 245/265 citations against, and a prior version of `schedule29Values` filed the member’s free-text NAME at line 220, which the form defines as the Federal Business Number — a wrong-box filing the citation check could not have caught on its own, since 220 was not cited by any UI label."
|
|
3155
|
-
}
|
|
3207
|
+
},
|
|
3208
|
+
footnotes: ["Schedule 29 must be received by Alberta Treasury Board and Finance, Tax and Revenue Administration within 15 months after the day on or before which the corporation is required to file its AT1 for the year."]
|
|
3156
3209
|
};
|
|
3157
3210
|
/** Eight per cent, on the full capped eligible expenditures. */
|
|
3158
3211
|
const AT1_IEG_BASE_RATE = .08;
|
|
@@ -8896,17 +8949,23 @@ const AT1_SCHEDULE_3 = {
|
|
|
8896
8949
|
kind: "money",
|
|
8897
8950
|
role: "computed",
|
|
8898
8951
|
section: "mad",
|
|
8899
|
-
note: "Lesser of line 600 and the room at line 602 (AT1 jacket line 068 minus lines 070+071+072+074); floored at nil."
|
|
8952
|
+
note: "Lesser of line 600 and the room at line 602 (AT1 jacket line 068 minus lines 070+071+072+074); floored at nil.",
|
|
8953
|
+
to: {
|
|
8954
|
+
form: "AT1",
|
|
8955
|
+
line: "000076001",
|
|
8956
|
+
note: "Printed on the form: \"Enter this amount on AT1 page 2, line 076.\""
|
|
8957
|
+
}
|
|
8900
8958
|
}
|
|
8901
8959
|
].map(({ field, ...rest }) => ({
|
|
8902
8960
|
...rest,
|
|
8903
8961
|
line: id$8(field)
|
|
8904
8962
|
})).sort((a, b) => a.line.localeCompare(b.line)),
|
|
8905
8963
|
provenance: {
|
|
8906
|
-
document: "research/sources/tra-
|
|
8907
|
-
retrieved: "2026-
|
|
8908
|
-
revision: "
|
|
8909
|
-
}
|
|
8964
|
+
document: "research/sources/tra-forms/pdf/AT1SCH03-other-tax-deductions-credits-TRA11725.pdf",
|
|
8965
|
+
retrieved: "2026-09-01",
|
|
8966
|
+
revision: "TRA11725 (AT3) Rev. 2024-04"
|
|
8967
|
+
},
|
|
8968
|
+
footnotes: ["In order to be eligible for any deduction on this schedule, the corporation must have Investor Tax Credit Certificates, Capital Investment Tax Credit Certificates, or an Agri-processing Investment Tax Credit Certificate issued by the appropriate ministry.", "Capital Investment Tax Credit: the Investor Tax Credit must be fully utilized, including any carry-forward amounts, before the Capital Investment Tax Credit can be claimed."]
|
|
8910
8969
|
};
|
|
8911
8970
|
//#endregion
|
|
8912
8971
|
//#region src/t2/at1/forms/schedule4.ts
|
|
@@ -8923,6 +8982,10 @@ const AT1_SCHEDULE_4 = {
|
|
|
8923
8982
|
id: "countries",
|
|
8924
8983
|
title: "Foreign Investment Credits",
|
|
8925
8984
|
description: "One occurrence per country the corporation earned foreign non-business income in, sorted in the same order as federal Schedule 21. AB form 004 exists only if federal Schedule 21 exists."
|
|
8985
|
+
}, {
|
|
8986
|
+
id: "total",
|
|
8987
|
+
title: "Total and Alberta Foreign Investment Income Tax Credit",
|
|
8988
|
+
description: "Summed across every country, then capped by the AT1 jacket room."
|
|
8926
8989
|
}],
|
|
8927
8990
|
fields: [
|
|
8928
8991
|
{
|
|
@@ -8967,16 +9030,46 @@ const AT1_SCHEDULE_4 = {
|
|
|
8967
9030
|
role: "computed",
|
|
8968
9031
|
section: "countries",
|
|
8969
9032
|
note: "Lesser of D (income proration) and G (tax paid less federal credit), both allocation-factor-scaled — see module doc."
|
|
9033
|
+
},
|
|
9034
|
+
{
|
|
9035
|
+
field: "014",
|
|
9036
|
+
caption: "Total Allowable Credits",
|
|
9037
|
+
kind: "money",
|
|
9038
|
+
role: "total",
|
|
9039
|
+
section: "total",
|
|
9040
|
+
note: "Sum of line 012 (column H) across every country occurrence — `computeSchedule4`'s own `totalAllowableCredit`."
|
|
9041
|
+
},
|
|
9042
|
+
{
|
|
9043
|
+
field: "018",
|
|
9044
|
+
caption: "Room — AT1 page 2, line 068 minus (lines 070 + 071)",
|
|
9045
|
+
kind: "money",
|
|
9046
|
+
role: "computed",
|
|
9047
|
+
section: "total",
|
|
9048
|
+
note: "Not the same two jacket lines as Schedule 3's room at line 602 (070+072) — confirmed by reading both printed forms directly."
|
|
9049
|
+
},
|
|
9050
|
+
{
|
|
9051
|
+
field: "020",
|
|
9052
|
+
caption: "Alberta Foreign Investment Income Tax Credit",
|
|
9053
|
+
kind: "money",
|
|
9054
|
+
role: "computed",
|
|
9055
|
+
section: "total",
|
|
9056
|
+
note: "Lesser of line 014 and line 018.",
|
|
9057
|
+
to: {
|
|
9058
|
+
form: "AT1",
|
|
9059
|
+
line: "000072001",
|
|
9060
|
+
note: "Printed on the form: \"Enter this amount on AT1 page 2, line 072.\""
|
|
9061
|
+
}
|
|
8970
9062
|
}
|
|
8971
9063
|
].map(({ field, ...rest }) => ({
|
|
8972
9064
|
...rest,
|
|
8973
9065
|
line: id$7(field)
|
|
8974
9066
|
})),
|
|
8975
9067
|
provenance: {
|
|
8976
|
-
document: "research/sources/tra-
|
|
8977
|
-
retrieved: "2026-
|
|
8978
|
-
revision: "
|
|
8979
|
-
}
|
|
9068
|
+
document: "research/sources/tra-forms/pdf/AT1SCH04-foreign-investment-income-tax-credit-TRA11728.pdf",
|
|
9069
|
+
retrieved: "2026-09-01",
|
|
9070
|
+
revision: "TRA11728 (AT201) Rev. 2026-03"
|
|
9071
|
+
},
|
|
9072
|
+
footnotes: ["If the corporation has permanent establishments in Alberta only, enter \"1\" in column C (the Alberta allocation factor).", "If the corporation's deduction from income under Alberta Corporate Tax Act subsection 8(2.2) differs from the deduction under Income Tax Act subsection 20(12) for any country, Alberta Schedule 12 is required — the total of these amounts for each country is included in the amount at Schedule 12, line 040."]
|
|
8980
9073
|
};
|
|
8981
9074
|
//#endregion
|
|
8982
9075
|
//#region src/t2/at1/forms/schedule5.ts
|
|
@@ -10162,10 +10255,15 @@ const FORMS = [
|
|
|
10162
10255
|
line: id(field)
|
|
10163
10256
|
})).sort((a, b) => a.line.localeCompare(b.line)),
|
|
10164
10257
|
provenance: {
|
|
10165
|
-
document: "research/sources/tra-
|
|
10166
|
-
retrieved: "2026-
|
|
10167
|
-
revision: "
|
|
10168
|
-
}
|
|
10258
|
+
document: "research/sources/tra-forms/pdf/AT1SCH15-resource-related-deductions-TRA11736.pdf",
|
|
10259
|
+
retrieved: "2026-09-01",
|
|
10260
|
+
revision: "TRA11736 (AT237) Rev. 2026-03 — partial, SFEDE/CFRE per-country lines only (Areas G/H); see this module's doc comment"
|
|
10261
|
+
},
|
|
10262
|
+
footnotes: [
|
|
10263
|
+
"This schedule is required if the balance at the end of the preceding taxation year, or the claim for Alberta purposes, differs from that for federal purposes.",
|
|
10264
|
+
"Specified foreign exploration and development expenses (Area G) are those in respect of a specific country and incurred before 2001. If in respect of two or more countries, determine a reasonable allocation to each country and maintain a consistent allocation in following years.",
|
|
10265
|
+
"Foreign resource expenses (Area H) are those in respect of a specific country and incurred in a taxation year beginning in 2001 or after."
|
|
10266
|
+
]
|
|
10169
10267
|
},
|
|
10170
10268
|
AT1_SCHEDULE_16,
|
|
10171
10269
|
AT1_SCHEDULE_17,
|
package/dist/index.d.mts
CHANGED
|
@@ -165,6 +165,15 @@ interface FormDefinition {
|
|
|
165
165
|
sections: readonly FormSection[];
|
|
166
166
|
fields: readonly FormField[];
|
|
167
167
|
provenance: FormProvenance;
|
|
168
|
+
/**
|
|
169
|
+
* The form's own footnote text — asterisked rules printed on the form
|
|
170
|
+
* itself (loss-expiry conditions, emission rules, the traps a preparer
|
|
171
|
+
* would otherwise only learn by filing wrong once). Lift from the matching
|
|
172
|
+
* `research/field-maps/*.md` doc where one exists — those are already
|
|
173
|
+
* verified against the live form and often name the trap, not just the
|
|
174
|
+
* rule — rather than re-transcribing the PDF from scratch.
|
|
175
|
+
*/
|
|
176
|
+
footnotes?: readonly string[];
|
|
168
177
|
}
|
|
169
178
|
/** Index a definition's fields by line number. */
|
|
170
179
|
declare function indexByLine(form: FormDefinition): ReadonlyMap<string, FormField>;
|
|
@@ -296,6 +305,12 @@ interface DonationPool {
|
|
|
296
305
|
key: 'charitable' | 'gifts';
|
|
297
306
|
label: string;
|
|
298
307
|
lines: Record<ContinuityRow, string>;
|
|
308
|
+
/**
|
|
309
|
+
* The Schedule 12 line `applied` carries to — printed directly on the form
|
|
310
|
+
* beside that line ("Carry forward the amount at line … to Schedule 12,
|
|
311
|
+
* line …"), confirmed against `AT1SCH20-charitable-donations-TRA11740.pdf`.
|
|
312
|
+
*/
|
|
313
|
+
toSchedule12: string;
|
|
299
314
|
}
|
|
300
315
|
declare const AT1_SCHEDULE_20_POOLS: readonly DonationPool[];
|
|
301
316
|
declare const AT1_SCHEDULE_20: FormDefinition;
|
|
@@ -326,12 +341,24 @@ interface AlbertaLossPool {
|
|
|
326
341
|
otherAdjustments?: string;
|
|
327
342
|
carryBack: string;
|
|
328
343
|
closing: string;
|
|
329
|
-
/**
|
|
344
|
+
/**
|
|
345
|
+
* The Schedule 12 line `appliedAgainstIncome` carries to — printed directly
|
|
346
|
+
* on the AT1 Schedule 21 form beside that line ("Carry forward to Schedule
|
|
347
|
+
* 12, line …"), confirmed against `AT1SCH21-loss-continuity-TRA11741.pdf`
|
|
348
|
+
* pages 1-2. NOT the closing balance — the closing balance is this
|
|
349
|
+
* schedule's own running total, not what Schedule 12 reconciles against.
|
|
350
|
+
* Absent where the destination isn't a single fixed line — see
|
|
351
|
+
* {@link appliedAgainstIncomeNote}.
|
|
352
|
+
*/
|
|
330
353
|
toSchedule12?: string;
|
|
354
|
+
/** Extra context to print alongside the carry-forward instruction — e.g. capital's ×inclusion-rate reminder. */
|
|
355
|
+
toSchedule12Note?: string;
|
|
356
|
+
/** Explanatory text for `appliedAgainstIncome` when its destination isn't a fixed Schedule 12 line — listed personal property's is conditional on whether Schedule 18 exists. */
|
|
357
|
+
appliedAgainstIncomeNote?: string;
|
|
331
358
|
}
|
|
332
359
|
declare const AT1_SCHEDULE_21_POOLS: readonly AlbertaLossPool[];
|
|
333
360
|
/** The row labels for one pool's continuity, in print order — exported so a UI-side paper Form View can build the same per-pool grid without re-typing the captions. */
|
|
334
|
-
declare const CONTINUITY_CAPTIONS: Record<keyof Omit<AlbertaLossPool, 'key' | 'label' | 'toSchedule12'>, string>;
|
|
361
|
+
declare const CONTINUITY_CAPTIONS: Record<keyof Omit<AlbertaLossPool, 'key' | 'label' | 'toSchedule12' | 'toSchedule12Note' | 'appliedAgainstIncomeNote'>, string>;
|
|
335
362
|
declare const CONTINUITY_ORDER: (keyof typeof CONTINUITY_CAPTIONS)[];
|
|
336
363
|
declare const AT1_SCHEDULE_21: FormDefinition;
|
|
337
364
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@classytic/ca-tax",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "Canadian corporate tax engine for @classytic/tax-core — federal T2, Alberta AT1 and Québec CO-17 with form definitions traced to the published forms, plus GST/HST/PST/QST with dated provincial regimes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|