@classytic/ca-tax 0.0.1 → 0.0.5

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$9 = (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$9(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
  {
@@ -2096,19 +2207,128 @@ const AT1_SCHEDULE_29 = {
2096
2207
  title: "Alberta Innovation Employment Grant",
2097
2208
  scheme: "tra-line-item-id",
2098
2209
  taxYears: { from: 2021 },
2099
- sections: [{
2100
- id: "grant",
2101
- title: "Innovation Employment Grant",
2102
- description: "Base rate on everything, enhanced rate on the increment above the average of the previous two years."
2103
- }],
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
+ },
2217
+ {
2218
+ id: "limit",
2219
+ title: "Maximum Expenditure Limit",
2220
+ page: 2,
2221
+ description: "Whether the corporation is associated for IEG purposes, and the resulting expenditure limit for the year — shared with the group (line 102, from the Agreement) if associated, or this corporation’s own day-prorated $4,000,000 (line 104) if not."
2222
+ },
2223
+ {
2224
+ id: "grant",
2225
+ title: "Innovation Employment Grant",
2226
+ page: 2,
2227
+ description: "Base rate on the capped expenditures, enhanced rate on the increment above the average of the previous two years, both scaled by the taxable-capital reduction factor."
2228
+ },
2229
+ {
2230
+ id: "agreement",
2231
+ title: "Agreement Among Associated Corporations",
2232
+ page: 3,
2233
+ description: "Filed only when the corporation is associated (line 100 = Yes). Names every member, each one’s own agreed share of the $4,000,000 pool, and the group’s Allowed Amount — the figure line 125 uses instead of spending above base."
2234
+ }
2235
+ ],
2104
2236
  fields: [
2105
2237
  {
2106
- field: "128",
2107
- caption: "Incremental eligible expenditures",
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
+ },
2301
+ {
2302
+ field: "100",
2303
+ caption: "Associated with one or more corporations for IEG purposes?",
2304
+ kind: "flag",
2305
+ role: "input",
2306
+ section: "limit",
2307
+ note: "If \"Yes\", complete page 3 — the formal Agreement Among Associated Corporations."
2308
+ },
2309
+ {
2310
+ field: "102",
2311
+ caption: "Allocated expenditure limit, if associated",
2312
+ kind: "money",
2313
+ role: "input",
2314
+ section: "limit",
2315
+ note: "Transcribed from this corporation’s own line 240 on page 3 (row 1, the claiming corporation) — filled in here, not re-derived."
2316
+ },
2317
+ {
2318
+ field: "104",
2319
+ caption: "Expenditure limit, if not associated",
2108
2320
  kind: "money",
2109
2321
  role: "computed",
2110
- section: "grant",
2111
- note: "Eligible expenditures LESS the base level the average of the previous two years. Nil where spending has not increased."
2322
+ section: "limit",
2323
+ note: "$4,000,000 × (days in the tax year ÷ 365, or 366 if the year includes February 29) this corporation’s own limit; there is no group to share it with."
2324
+ },
2325
+ {
2326
+ field: "108",
2327
+ caption: "Maximum expenditure limit for the year",
2328
+ kind: "money",
2329
+ role: "computed",
2330
+ section: "limit",
2331
+ note: "Line 102 or line 104, as applicable. Feeds lines 110, 112 and 125."
2112
2332
  },
2113
2333
  {
2114
2334
  field: "110",
@@ -2116,30 +2336,286 @@ const AT1_SCHEDULE_29 = {
2116
2336
  kind: "money",
2117
2337
  role: "computed",
2118
2338
  section: "grant",
2119
- note: "Eight per cent, on eligible expenditures up to the base level."
2339
+ note: "Eight per cent, on the LESSER of eligible expenditures (line 031) and line 108."
2120
2340
  },
2121
2341
  {
2122
2342
  field: "112",
2123
- caption: "Grant at the enhanced rate",
2343
+ caption: "Grant at the enhanced rate — non-associated",
2344
+ kind: "money",
2345
+ role: "computed",
2346
+ section: "grant",
2347
+ note: "Twelve per cent, on the INCREMENT above the base level — (lesser of line 031 and line 108) minus the base amount at line 118. Applying it to the whole expenditure overstates the grant. Filed instead of line 125, never alongside it."
2348
+ },
2349
+ {
2350
+ field: "114",
2351
+ caption: "Eligible expenditures — first preceding year",
2352
+ kind: "money",
2353
+ role: "input",
2354
+ section: "grant",
2355
+ note: "Non-associated only (see line 112’s note) — this corporation’s OWN prior year, not a group figure."
2356
+ },
2357
+ {
2358
+ field: "116",
2359
+ caption: "Eligible expenditures — second preceding year",
2360
+ kind: "money",
2361
+ role: "input",
2362
+ section: "grant",
2363
+ note: "Non-associated only, this corporation’s own prior year — see line 114."
2364
+ },
2365
+ {
2366
+ field: "118",
2367
+ caption: "Base amount",
2368
+ kind: "money",
2369
+ role: "computed",
2370
+ section: "grant",
2371
+ note: "Average of lines 114 and 116. Feeds line 112 only — the associated formula at line 125 does not subtract a base amount at all."
2372
+ },
2373
+ {
2374
+ field: "125",
2375
+ caption: "Grant at the enhanced rate — associated",
2376
+ kind: "money",
2377
+ role: "computed",
2378
+ section: "grant",
2379
+ note: "(Lesser of line 108 or the allocated allowed amount at line 325) × 12%. A genuinely different formula from line 112 — no base amount is subtracted, and actual spending above base plays no part. Filed instead of line 112, never alongside it."
2380
+ },
2381
+ {
2382
+ field: "126",
2383
+ caption: "Taxable capital employed in Canada",
2124
2384
  kind: "money",
2385
+ role: "input",
2386
+ section: "grant",
2387
+ note: "This corporation alone if not associated with anyone for IEG purposes; the associated group’s total otherwise. Drives the reduction factor at line 128."
2388
+ },
2389
+ {
2390
+ field: "128",
2391
+ caption: "Taxable-capital reduction factor",
2392
+ kind: "rate",
2125
2393
  role: "computed",
2126
2394
  section: "grant",
2127
- note: "Twenty per cent, on the INCREMENT only. Applying it to the whole expenditure roughly doubles the grant."
2395
+ note: "1 at $10,000,000 taxable capital or below, straight-line down to 0 at $50,000,000. Multiplies lines 110 + 112 at line 130 — it does not reduce the $4,000,000 expenditure limit."
2396
+ },
2397
+ {
2398
+ field: "130",
2399
+ caption: "Grant before recapture",
2400
+ kind: "money",
2401
+ role: "computed",
2402
+ section: "grant",
2403
+ note: "(Line 110 + line 112) × line 128."
2404
+ },
2405
+ {
2406
+ field: "132",
2407
+ caption: "Recapture",
2408
+ kind: "money",
2409
+ role: "input",
2410
+ section: "grant",
2411
+ note: "Where IEG-funded property was sold or converted to commercial use in the year. Blank, not zero, when there is none to report."
2412
+ },
2413
+ {
2414
+ field: "134",
2415
+ caption: "Net Innovation Employment Grant",
2416
+ kind: "money",
2417
+ role: "total",
2418
+ section: "grant",
2419
+ note: "Line 130 minus line 132. Carried to AT1 page 2, line 129."
2420
+ },
2421
+ {
2422
+ field: "200",
2423
+ caption: "CAN of the associated corporation with the longest taxation year",
2424
+ kind: "text",
2425
+ role: "input",
2426
+ section: "agreement",
2427
+ note: "9 or 10 digit Alberta Corporate Account Number."
2428
+ },
2429
+ {
2430
+ field: "202",
2431
+ caption: "Taxation year beginning",
2432
+ kind: "date",
2433
+ role: "input",
2434
+ section: "agreement",
2435
+ note: "The longest-year member’s own tax year — not necessarily the claimant’s."
2436
+ },
2437
+ {
2438
+ field: "204",
2439
+ caption: "Taxation year ending",
2440
+ kind: "date",
2441
+ role: "input",
2442
+ section: "agreement",
2443
+ note: "The longest-year member’s own tax year end."
2444
+ },
2445
+ {
2446
+ field: "206",
2447
+ caption: "Number of days in the longest year",
2448
+ kind: "text",
2449
+ role: "input",
2450
+ section: "agreement",
2451
+ note: "Max 365 days; 366 if the longest taxation year includes February 29."
2452
+ },
2453
+ {
2454
+ field: "208",
2455
+ caption: "Maximum Expenditure Limit",
2456
+ kind: "money",
2457
+ role: "computed",
2458
+ section: "agreement",
2459
+ note: "$4,000,000 × (line 206 ÷ 365). The group’s shared pool for the year."
2460
+ },
2461
+ {
2462
+ field: "220",
2463
+ caption: "Federal Business Number (FBN)",
2464
+ kind: "text",
2465
+ role: "input",
2466
+ section: "agreement",
2467
+ note: "One row per associated member, the claiming corporation first. There is NO line for the member’s name on this form — 220 is the FBN, not a name field."
2468
+ },
2469
+ {
2470
+ field: "230",
2471
+ caption: "Alberta Corporate Account Number (CAN)",
2472
+ kind: "text",
2473
+ role: "input",
2474
+ section: "agreement",
2475
+ note: "9 or 10 digit account number, this member’s own."
2476
+ },
2477
+ {
2478
+ field: "235",
2479
+ caption: "Current Taxation Year End",
2480
+ kind: "date",
2481
+ role: "input",
2482
+ section: "agreement",
2483
+ note: "This member’s own current taxation year end that ended within the claiming corporation’s calendar year."
2484
+ },
2485
+ {
2486
+ field: "240",
2487
+ caption: "Allocated Expenditure Limit",
2488
+ kind: "money",
2489
+ role: "input",
2490
+ section: "agreement",
2491
+ note: "The amount allocated to this member — the claimant’s own row 1 figure is transcribed to line 102 on page 2."
2492
+ },
2493
+ {
2494
+ field: "245",
2495
+ caption: "Current year’s eligible expenditures",
2496
+ kind: "money",
2497
+ role: "input",
2498
+ section: "agreement",
2499
+ note: "This member’s own current-year eligible expenditures. Summed at line 275 (\"X\")."
2500
+ },
2501
+ {
2502
+ field: "250",
2503
+ caption: "Eligible expenditures for the first preceding year",
2504
+ kind: "money",
2505
+ role: "input",
2506
+ section: "agreement",
2507
+ note: "This member’s own figure. Summed at line 280 (\"Y\")."
2508
+ },
2509
+ {
2510
+ field: "260",
2511
+ caption: "Eligible expenditures for the second preceding year",
2512
+ kind: "money",
2513
+ role: "input",
2514
+ section: "agreement",
2515
+ note: "This member’s own figure. Summed at line 290 (\"Z\")."
2516
+ },
2517
+ {
2518
+ field: "265",
2519
+ caption: "Taxable Capital for the first preceding year",
2520
+ kind: "money",
2521
+ role: "input",
2522
+ section: "agreement",
2523
+ note: "This member’s own figure. Summed at line 300 — informational; does not feed line 128."
2524
+ },
2525
+ {
2526
+ field: "267",
2527
+ caption: "Individual corporation maximum allowed amount",
2528
+ kind: "money",
2529
+ role: "computed",
2530
+ section: "agreement",
2531
+ note: "Line 245 − [(line 250 + line 260) / 2]. If negative, this member’s allowed amount (line 268) is nil, not negative."
2532
+ },
2533
+ {
2534
+ field: "268",
2535
+ caption: "Allocated allowed amount to each corporation",
2536
+ kind: "money",
2537
+ role: "computed",
2538
+ section: "agreement",
2539
+ note: "The LEAST of: line 240, line 267, and the lesser of [(4,000,000 × days in this member’s own tax year / 365 or 366) or line 031] less this member’s own base amount."
2540
+ },
2541
+ {
2542
+ field: "270",
2543
+ caption: "Total allocated expenditure limit",
2544
+ kind: "money",
2545
+ role: "total",
2546
+ section: "agreement",
2547
+ note: "Σ line 240 across every member. Must not exceed line 208."
2548
+ },
2549
+ {
2550
+ field: "275",
2551
+ caption: "Total current-year eligible expenditures",
2552
+ kind: "money",
2553
+ role: "total",
2554
+ section: "agreement",
2555
+ note: "Σ line 245 — \"X\" in the Allowed Amount formula on page 2."
2556
+ },
2557
+ {
2558
+ field: "280",
2559
+ caption: "Total eligible expenditures — first preceding year",
2560
+ kind: "money",
2561
+ role: "total",
2562
+ section: "agreement",
2563
+ note: "Σ line 250 — \"Y\" in the Allowed Amount formula."
2564
+ },
2565
+ {
2566
+ field: "290",
2567
+ caption: "Total eligible expenditures — second preceding year",
2568
+ kind: "money",
2569
+ role: "total",
2570
+ section: "agreement",
2571
+ note: "Σ line 260 — \"Z\" in the Allowed Amount formula."
2572
+ },
2573
+ {
2574
+ field: "300",
2575
+ caption: "Total taxable capital — first preceding year",
2576
+ kind: "money",
2577
+ role: "total",
2578
+ section: "agreement",
2579
+ note: "Σ line 265, across every member."
2580
+ },
2581
+ {
2582
+ field: "310",
2583
+ caption: "Group Allowed Amount",
2584
+ kind: "money",
2585
+ role: "computed",
2586
+ section: "agreement",
2587
+ note: "Line 275 − (average of line 280 and line 290). \"X − ((Y + Z) / 2)\"."
2588
+ },
2589
+ {
2590
+ field: "320",
2591
+ caption: "Total allocated allowed amount",
2592
+ kind: "money",
2593
+ role: "total",
2594
+ section: "agreement",
2595
+ note: "Σ line 268. Must be less than or equal to line 310."
2596
+ },
2597
+ {
2598
+ field: "325",
2599
+ caption: "Corporation Allocated Allowed amount",
2600
+ kind: "money",
2601
+ role: "total",
2602
+ section: "agreement",
2603
+ note: "The claiming corporation’s own line 268, restated — used to calculate line 125 on page 2."
2128
2604
  }
2129
2605
  ].map(({ field, ...rest }) => ({
2130
2606
  ...rest,
2131
2607
  line: id(field)
2132
2608
  })).sort((a, b) => a.line.localeCompare(b.line)),
2133
2609
  provenance: {
2134
- document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
2135
- retrieved: "2026-08-08",
2136
- revision: "line numbers match the engine payload builder, verified against the live form"
2610
+ document: "research/sources/tra-forms/pdf/AT1SCH29-innovation-employment-grant-TRA14637.pdf",
2611
+ retrieved: "2026-08-28",
2612
+ 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."
2137
2613
  }
2138
2614
  };
2139
- /** Eight per cent, up to the base level of spending. */
2615
+ /** Eight per cent, on the full capped eligible expenditures. */
2140
2616
  const AT1_IEG_BASE_RATE = .08;
2141
- /** Twenty per cent, on the increment above it. */
2142
- const AT1_IEG_ENHANCED_RATE = .2;
2617
+ /** Twelve per cent, on the increment above the base level. */
2618
+ const AT1_IEG_ENHANCED_RATE = .12;
2143
2619
  /** The annual cap on eligible expenditures, shared across an associated group. */
2144
2620
  const AT1_IEG_MAX_EXPENDITURE = 4e6;
2145
2621
  /** The base level averages this many prior years. */
@@ -7736,7 +8212,8 @@ const FORMS = [
7736
8212
  AT1_SCHEDULE_18,
7737
8213
  AT1_SCHEDULE_20,
7738
8214
  AT1_SCHEDULE_21,
7739
- AT1_SCHEDULE_29
8215
+ AT1_SCHEDULE_29,
8216
+ AT4970
7740
8217
  ];
7741
8218
  const BY_ID = new Map(FORMS.map((f) => [f.id, f]));
7742
8219
  /** A form definition by id — `'T2SCH1'`, `'AT1SCH12'`. */
@@ -7783,4 +8260,4 @@ function findBrokenLinks() {
7783
8260
  return problems;
7784
8261
  }
7785
8262
  //#endregion
7786
- 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 };
8263
+ 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 };
package/dist/index.d.mts CHANGED
@@ -182,6 +182,11 @@ declare function isEnterableLine(form: FormDefinition, line: string): boolean;
182
182
  */
