-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path12-build-plan.html
More file actions
535 lines (494 loc) · 60.8 KB
/
Copy path12-build-plan.html
File metadata and controls
535 lines (494 loc) · 60.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>12 · Build Plan — Multi-Tenant Platform</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" />
<link rel="stylesheet" href="../assets/styles.css" />
<style>
.screens { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.screens th, .screens td { padding: 0.45rem 0.6rem; border: 1px solid var(--border); vertical-align: top; }
.screens th { background: var(--accent-soft); font-weight: 600; text-align: left; }
.screens td.code { font-family: var(--font-mono); font-size: 0.82rem; white-space: nowrap; color: var(--accent); font-weight: 600; }
.screens td.cluster { font-family: var(--font-mono); font-size: 0.78rem; color: var(--fg-muted); white-space: nowrap; }
.screens td.status { font-size: 0.78rem; white-space: nowrap; font-weight: 600; }
.screens td.tier { font-family: var(--font-mono); font-size: 0.78rem; white-space: nowrap; }
.badge { display: inline-block; padding: 0.05rem 0.35rem; border-radius: 3px; font-size: 0.75rem; font-weight: 600; }
.b-built { background: #d1fae5; color: #065f46; }
.b-partial { background: #fde68a; color: #78350f; }
.b-ready { background: #dbeafe; color: #1e40af; }
.b-design { background: #fef3c7; color: #92400e; }
.b-adr { background: #fce7f3; color: #9d174d; }
.b-new { background: #ede9fe; color: #5b21b6; font-size: 0.7rem; }
.b-tier1 { background: #d1fae5; color: #065f46; }
.b-tier2 { background: #fce7f3; color: #9d174d; }
.b-tier3 { background: #fef3c7; color: #92400e; }
.summary-table { width: auto; }
.summary-table th, .summary-table td { text-align: right; padding: 0.4rem 0.8rem; }
.summary-table th:first-child, .summary-table td:first-child { text-align: left; }
</style>
</head>
<body>
<div class="layout">
<aside class="sidebar">
<a href="../index.html" class="brand">
<span class="brand-mark">MTP</span>
<span class="brand-text">Multi-Tenant Platform</span>
</a>
<nav>
<div class="nav-group">
<h4>Foundations</h4>
<ul>
<li><a href="../index.html"><span class="nav-num">00</span>Overview</a></li>
<li><a href="01-findings.html"><span class="nav-num">01</span>Findings</a></li>
<li><a href="02-architecture.html"><span class="nav-num">02</span>Architecture</a></li>
<li><a href="10-tenancy-model.html"><span class="nav-num">10</span>Tenancy Model</a></li>
<li><a href="11-competitive-positioning.html"><span class="nav-num">11</span>Competitive Positioning</a></li>
<li><a href="12-build-plan.html" class="active"><span class="nav-num">12</span>Build Plan</a></li>
</ul>
</div>
<div class="nav-group">
<h4>Validation</h4>
<ul>
<li><a href="03-code-sketch.html"><span class="nav-num">03</span>Code Sketch</a></li>
<li><a href="04-ui-rule-config.html"><span class="nav-num">04</span>UI Rule Config</a></li>
<li><a href="05-result-pattern.html"><span class="nav-num">05</span>Result Pattern</a></li>
<li><a href="06-reconciliation.html"><span class="nav-num">06</span>Reconciliation</a></li>
</ul>
</div>
<div class="nav-group">
<h4>Tenant Surface</h4>
<ul>
<li><a href="07-ui-schema.html"><span class="nav-num">07</span>UI Schema</a></li>
<li><a href="08-i18n-l10n.html"><span class="nav-num">08</span>i18n / l10n</a></li>
<li><a href="09-extension-fields.html"><span class="nav-num">09</span>Extension Fields</a></li>
</ul>
</div>
<div class="nav-group">
<h4>Module Studies</h4>
<ul>
<li><a href="../gnums/accounting/scope.html"><span class="nav-num">ACC</span>Accounting — Scope</a></li>
<li><a href="../gnums/hr-payroll/scope.html"><span class="nav-num">HRP</span>HR/Payroll — Scope</a></li>
</ul>
</div>
<div class="nav-group">
<h4>Decisions</h4>
<ul>
<li><a href="../adr/0007-ui-stack-radix-cssmodules.html"><span class="nav-num">ADR-7</span>UI Stack — Radix</a></li>
<li><a href="../adr/0008-mtp-web-folder-structure.html"><span class="nav-num">ADR-8</span>mtp-web Folder Structure</a></li>
<li><a href="../adr/0009-hr-payroll-three-aggregates.html"><span class="nav-num">ADR-9</span>HR-Payroll — 3 Aggregates, 1 Module</a></li>
<li><a href="../adr/0024-period-close-model.html"><span class="nav-num">ADR-24</span>Period Close Model</a></li>
<li><a href="../adr/0026-approval-framework.html"><span class="nav-num">ADR-26</span>Approval Framework</a></li>
<li><a href="../adr/0027-cheque-lifecycle.html"><span class="nav-num">ADR-27</span>Cheque Lifecycle</a></li>
<li><a href="../adr/0028-posting-bridge.html"><span class="nav-num">ADR-28</span>Posting Bridge</a></li>
<li><a href="../adr/0029-receipt-deposit.html"><span class="nav-num">ADR-29</span>ReceiptDeposit</a></li>
<li><a href="../adr/0030-advance-settlement.html"><span class="nav-num">ADR-30</span>Advance & Settlement</a></li>
</ul>
</div>
</nav>
</aside>
<main>
<span class="eyebrow">12 · Build Plan</span>
<h1>Build plan — Accounting + HR/Payroll screen inventory</h1>
<p class="lede">
Screen-level work breakdown for the first two MTP modules. Each row has a stable code,
a one-line description, the legacy cluster it maps to, the mockup file (if any), a status
badge, and a build tier. MTP is a <strong>superset</strong> of GNUMS — this list
includes both the screens that port from existing mockups <em>and</em> the new screens
that close documented legacy gaps. Total: <strong>80 screens</strong> (50 Accounting,
30 HR/Payroll). Build order at the bottom; pick a Tier 1 row to start.
</p>
<h2>1. Tier model + status legend</h2>
<p>
Tiers drive how a screen reaches code. They are <strong>not</strong> priority —
they describe the <em>path</em> a screen takes to React, not how important it is.
</p>
<table>
<thead><tr><th>Tier</th><th>Path to code</th><th>When to use</th></tr></thead>
<tbody>
<tr><td><span class="badge b-tier1">T1</span></td><td>Direct port: mockup → React</td><td>Mockup exists in <code>mockups/</code> and the screen doesn't depend on an unresolved decision in <code>scope.html</code> § 10.</td></tr>
<tr><td><span class="badge b-tier2">T2</span></td><td>ADR first → mockup → React</td><td>Touches one of the open decisions: period close model, posting bridge architecture, approval framework, e-Invoice IRN sync model, GST v1 scope, etc.</td></tr>
<tr><td><span class="badge b-tier3">T3</span></td><td>HTML mockup first → React</td><td>No mockup yet and the screen is new MTP scope (legacy gap). Mock cheaply in <code>mockups/*.html</code> before TSX.</td></tr>
</tbody>
</table>
<table style="margin-top: 0.8rem;">
<thead><tr><th>Status</th><th>Meaning</th></tr></thead>
<tbody>
<tr><td><span class="badge b-built">BUILT</span></td><td>Full-fidelity port in <code>mtp-web/apps/web/src/pages/</code> — every section of the mockup is rendered. See <code>memory/feedback_full_fidelity_ports.md</code>.</td></tr>
<tr><td><span class="badge b-partial">PARTIAL</span></td><td>Page exists in <code>mtp-web</code> as a stub or scaffold — renders something, but the corresponding <code>mockups/*.html</code> spec is not fully implemented. Queued for full-fidelity rework.</td></tr>
<tr><td><span class="badge b-ready">READY</span></td><td>Mockup exists and ready to port to React.</td></tr>
<tr><td><span class="badge b-design">DESIGN</span></td><td>Documented need (in a cluster or scope § 10) but no mockup yet. Needs a mockup before React.</td></tr>
<tr><td><span class="badge b-adr">ADR</span></td><td>Decision pending in scope § 10. Resolve via ADR before designing.</td></tr>
<tr><td><span class="badge b-new">NEW</span></td><td>Marker that the screen has <em>no legacy equivalent</em>. Pure MTP scope.</td></tr>
</tbody>
</table>
<h2>1b. Definition of done per screen ("in totality")</h2>
<p>
<code>BUILT</code> is binary: a screen is either done <em>in totality</em> or it is not.
"Full-fidelity" means <strong>interactive</strong> fidelity (every control wired), not just
visual. The bar — confirmed by the user 2026-05-23 (<em>"all forms, all tabs also"</em>,
<em>"in its totality"</em>): EVERY section, EVERY tab's <em>real</em> content (no placeholder
panels), and ALL forms/drawers/dialogs complete and wired. See
<code>memory/feedback_full_fidelity_ports.md</code> + <code>feedback_interactive_fidelity.md</code>.
</p>
<table style="margin-top: 0.6rem;">
<thead><tr><th>#</th><th>Step</th><th>Repo</th><th>What "done" looks like</th></tr></thead>
<tbody>
<tr><td>1</td><td>Design</td><td>mtp-docs</td><td><code>mockups/<feature>.html</code> at house-style fidelity. For a <span class="badge b-tier2">T2</span> screen, the blocking ADR is written + accepted <em>first</em>.</td></tr>
<tr><td>2</td><td>Data layer</td><td>mtp-web</td><td><code>data/<x>.ts</code> (TanStack Query hook + <code>financeKeys</code> leaf) and <code>mocks/<x>.mock.ts</code> registered in <code>mocks/handlers.ts</code>. Filtering = POST (<code>apiSearch</code>), never GET params.</td></tr>
<tr><td>3</td><td>Page</td><td>mtp-web</td><td>Full visual + interactive fidelity: all sections, all tabs (real content), all forms, side panels, skeletons, per-route error boundary. Layout from <code>@mtp/ui</code> primitives; controls from the form field kit; no raw inputs in pages.</td></tr>
<tr><td>4</td><td>Wire-up</td><td>mtp-web</td><td>Lazy route in <code>App.tsx</code>; drop <code>missing: true</code> in <code>nav.ts</code>.</td></tr>
<tr><td>5</td><td>Verify</td><td>mtp-web</td><td><code>pnpm verify</code> green AND browser-walked via chrome-devtools: every tab switches, every form submits, every button acts.</td></tr>
<tr><td>6</td><td>Docs</td><td>mtp-docs</td><td>Flip this row's status to <span class="badge b-built">BUILT</span>; sync memory/ADR if a new rule emerged.</td></tr>
<tr><td>7</td><td>Ship</td><td>both</td><td>Commit + push <strong>both</strong> repos (<code>mtp-web</code> and <code>mtp-docs</code>).</td></tr>
</tbody>
</table>
<h2>2. Accounting screens (<code>FIN-*</code>)</h2>
<p>
Code prefix <code>FIN-</code> matches the AppShell module label “Finance”. Categories
mirror the existing sidebar nav (Workflow / Books / R&P / Banking / Period / Reports /
TDS / GST / Setup / Dashboards). Cluster column references
<code>gnums/accounting/clusters/cluster-NN-*.md</code>.
</p>
<h3>2.1 Workflow (3)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-WF-VCH-ENT</td><td>Voucher Entry</td><td>Keyboard-first double-entry. Deep-linkable voucher-type tabs (Contra/Payment/Receipt/Journal → CV/PV/RV/JV), live Dr/Cr balance bar, line grid + auto TDS/GST preview rows, narration, wired form actions, Voucher Info side panel.</td><td class="cluster">C02</td><td>accounting-voucher</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-WF-VCH-APR</td><td>Voucher Approvals</td><td>Approver inbox — 6-KPI strip, tab nav, filter pills, bulk bar, queue with aging bands, side detail with approval-chain viz + working tabs (Lines / Attachments / Comments / Audit / Linked Refs) + action bar.</td><td class="cluster">C07</td><td>accounting-approvals</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-WF-VCH-DBK</td><td>Day Book</td><td>Chronological journal across all voucher types for a date range. Day-grouped table + summary strip + voucher-preview side panel.</td><td class="cluster">C02</td><td>accounting-daybook</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
</tbody>
</table>
<h3>2.2 Books / Masters (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-BK-COA</td><td>Chart of Accounts</td><td>Tree of groups + accounts with view toggle (Tree / Flat / By Type), balances + status, side panel with Detail / Ledger / Recent / Audit tabs and Verification block.</td><td class="cluster">C01</td><td>accounting-coa</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-BK-LDG</td><td>Account Ledger</td><td>Running-balance ledger with period chips + view toggle, summary strip, month grouping, opening/closing rows; side voucher preview with working tabs (Voucher / Reconcile / Source / Audit).</td><td class="cluster">C02</td><td>accounting-ledger</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-BK-CC</td><td>Cost Centre Master</td><td>Hierarchical cost-centre tree + projects (left), Overview canvas (summary, CC×Spend bars, Project×Spend donut, Month×Budget bars, distribution template, leak finder, legacy rules), selected-CC detail (right). Three-pane (<code><ThreePane></code>); chart palette tokens added.</td><td class="cluster">C04</td><td>accounting-costcentre</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-BK-CC-BUD</td><td>Cost Centre Budget</td><td>Centre×Project budget pairs + 12-month grid (Σ=envelope) / Year % template; over-budget policy (off / warn / block) that gates the <a href="../adr/0028-posting-bridge.html">posting bridge</a>; actuals on-the-fly. <span class="badge b-new">NEW</span></td><td class="cluster">C04</td><td>accounting-ccbudget</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>2.3 Receivables / Payables (12)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-RP-SI</td><td>Sales Register</td><td>Wide 13-col GST output register (party+GSTIN / POS / HSN / taxable / CGST / SGST / IGST / total / GSTR-1 status) in month bands + grand total; GST tabs, 6-KPI strip, invoice-detail side panel with GST breakdown.</td><td class="cluster">C09</td><td>accounting-salesregister</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RP-PI</td><td>Purchase Invoice</td><td>Vendor bill capture + verification + payment + advance adjustment. TDS / GST split pre-calculated.</td><td class="cluster">C08</td><td>accounting-purchaseinvoice</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-OUTST</td><td>Outstanding Bills</td><td>13-col bill queue in age bands (Overdue/Due-this-week/Current) with flags + per-row actions; 6-KPI strip, tabs + bulk bar, bill-detail side panel (summary / payments / comments / contact).</td><td class="cluster">C08</td><td>accounting-outstanding</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RP-AGE</td><td>Aging Report</td><td>12-col bucketed AR/AP (0-30…180+) grouped into party bands with flags + per-row actions; 6-KPI strip (DSO/DPO), tabs, party-drilldown side panel (Invoices / Receipts / Notes).</td><td class="cluster">A</td><td>accounting-aging</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RP-REF</td><td>Refund Order</td><td>Student fee-refund <em>payment</em> side: approved-and-unpaid queue + make-payment drawer (Cash/Cheque/Online); fee-head config gate; online registers <code>SubjectType='Refund'</code> (<a href="../adr/0026-approval-framework.html">ADR-0026</a>) → bank payment via <a href="../adr/0028-posting-bridge.html">bridge</a>.</td><td class="cluster">C10</td><td>accounting-refund</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-CASH</td><td>Cash Advance</td><td>Petty cash to a person against a forthcoming expense: APV (advance) / ARV (settlement), derived outstanding, auto-lock, outstanding register. Resolved by <a href="../adr/0030-advance-settlement.html">ADR-0030</a> (advance→settlement); posts via <a href="../adr/0028-posting-bridge.html">bridge</a>.</td><td class="cluster">C11</td><td>accounting-cashadvance</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-FT</td><td>Fund Transfer</td><td>Inter-bank (HDFC → SBI) + inter-company (Trust → School) transfers, batch mode. AddMany header + destination grid; (Type×Mode) → voucher class; Σ-equality; cross-company bridge legs (<a href="../adr/0028-posting-bridge.html">ADR-0028</a>); reverse-only.</td><td class="cluster">C12</td><td>accounting-fundtransfer</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-FCB</td><td>Fee Collection Bank</td><td>Heart of school accounting — sweep per-student receipts into a deposit slip + post one consolidated voucher. Three-pane (filter rail / unswept-receipt grid / slip builder); 3 posting variants; verification handshake; reverse-and-repost. Resolved by <a href="../adr/0029-receipt-deposit.html">ADR-0029</a> + <a href="../adr/0028-posting-bridge.html">ADR-0028</a>.</td><td class="cluster">C13</td><td>accounting-feecollection</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
<tr><td class="code">FIN-RP-OPD</td><td>OPD Receipt Collection</td><td>Hospital-tenant variant of Fee Collection — same <a href="../adr/0029-receipt-deposit.html">ReceiptDeposit</a> aggregate, source = OPD (HOP receipts + registration fee), behind a per-tenant feature flag.</td><td class="cluster">C14</td><td>accounting-opd</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-EXP</td><td>Expense Entry</td><td>Petty-cash expense (Category›SubCategory cascade + bill upload) + multi-CC distribution split-editor (Σ%=100) + Category master. Posts via <a href="../adr/0028-posting-bridge.html">bridge</a>.</td><td class="cluster">C17</td><td>accounting-expense</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-REM</td><td>Expert / PhD Remuneration</td><td>Pay external paper-setters / evaluators / viva experts. Pay-many queue, per-session rate × count, 194J TDS (pre-computed) + lower-cert; registers <code>SubjectType='Remuneration'</code> (<a href="../adr/0026-approval-framework.html">ADR-0026</a>) → <a href="../adr/0028-posting-bridge.html">bridge</a>.</td><td class="cluster">C18</td><td>accounting-remuneration</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-RP-TRP</td><td>Trip / Travel</td><td>Staff travel lifecycle console (5 stages: Trips / Advances / Expenses / Reports / Dashboard): multi-leg trip → advance (FX snapshot) → expense (FX inherited) → report → settlement. Resolved by <a href="../adr/0030-advance-settlement.html">ADR-0030</a>; posts via <a href="../adr/0028-posting-bridge.html">bridge</a>.</td><td class="cluster">C19</td><td>accounting-trip</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>2.4 Banking (8)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-BNK-MST</td><td>Bank Accounts Master</td><td>Bank account setup + multi-signatory + opening balance + status.</td><td class="cluster">C05</td><td>accounting-bankaccounts</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-BNK-CHQ</td><td>Cheque Lifecycle</td><td>Cheque-book master + issuance + leaf state machine (Blank / PostDated / Issued / Presented / Cleared / Bounced / Stopped / Cancelled) + cancellation + print template. Three-pane (books / leaf register / leaf detail). Resolved by <a href="../adr/0027-cheque-lifecycle.html">ADR-0027</a>. <span class="badge b-new">NEW</span></td><td class="cluster">C05</td><td>accounting-cheque</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
<tr><td class="code">FIN-BNK-OBP</td><td>Online Bank Payment</td><td>NEFT / RTGS / IMPS via bank-corporate-API adapter. Attempt batch + inquiry polling + UTR write-back + pre-flight alerts + config gate + PennyDrop. HDFC CBX live; ICICI / Axis / SBI / Yes / Kotak adapter framework.</td><td class="cluster">C06</td><td>accounting-onlinepayment</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-BNK-REC</td><td>Bank Reconciliation</td><td>Reconciliation workspace: BRS walk + match-progress + smart suggestions + bank|books pane-grid + match-compare detail (Compare / History / Rules). Two-pane (<code><Sidebar></code>); Statement / Books tabs render single panes.</td><td class="cluster">C05</td><td>accounting-bankrecon</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-BNK-IMP</td><td>Bank Statement Import</td><td>Import camt.053 / MT940 / OFX + per-Indian-bank CSV variants. 4-step stepper (Source / Map columns / Preview & dedup / Import); feeds the Statement Matcher. <span class="badge b-new">NEW</span></td><td class="cluster">C05</td><td>accounting-statementimport</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-BNK-MATCH</td><td>Statement Matcher</td><td>Auto-match on (amount + UTR + date), surface suggested + unmatched lines; advances cheque leaves Issued→Cleared/Bounced (<a href="../adr/0027-cheque-lifecycle.html">ADR-0027</a>) + writes UTR back; feeds Bank Reconciliation. <span class="badge b-new">NEW</span></td><td class="cluster">C05</td><td>accounting-statementmatcher</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-BNK-PGW</td><td>Inbound PG Console</td><td>Razorpay / PayU / SBIePay / CCAvenue webhooks + reconciliation. Three-pane (provider / webhook log / settlement tie-out vs bank UTR). Inbound counterpart to FIN-BNK-OBP.</td><td class="cluster">B</td><td>accounting-pgconsole</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-BNK-SIG</td><td>Signatory Master</td><td>Multi-signatory per bank account with order + joint-signing rule + threshold escalation; SignatoryGroups consumed by <a href="../adr/0026-approval-framework.html">ADR-0026</a> QuorumOf steps + ADR-0027 cheque issue. Replaces legacy single AuthorizedPersonName string. <span class="badge b-new">NEW</span></td><td class="cluster">C05</td><td>accounting-signatory</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>2.5 Period & FY (3) — new MTP scope</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-PRD-FY</td><td>FY + Period Setup</td><td>FY master with daterange overlap constraint; auto-generate 4 quarters + 12 months on FY creation. <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-perioddashboard</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
<tr><td class="code">FIN-PRD-DASH</td><td>Period Dashboard</td><td>Period grid (Draft / Open / SoftClosed / HardClosed / Archived) with month + quarter + year granularity. <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-perioddashboard</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
<tr><td class="code">FIN-PRD-CLS</td><td>Period Close</td><td>Soft-close confirm + hard-close confirm + reopen + lock-override audit. <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-perioddashboard</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
</tbody>
</table>
<h3>2.6 Statements & Reports (5)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-RPT-TB</td><td>Trial Balance</td><td>10-col statement (OB/Period/Closing Dr-Cr) across Assets/Liabilities/Income/Expenses with groups, sub-totals, grand total; 6-KPI strip, period + mode toggle, reconciliation card (5 checks), account-drilldown side panel. <span class="badge b-new">NEW</span></td><td class="cluster">A</td><td>accounting-trialbalance</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RPT-BS</td><td>Balance Sheet</td><td>Schedule-III Part I, 4-col (Particulars / Current / Prior / Var%), numbered groups, sub-totals + section totals, inline note tables (N13 tangible, N19 receivables ageing), signoff block, note-preview side panel. <span class="badge b-new">NEW</span></td><td class="cluster">A</td><td>accounting-bs</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RPT-PL</td><td>Profit & Loss</td><td>Schedule-III Part II, Roman I–XII lines with expandable schedules, sub-rows, totals, EPS, signoff; 5-KPI strip; schedule-preview side panel (Lines / By CC / Trend). <span class="badge b-new">NEW</span></td><td class="cluster">A</td><td>accounting-pl</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RPT-CF</td><td>Cash Flow</td><td>AS 3 / Ind AS 7 indirect method — A/B/C activities with non-cash + working-capital adjustments, net change (D), opening (E), closing (F); 6-KPI strip, cash & bank reconciliation card, cross-tie side panel. <span class="badge b-new">NEW</span></td><td class="cluster">A</td><td>accounting-cashflow</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-RPT-CC</td><td>Cost Centre Report</td><td>Project × Centre Budget-vs-Actual matrix (utilisation bars, variance, status, expandable account breakdown) + Leak-Finder & Distribution-Health callouts + 14 legacy validation messages; URL-driven drill panel (Account / Month / Vendor / Voucher). Two-pane (<code><Sidebar></code>).</td><td class="cluster">C04</td><td>accounting-ccreport</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
</tbody>
</table>
<h3>2.7 TDS Compliance (5)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-TDS-MST</td><td>TDS Section Master</td><td>Section taxonomy (194C/194J/194I/194H/...) + PAN-section linkage + threshold (per-bill / FY aggregate / per-PAN).</td><td class="cluster">C15</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-TDS-LC</td><td>Lower TDS Certificate</td><td>Multi-cert per vendor with date validity + pro-rata over partial period. <span class="badge b-new">NEW</span></td><td class="cluster">C15</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-TDS-DEP</td><td>Monthly Deposit + Challan</td><td>Monthly TDS aggregation + challan number + TAN; deductee mapping.</td><td class="cluster">C15</td><td>accounting-tds</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-TDS-26Q</td><td>Form 26Q Builder</td><td>Per-quarter NSDL fixed-width TXT + Form 27A challan summary. <span class="badge b-new">NEW</span></td><td class="cluster">C15</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-TDS-16A</td><td>Form 16A Generator</td><td>Per-quarter PDF per deductee via QuestPDF. <span class="badge b-new">NEW</span></td><td class="cluster">C15</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>2.8 GST Compliance (7)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-GST-MST</td><td>GST Master (Rate / HSN / POS)</td><td>Unified master for rate / HSN / place-of-supply / RCM flag. Replaces legacy single-table <code>ACC_GSTPCT</code>. Three-pane (section rail + GSTR-1 grid + IRN detail) via <code><ThreePane></code> (ADR-0010). <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>accounting-gst</td><td class="status"><span class="badge b-built">BUILT</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">FIN-GST-ITC</td><td>Input Tax Credit Ledger</td><td>ITC accrual + utilisation + reversal per GSTIN. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-GST-1</td><td>GSTR-1 Builder</td><td>Outward-supply return preview + JSON export to GSTN / GSP. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-GST-3B</td><td>GSTR-3B Builder</td><td>Monthly summary return preview + auto-populate from ledger + JSON export. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-GST-9</td><td>GSTR-9 Builder</td><td>Annual return preview + reconciliation to books. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-GST-IRN</td><td>e-Invoice IRN Console</td><td>State machine: Draft / IRNRequested / IRNAssigned / IRNCancelled. Mandatory for AATO > ₹5 Cr B2B. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-adr">ADR</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
<tr><td class="code">FIN-GST-EWB</td><td>e-Way Bill Console</td><td>e-Way bill generation + tracking + cancellation; vehicle / transporter detail. <span class="badge b-new">NEW</span></td><td class="cluster">C16</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>2.9 Setup (3)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">FIN-CFG-CMP</td><td>Company / Branch + Multi-GSTIN</td><td>Multi-company unit + per-state GSTIN; inter-company bridge accounts; adds BaseCurrency / Locale / FY-start (legacy gap #3). Master + tabs (Profile / GST / Bridge / Branches / Audit). <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-company</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-CFG-CCY</td><td>Currency + FX Rates</td><td>Base currency per tenant / company + FX-rate snapshot model (captured as-of a date, frozen; postings use latest snapshot ≤ posting date). <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-currency</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">FIN-CFG-APPR</td><td>Approval Framework Editor</td><td>Generic <code>IApprovalWorkflow<TSubject></code> editor (workflow list / step-chain / route simulation); replaces per-cluster <code>SEC_ApprovalStructure</code> copy-paste. Resolved by <a href="../adr/0026-approval-framework.html">ADR-0026</a>. <span class="badge b-new">NEW</span></td><td class="cluster">C</td><td>accounting-approvalframework</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier2">T2</span></td></tr>
</tbody>
</table>
<p style="margin-top: 0.6rem;">
<em>Accounting total: 3 + 4 + 12 + 8 + 3 + 5 + 5 + 7 + 3 = <strong>50 screens</strong>.</em>
</p>
<h2>3. HR/Payroll screens (<code>HCM-*</code>)</h2>
<p>
Code prefix <code>HCM-</code> matches the AppShell module label “Human Capital”.
Cluster column references <code>gnums/hr-payroll/clusters/cluster-NN-*.md</code>.
ADR-0009 fixes the three aggregates (Staff Identity / Salary Engine / Calendar & Punches).
</p>
<h3>3.1 Lifecycle (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-LC-ON</td><td>Employee Onboarding</td><td>New-hire capture: identity bridge to STF_Staff, role / department / branch, joining date, salary structure pick.</td><td class="cluster">C01</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-LC-RES</td><td>Resignation Workflow</td><td>Resignation submit + notice-period flow + clearance approvals + relieving letter.</td><td class="cluster">C12</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-LC-BUY</td><td>Buy-out Application</td><td>Notice-period buy-out application + approval.</td><td class="cluster">C12</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-LC-FF</td><td>Full & Final Settlement</td><td>F&F calc: pending salary, leave encashment, gratuity, deductions, net payable + ledger posting.</td><td class="cluster">C12</td><td>hr-ff-settlement</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
</tbody>
</table>
<h3>3.2 Calendar & Attendance (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-AT-CAL</td><td>Working Calendar + Timing</td><td>WorkingDate + StaffWiseCollegeTiming + restricted holidays + payroll period.</td><td class="cluster">C02</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-AT-BIO</td><td>Biometric Punches</td><td>BiometricPunch import (Davda OEM adapter) + InOut derivation + MissedPunch register.</td><td class="cluster">C03</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-AT-DAY</td><td>Daily / Monthly Attendance</td><td>Per-staff attendance grid; status icons; punch detail. Posting + extra-shift + previous-month pending days.</td><td class="cluster">C04</td><td>hr-attendance</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-AT-PAY-DAYS</td><td>Pay-Days Calculation</td><td>Inputs: attendance + leave + extra-shift → pay-days output that feeds salary engine.</td><td class="cluster">C04</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.3 Leave (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-LV-MST</td><td>Leave Type / Policy Master</td><td>9 system codes + LeaveCategory + ExclusionRules + UserWise/EmployeeTypeWise/InstituteLeavePolicy.</td><td class="cluster">C05</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-LV-ALC</td><td>Leave Allocation</td><td>Annual allocation (joining-month / FY / calendar-year proration) + carry-forward.</td><td class="cluster">C05</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-LV-APP</td><td>Leave Application</td><td>Apply + multi-level approval + LeaveApplicationTran + half-day / hourly.</td><td class="cluster">C06</td><td>hr-leave</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-LV-SHT</td><td>Short Leave / On-Call</td><td>Short-leave + on-call-duty application + approval.</td><td class="cluster">C06</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.4 Salary Structure (3)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-SL-HD</td><td>Salary Heads + Slabs</td><td>SalaryHead taxonomy + SalaryHeadWiseRange (slab tables) + PayBand / PayCommission.</td><td class="cluster">C07</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-SL-STR</td><td>Salary Structure Designer</td><td>Template editor + text-formula lines + version + apply-to-staff. Replaces raw nvarchar(300) formula.</td><td class="cluster">C07</td><td>hr-salary-structure-designer</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-SL-INC</td><td>Staff Increment</td><td>Per-staff increment + pay-commission jump + retro arrears.</td><td class="cluster">C09</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.5 Salary Generation (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-SL-GEN</td><td>Salary Generation Pipeline</td><td>SalaryGenerationStep state machine; Multiple-cycle support; reproduces 51 KB <code>UPSERTSalary</code>.</td><td class="cluster">C10</td><td>hr-salary-generation</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-SL-APR</td><td>Salary Approval</td><td>Approver workspace: queue + per-staff drill + bulk approve / reject.</td><td class="cluster">C10</td><td>hr-approval-flow</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-SL-PSL</td><td>Payslip (Employee Self-Service)</td><td>Per-month payslip; download PDF; YTD summary.</td><td class="cluster">C10</td><td>hr-payslip-employee</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
<tr><td class="code">HCM-SL-RIT</td><td>Return-of-Income Builder</td><td>Reproduces 57 KB <code>SelectForReturnIncome</code>. Per-staff annual tax computation + Form 16 input.</td><td class="cluster">C10</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.6 Other Salary + Loans (3)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-OS-OTH</td><td>Other Salary Items</td><td>Ad-hoc allowances / arrears / recoveries that flow into a month's pay.</td><td class="cluster">C11</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-OS-LOAN</td><td>Loan / Advance</td><td>Loan issuance + EMI schedule + monthly auto-deduct + closure.</td><td class="cluster">C11</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-OS-VAS</td><td>Value-Added Services / Deposit</td><td>StaffValueAddedService (mess / hostel / utility) + StaffWiseSecurityDeposit.</td><td class="cluster">C11</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.7 Manpower + EOTM (2)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-MP-REQ</td><td>Manpower Requisition</td><td>Department-wise hiring request + max-limit check + approval → recruitment.</td><td class="cluster">C12</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-MP-EOTM</td><td>Employee of the Month</td><td>Nomination + voting + recognition.</td><td class="cluster">C12</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.8 Training (1)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-TR</td><td>Training Console</td><td>Schedule + Topic / Tutor / Attendance / Registration / Test. HRT cluster.</td><td class="cluster">C13</td><td>hr-training</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
</tbody>
</table>
<h3>3.9 Statutory (4)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-CMP-EPF</td><td>EPF Challan + ECR</td><td>EPF rate config + monthly challan + ECR file. Replaces broken <code>EPF.cs</code>. <span class="badge b-new">NEW</span></td><td class="cluster">C08</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-CMP-ESI</td><td>ESI Return</td><td>ESI rate config + half-yearly return + challan. <span class="badge b-new">NEW</span></td><td class="cluster">C08</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-CMP-PT</td><td>Professional Tax</td><td>State-wise PT slabs + monthly / annual return. <span class="badge b-new">NEW</span></td><td class="cluster">C08</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
<tr><td class="code">HCM-CMP-24Q</td><td>Form 24Q + Form 16</td><td>Per-quarter salary-TDS return + Form 16 generation. <span class="badge b-new">NEW</span></td><td class="cluster">C08</td><td>—</td><td class="status"><span class="badge b-design">DESIGN</span></td><td class="tier"><span class="badge b-tier3">T3</span></td></tr>
</tbody>
</table>
<h3>3.10 Setup (1)</h3>
<table class="screens">
<thead><tr><th>Code</th><th>Name</th><th>Description</th><th>Cluster</th><th>Mockup</th><th>Status</th><th>Tier</th></tr></thead>
<tbody>
<tr><td class="code">HCM-CFG</td><td>HR / Payroll Configuration</td><td>Replaces 141-col legacy CFG with HRC_* next-gen fields (HRConfig + PayRollConfig + LeaveCycle + ApprovalFlow).</td><td class="cluster">C</td><td>hr-tenant-config</td><td class="status"><span class="badge b-ready">READY</span></td><td class="tier"><span class="badge b-tier1">T1</span></td></tr>
</tbody>
</table>
<p style="margin-top: 0.6rem;">
<em>HR/Payroll total: 4 + 4 + 4 + 3 + 4 + 3 + 2 + 1 + 4 + 1 = <strong>30 screens</strong>.</em>
</p>
<h2>4. Summary counts + build order</h2>
<table class="summary-table">
<thead><tr><th>Module</th><th>Built</th><th>Partial</th><th>Ready</th><th>Design</th><th>ADR</th><th>Total</th></tr></thead>
<tbody>
<tr><td>Accounting (<code>FIN-*</code>)</td><td>22</td><td>0</td><td>18</td><td>9</td><td>1</td><td><strong>50</strong></td></tr>
<tr><td>HR/Payroll (<code>HCM-*</code>)</td><td>0</td><td>0</td><td>9</td><td>21</td><td>0</td><td><strong>30</strong></td></tr>
<tr><td><strong>Grand total</strong></td><td><strong>22</strong></td><td><strong>0</strong></td><td><strong>27</strong></td><td><strong>30</strong></td><td><strong>1</strong></td><td><strong>80</strong></td></tr>
</tbody>
</table>
<div class="callout" style="margin-top: 0.6rem;">
<strong>Status reset 2026-05-23.</strong> Five screens previously over-marked BUILT were
reclassified PARTIAL, then re-worked to genuine full fidelity (interactive: Radix tabs that
switch, buttons that navigate/toast, sticky side panels). Infrastructure added this session:
Radix-backed <code>Tabs</code>, <code>Toast</code> + <code>useToast</code>, <code>Tooltip</code>,
sticky <code>Sidebar</code> primitive, <strong>React Router</strong> (deep-linkable URLs), and a
stylelint guard against collapse-prone grids. See
<code>memory/feedback_full_fidelity_ports.md</code> + <code>feedback_interactive_fidelity.md</code>.
</div>
<p>
<strong>Active queue (full-fidelity, one at a time).</strong>
PARTIAL reworks done; now porting READY screens, then HR.
</p>
<ol>
<li><strong>PARTIAL → BUILT (5/5 done ✓):</strong>
<s><code>FIN-WF-VCH-DBK</code> Day Book</s> ·
<s><code>FIN-BK-COA</code> Chart of Accounts</s> ·
<s><code>FIN-BK-LDG</code> Account Ledger</s> ·
<s><code>FIN-WF-VCH-APR</code> Voucher Approvals</s> ·
<s><code>FIN-WF-VCH-ENT</code> Voucher Entry</s>. All 5 full-fidelity + interactive.
</li>
<li><strong>Then READY → BUILT (10 ports):</strong>
<code>FIN-BK-CC</code> + <code>FIN-RPT-CC</code> Cost Centre Master & Report →
<code>FIN-RPT-TB</code> → <code>FIN-RPT-BS</code> → <code>FIN-RPT-PL</code> → <code>FIN-RPT-CF</code> Schedule-III statements →
<code>FIN-BNK-REC</code> Bank Reconciliation →
<code>FIN-RP-OUTST</code> + <code>FIN-RP-AGE</code> Outstanding + Aging →
<code>FIN-RP-SI</code> Sales Register →
<code>FIN-TDS-DEP</code> Monthly TDS Deposit →
<code>FIN-GST-MST</code> GST Master.
</li>
<li><strong>Then HR Tier-1 (8 ports):</strong>
<code>HCM-AT-DAY</code> → <code>HCM-LV-APP</code> → <code>HCM-SL-STR</code> → <code>HCM-SL-GEN</code> → <code>HCM-SL-APR</code> → <code>HCM-SL-PSL</code> → <code>HCM-LC-FF</code> → <code>HCM-TR</code> → <code>HCM-CFG</code>.
Stay within Accounting until the 15 PARTIAL+READY ports are done, then cross to HR.
</li>
<li><strong>New READY (designed 2026-05-24, awaiting React port):</strong>
Setup — <code>FIN-CFG-APPR</code> Approval Framework, <code>FIN-CFG-CMP</code> Company / Multi-GSTIN, <code>FIN-CFG-CCY</code> Currency & FX.
Banking — <code>FIN-BNK-SIG</code> Signatory, <code>FIN-BNK-CHQ</code> Cheque Lifecycle, <code>FIN-BNK-OBP</code> Online Bank Payment, <code>FIN-BNK-IMP</code> Statement Import, <code>FIN-BNK-MATCH</code> Statement Matcher, <code>FIN-BNK-PGW</code> Inbound PG Console.
Backed by <a href="../adr/0026-approval-framework.html">ADR-0026</a> + <a href="../adr/0027-cheque-lifecycle.html">ADR-0027</a>.
</li>
</ol>
<p>
<strong>Tier 2 work — ADR <em>before</em> designing.</strong>
Resolved so far (ADR accepted → screen now READY/BUILT):
</p>
<ul>
<li><strong><a href="../adr/0024-period-close-model.html">ADR-0024</a> — Period & FY close model</strong> <span class="badge b-built">done</span>: resolved period close / FY model / posting-bridge gate. Unblocked <code>FIN-PRD-FY</code> / <code>FIN-PRD-DASH</code> / <code>FIN-PRD-CLS</code> (BUILT).</li>
<li><strong><a href="../adr/0026-approval-framework.html">ADR-0026</a> — Approval framework</strong> <span class="badge b-built">done</span>: generic <code>IApprovalWorkflow<TSubject></code> over a polymorphic subject (replaces <code>SEC_ApprovalStructure</code> copy-paste). Unblocked <code>FIN-CFG-APPR</code> (READY); retroactively refactors <code>FIN-WF-VCH-APR</code>; underpins cheque / online-payment / signatory joint-signing.</li>
<li><strong><a href="../adr/0027-cheque-lifecycle.html">ADR-0027</a> — Cheque lifecycle</strong> <span class="badge b-built">done</span>: leaf state machine (Blank→PostDated/Issued→Presented→Cleared, +Bounced/Stopped/Cancelled); clearance from statement import; QuestPDF print. Unblocked <code>FIN-BNK-CHQ</code> (READY).</li>
<li><strong><a href="../adr/0028-posting-bridge.html">ADR-0028</a> — Posting bridge</strong> <span class="badge b-built">done</span>: one <code>IVoucherPoster</code> engine + per-source adapter (replaces ~26 legacy <code>InsertBy*ID</code> SPs); immutable vouchers (reverse-and-repost), per-company balance, cross-company bridge legs, TDS/GST pre-computed. Unblocks the whole R&P write-side.</li>
<li><strong><a href="../adr/0029-receipt-deposit.html">ADR-0029</a> — ReceiptDeposit</strong> <span class="badge b-built">done</span>: folds Fee Collection + OPD into one aggregate + pluggable <code>IReceiptSource</code>; 3 posting variants; verification handshake; one-deposit-per-receipt; reconcile carry-forward. Unblocked <code>FIN-RP-FCB</code> + <code>FIN-RP-OPD</code> (READY).</li>
<li><strong><a href="../adr/0030-advance-settlement.html">ADR-0030</a> — Advance & Settlement</strong> <span class="badge b-built">done</span>: shared advance→settlement lifecycle (derived outstanding, auto-lock/unlock, settlement = CR voucher) for two aggregates (CashAdvance + TripAdvance); FX snapshot-on-advance / inherit-on-expense; gap-free per-FY numbering. Unblocked <code>FIN-RP-CASH</code> + <code>FIN-RP-TRP</code> (READY).</li>
</ul>
<p>Still open (Tier-2 ADR pending): <strong>e-Invoice IRN sync model</strong> (unblocks <code>FIN-GST-IRN</code>).</p>
<p>
<strong>Tier 3 work (49 screens needing mockups).</strong> Sketch each as an HTML mockup
in <code>mtp-docs/mockups/</code> following the existing Zoho-style chrome before porting to
React. Mockups should match the AppShell nav category so the page lands in its natural
home in <code>mtp-web/apps/web/src/pages/</code>.
</p>
<h2>5. Process notes</h2>
<ul>
<li><strong>Code stability.</strong> Once a screen code is committed here, it is the stable
reference in ADRs, commits, and PRs. Renaming a code is a documented change in this file.</li>
<li><strong>Codes follow the AppShell nav.</strong> When the nav category changes, the code
changes too — e.g. if Cost Centre moves out of Books into its own group, that's a
code change. The nav is the canonical taxonomy.</li>
<li><strong>Tier is not priority.</strong> A Tier-3 screen can be more important than a Tier-1.
Tier is “how it reaches code”, build order in § 4 is “when”.</li>
<li><strong>Mockup-first for Tier 3.</strong> Designing in TSX before there is a mockup
means iterating through dev-server + screenshot cycles for every change. Mockup HTML is
cheap to iterate on and is the existing pattern.</li>
<li><strong>Per-tenant variation</strong> (hard rule #12) means most of these screens have
tenant-scoped flow / rules / fields / labels via the rule engine (page 04) + UI schema
(page 07). Build the canonical version first, layer tenant variation in via config.</li>
<li><strong>Lint guard (<code>mtp-web/.stylelintrc.json</code>)</strong> enforces use of
<code><Sidebar></code> / <code><SplitPane></code> / <code><Stack></code>
for page-level layout. Every new page in § 4 inherits that.</li>
</ul>
<div class="callout">
<strong>22 accounting screens BUILT; 18 more now READY</strong> (designed 2026-05-24 —
the Setup batch <code>FIN-CFG-APPR</code>/<code>FIN-CFG-CMP</code>/<code>FIN-CFG-CCY</code>,
the Banking batch <code>FIN-BNK-SIG</code>/<code>FIN-BNK-CHQ</code>/<code>FIN-BNK-OBP</code>/<code>FIN-BNK-IMP</code>/<code>FIN-BNK-MATCH</code>/<code>FIN-BNK-PGW</code>, and the
complete Receivables write-side <code>FIN-RP-FCB</code>/<code>FIN-RP-OPD</code>/<code>FIN-RP-REF</code>/<code>FIN-RP-REM</code>/<code>FIN-RP-FT</code>/<code>FIN-RP-EXP</code>/<code>FIN-RP-CASH</code>/<code>FIN-RP-TRP</code> + <code>FIN-BK-CC-BUD</code>, mockups in
<code>mockups/accounting-*.html</code>, backed by ADR-0026/0027 +
<a href="../adr/0028-posting-bridge.html">ADR-0028</a>/<a href="../adr/0029-receipt-deposit.html">0029</a>/<a href="../adr/0030-advance-settlement.html">0030</a>). 9 FIN DESIGN + 1 ADR screens remain
without a mockup (the one open Tier-2 ADR is e-Invoice IRN); the remaining DESIGN screens are
TDS (3), GST returns (5) and a Cheque-book sub-screen.
<code><ThreePane></code> (<a href="../adr/0010-threepane-layout-primitive.html">ADR-0010</a>)
now backs GST Master, Cost Centre Master, Cheque Lifecycle, the PG Console and Fee Collection Bank;
Bank Reconciliation, Cost Centre Report and the registers are two-pane on <code><Sidebar></code>.
<strong>Next:</strong> port the 9 new READY screens to React, then HR Tier-1 (9 READY
<code>HCM-*</code> screens, needs the <code>hcm</code> module groups scaffolded in
<code>apps/web/src/nav.ts</code> first). Follow the data-grid verification rule
(<code>memory/feedback_verify_data_grids.md</code>) for every wide table.
</div>
<p>
<strong>Shipped (session 2026-05-23):</strong> all 5 PARTIAL finance screens
(<s>Day Book</s>, <s>Chart of Accounts</s>, <s>Account Ledger</s>, <s>Voucher
Approvals</s>, <s>Voucher Entry</s>) re-worked to full + interactive fidelity; and the
complete Schedule III statement set (<s>Trial Balance</s>, <s>Balance Sheet</s>,
<s>Profit & Loss</s>, <s>Cash Flow</s>); receivables/payables
(<s>Outstanding Bills</s>, <s>Aging Report</s>, <s>Sales Register</s>); and
compliance (<s>TDS Monthly Payment</s> — 16-col editable challan grid,
URL-driven tab views, section/PAN/lower-TDS side panel; <s>GST Compliance</s> —
first three-pane screen: section rail + GSTR-1 b2b grid + IRN detail, 7 URL-driven return
tabs); banking (<s>Bank Reconciliation</s> — BRS walk + match-progress + smart
suggestions + bank|books pane-grid + match-compare detail); analytics
(<s>Cost Centre Master</s> — three-pane tree + Overview canvas with CC×Spend bars,
Project×Spend donut, Month×Budget bars, distribution + leak-finder tables, CC detail;
<s>Cost Centre Report</s> — Project×Centre Budget-vs-Actual matrix with expandable
account breakdowns, leak/health callouts, 14 validation messages, URL-driven drill panel).
<strong>Accounting module complete (17/17 with mockups).</strong> Infrastructure: Radix
<code>Tabs</code>/<code>Toast</code>/<code>Tooltip</code> wrappers, sticky
<code>Sidebar</code> + new <code>ThreePane</code> primitive
(<a href="../adr/0010-threepane-layout-primitive.html">ADR-0010</a>),
<strong>React Router</strong> (deep-linkable URLs +
<code>?tab=</code>), <code>ThreePane</code> primitive (ADR-0010), chart-palette tokens,
grid-collapse stylelint guard, extended icon set. <strong>17 BUILT, 0 PARTIAL.</strong>
</p>
</main>
</div>
</body>
</html>