183
183
  declare function validateFormDefinition(form: FormDefinition): string[];
184
184
  //#endregion
185
+ //#region src/t2/at1/forms/at4970.d.ts
186
+ declare const AT4970: FormDefinition;
187
+ /** The 13 named jurisdictions the jurisdiction table lists, in the form’s own order. Plus 'other'. */
188
+ declare const AT4970_JURISDICTIONS: readonly ["alberta", "britishColumbia", "manitoba", "newBrunswick", "newfoundlandAndLabrador", "northwestTerritories", "novaScotia", "nunavut", "ontario", "princeEdwardIsland", "quebec", "saskatchewan", "yukon", "other"];
189
+ //#endregion
185
190
  //#region src/t2/at1/forms/jacket.d.ts
186
191
  declare const AT1_JACKET: FormDefinition;
187
192
  /** 000080001 — Alberta tax payable, before credits. */
@@ -313,10 +318,10 @@ declare const AT1_SCHEDULE_21: FormDefinition;
313
318
  //#endregion
314
319
  //#region src/t2/at1/forms/schedule29.d.ts
315
320
  declare const AT1_SCHEDULE_29: FormDefinition;
316
- /** Eight per cent, up to the base level of spending. */
321
+ /** Eight per cent, on the full capped eligible expenditures. */
317
322
  declare const AT1_IEG_BASE_RATE = 0.08;
318
- /** Twenty per cent, on the increment above it. */
319
- declare const AT1_IEG_ENHANCED_RATE = 0.2;
323
+ /** Twelve per cent, on the increment above the base level. */
324
+ declare const AT1_IEG_ENHANCED_RATE = 0.12;
320
325
  /** The annual cap on eligible expenditures, shared across an associated group. */
321
326
  declare const AT1_IEG_MAX_EXPENDITURE = 4000000;
322
327
  /** The base level averages this many prior years. */
@@ -619,4 +624,4 @@ declare function describeLine(formId: string, line: string): string;
619
624
  */
620
625
  declare function findBrokenLinks(): string[];
621
626
  //#endregion
622
- export { SCHEDULE_4_CARRYBACK_YEARS as $, AT1_BALANCE_LINE as $t, SCHEDULE_21_BUSINESS_CREDIT_LINE as A, AT1_SCHEDULE_21 as At, SCHEDULE_8_TERMINAL_LOSS_LINE as B, DispositionCategory as Bt, SCHEDULE_31_ENHANCED_SRED_RATE as C, CO17_TAX_PAYABLE_BOX as Ct, T2_SCHEDULE_24 as D, AT1_IEG_MAX_EXPENDITURE as Dt, SCHEDULE_24_OPERATION_TYPE_LINE as E, AT1_IEG_JACKET_LINE as Et, T2_SCHEDULE_13 as F, AT1_SCHEDULE_20_POOLS as Ft, DispositionGrid as G, AT1_SCHEDULE_16_CARRYFORWARD_LINE as Gt, SCHEDULE_7_ADJUSTED_AII_LINE as H, AT1_SCHEDULE_17_RESERVES as Ht, CcaColumn as I, DonationPool as It, AllocationJurisdiction as J, AlbertaCcaColumn as Jt, SCHEDULE_6_GRIDS as K, AT1_SCHEDULE_13 as Kt, SCHEDULE_8_CCA_LINE as L, AT1_SCHEDULE_18 as Lt, T2_SCHEDULE_21 as M, AlbertaLossPool as Mt, ReserveRow as N, AT1_DONATION_CARRYFORWARD_YEARS as Nt, SCHEDULE_23_GROUP_BUSINESS_LIMIT as O, AT1_IEG_PRIOR_YEARS as Ot, SCHEDULE_13_RESERVE_ROWS as P, AT1_SCHEDULE_20 as Pt, T2_SCHEDULE_5 as Q, AT1_BALANCE_CREDIT_LINES as Qt, SCHEDULE_8_COLUMNS as R, AT1_SCHEDULE_18_CATEGORIES as Rt, T2_SCHEDULE_33 as S, CO17_TAXABLE_INCOME_BOX as St, T2_SCHEDULE_31 as T, AT1_IEG_ENHANCED_RATE as Tt, SCHEDULE_7_PASSIVE_INCOME_THRESHOLD as U, AlbertaReserveKind as Ut, T2_SCHEDULE_8 as V, AT1_SCHEDULE_17 as Vt, T2_SCHEDULE_7 as W, AT1_SCHEDULE_16 as Wt, SCHEDULE_5_REVENUE_OFFSET as X, AT1_SCHEDULE_12_PAIRS as Xt, SCHEDULE_5_JURISDICTIONS as Y, AT1_SCHEDULE_12 as Yt, SCHEDULE_5_SALARIES_OFFSET as Z, AlbertaReconcilingPair as Zt, SCHEDULE_50_DISCLOSURE_THRESHOLD as _, T2_SMALL_BUSINESS_DEDUCTION_RATE as _t, getField as a, FormFieldRequirement as an, T2_SCHEDULE_3 as at, T2_SCHEDULE_43 as b, CO17_QUEBEC_PROPORTION_BOX as bt, CaptionRow as c, FormLineRef as cn, T2_SCHEDULE_2 as ct, buildFields as d, LineNumberScheme as dn, SCHEDULE_1_TOTAL_ADDITIONS_LINE as dt, AT1_JACKET as en, SCHEDULE_4_LPP_CARRYFORWARD_YEARS as et, T2_SCHEDULE_130 as f, fieldsInSection as fn, SCHEDULE_1_TOTAL_DEDUCTIONS_LINE as ft, T2_SCHEDULE_53 as g, validateFormDefinition as gn, T2_NET_INCOME_FOR_TAX_LINE as gt, SCHEDULE_53_GENERAL_RATE_FACTOR as h, isEnterableLine as hn, T2_JACKET as ht, formsForProgram as i, FormFieldKind as in, SCHEDULE_3_TAXABLE_PAID_LINE as it, SCHEDULE_21_NON_BUSINESS_CREDIT_LINE as j, AT1_SCHEDULE_21_POOLS as jt, T2_SCHEDULE_23 as k, AT1_SCHEDULE_29 as kt, LineBand as l, FormProvenance as ln, SCHEDULE_1_LINES as lt, SCHEDULE_53_CLOSING_GRIP_LINE as m, inputFields as mn, T2_BASE_PART_I_RATE as mt, describeLine as n, FormDefinition as nn, T2_SCHEDULE_4 as nt, getForm as o, FormFieldRole as on, SCHEDULE_2_CARRYFORWARD_YEARS as ot, T2_SCHEDULE_55 as p, indexByLine as pn, T2_SCHEDULE_1 as pt, T2_SCHEDULE_6 as q, AT1_SCHEDULE_13_COLUMNS as qt, findBrokenLinks as r, FormField as rn, SCHEDULE_3_ELIGIBLE_PAID_LINE as rt, BuildFieldsSpec as s, FormFieldSide as sn, SCHEDULE_2_CHARITABLE_CURRENT_LINE as st, FORMS as t, AT1_TAX_PAYABLE_LINE as tn, SCHEDULE_4_NON_CAPITAL_CARRYFORWARD_YEARS as tt, UnclassifiedLineError as u, FormSection as un, SCHEDULE_1_LINE_BY_NUMBER as ut, T2_SCHEDULE_50 as v, T2_TAXABLE_INCOME_LINE as vt, SCHEDULE_31_GENERAL_SRED_RATE as w, AT1_IEG_BASE_RATE as wt, SCHEDULE_33_TAXABLE_CAPITAL_IN_CANADA_LINE as x, CO17_RETURN as xt, SCHEDULE_43_DIVIDEND_ALLOWANCE as y, T2_TOTAL_TAX_PAYABLE_LINE as yt, SCHEDULE_8_RECAPTURE_LINE as z, AT1_SECTION_34_2_GROSS_UP as zt };
627
+ export { SCHEDULE_4_CARRYBACK_YEARS as $, AT1_BALANCE_LINE as $t, SCHEDULE_21_BUSINESS_CREDIT_LINE as A, AT1_SCHEDULE_21 as At, SCHEDULE_8_TERMINAL_LOSS_LINE as B, DispositionCategory as Bt, SCHEDULE_31_ENHANCED_SRED_RATE as C, CO17_TAX_PAYABLE_BOX as Ct, T2_SCHEDULE_24 as D, AT1_IEG_MAX_EXPENDITURE as Dt, SCHEDULE_24_OPERATION_TYPE_LINE as E, AT1_IEG_JACKET_LINE as Et, T2_SCHEDULE_13 as F, AT1_SCHEDULE_20_POOLS as Ft, DispositionGrid as G, AT1_SCHEDULE_16_CARRYFORWARD_LINE as Gt, SCHEDULE_7_ADJUSTED_AII_LINE as H, AT1_SCHEDULE_17_RESERVES as Ht, CcaColumn as I, DonationPool as It, AllocationJurisdiction as J, AlbertaCcaColumn as Jt, SCHEDULE_6_GRIDS as K, AT1_SCHEDULE_13 as Kt, SCHEDULE_8_CCA_LINE as L, AT1_SCHEDULE_18 as Lt, T2_SCHEDULE_21 as M, AlbertaLossPool as Mt, ReserveRow as N, AT1_DONATION_CARRYFORWARD_YEARS as Nt, SCHEDULE_23_GROUP_BUSINESS_LIMIT as O, AT1_IEG_PRIOR_YEARS as Ot, SCHEDULE_13_RESERVE_ROWS as P, AT1_SCHEDULE_20 as Pt, T2_SCHEDULE_5 as Q, AT1_BALANCE_CREDIT_LINES as Qt, SCHEDULE_8_COLUMNS as R, AT1_SCHEDULE_18_CATEGORIES as Rt, T2_SCHEDULE_33 as S, CO17_TAXABLE_INCOME_BOX as St, T2_SCHEDULE_31 as T, AT1_IEG_ENHANCED_RATE as Tt, SCHEDULE_7_PASSIVE_INCOME_THRESHOLD as U, AlbertaReserveKind as Ut, T2_SCHEDULE_8 as V, AT1_SCHEDULE_17 as Vt, T2_SCHEDULE_7 as W, AT1_SCHEDULE_16 as Wt, SCHEDULE_5_REVENUE_OFFSET as X, AT1_SCHEDULE_12_PAIRS as Xt, SCHEDULE_5_JURISDICTIONS as Y, AT1_SCHEDULE_12 as Yt, SCHEDULE_5_SALARIES_OFFSET as Z, AlbertaReconcilingPair as Zt, SCHEDULE_50_DISCLOSURE_THRESHOLD as _, isEnterableLine as _n, T2_SMALL_BUSINESS_DEDUCTION_RATE as _t, getField as a, FormField as an, T2_SCHEDULE_3 as at, T2_SCHEDULE_43 as b, CO17_QUEBEC_PROPORTION_BOX as bt, CaptionRow as c, FormFieldRole as cn, T2_SCHEDULE_2 as ct, buildFields as d, FormProvenance as dn, SCHEDULE_1_TOTAL_ADDITIONS_LINE as dt, AT1_JACKET as en, SCHEDULE_4_LPP_CARRYFORWARD_YEARS as et, T2_SCHEDULE_130 as f, FormSection as fn, SCHEDULE_1_TOTAL_DEDUCTIONS_LINE as ft, T2_SCHEDULE_53 as g, inputFields as gn, T2_NET_INCOME_FOR_TAX_LINE as gt, SCHEDULE_53_GENERAL_RATE_FACTOR as h, indexByLine as hn, T2_JACKET as ht, formsForProgram as i, FormDefinition as in, SCHEDULE_3_TAXABLE_PAID_LINE as it, SCHEDULE_21_NON_BUSINESS_CREDIT_LINE as j, AT1_SCHEDULE_21_POOLS as jt, T2_SCHEDULE_23 as k, AT1_SCHEDULE_29 as kt, LineBand as l, FormFieldSide as ln, SCHEDULE_1_LINES as lt, SCHEDULE_53_CLOSING_GRIP_LINE as m, fieldsInSection as mn, T2_BASE_PART_I_RATE as mt, describeLine as n, AT4970 as nn, T2_SCHEDULE_4 as nt, getForm as o, FormFieldKind as on, SCHEDULE_2_CARRYFORWARD_YEARS as ot, T2_SCHEDULE_55 as p, LineNumberScheme as pn, T2_SCHEDULE_1 as pt, T2_SCHEDULE_6 as q, AT1_SCHEDULE_13_COLUMNS as qt, findBrokenLinks as r, AT4970_JURISDICTIONS as rn, SCHEDULE_3_ELIGIBLE_PAID_LINE as rt, BuildFieldsSpec as s, FormFieldRequirement as sn, SCHEDULE_2_CHARITABLE_CURRENT_LINE as st, FORMS as t, AT1_TAX_PAYABLE_LINE as tn, SCHEDULE_4_NON_CAPITAL_CARRYFORWARD_YEARS as tt, UnclassifiedLineError as u, FormLineRef as un, SCHEDULE_1_LINE_BY_NUMBER as ut, T2_SCHEDULE_50 as v, validateFormDefinition as vn, T2_TAXABLE_INCOME_LINE as vt, SCHEDULE_31_GENERAL_SRED_RATE as w, AT1_IEG_BASE_RATE as wt, SCHEDULE_33_TAXABLE_CAPITAL_IN_CANADA_LINE as x, CO17_RETURN as xt, SCHEDULE_43_DIVIDEND_ALLOWANCE as y, T2_TOTAL_TAX_PAYABLE_LINE as yt, SCHEDULE_8_RECAPTURE_LINE as z, AT1_SECTION_34_2_GROSS_UP as zt };