feat(loan-products): wire GL mapping, checker diff view, and approval flow for loan interest rate register

- Add GL account picker (gl-picker.component.ts) for mapping each product row to a GL account
- Extract shared diff logic into rate-register-diff.util.ts + loan-rate-register-diff.util.ts
- Add rate-register-diff component to render before/after changes for checker approval
- Rewire checker-inbox and view-checker-inbox to show loan interest rate register diffs
- Refactor rate-register.service.ts (mock-to-real HTTP wiring, GL-aware payload mapping)
- Simplify preview-register component, moving diff rendering into the shared diff component
- Add glAccountId field to RateChartRow model

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 17:22:59 +05:30
co-authored by Claude Sonnet 5
parent a5a64d4efe
commit d61584f291
24 changed files with 1510 additions and 909 deletions
@@ -343,10 +343,13 @@ export class CheckerInboxComponent implements OnInit {
// resourceId is absent (CREATE rows: entity does not exist yet until approved),
// or entityName is unmapped — fall back to the detail dialog so the checker
// can still view the command payload and action the entry.
// A Loan Base Interest Rate request carries a 10-column rate chart, which needs a wide dialog.
const wide = (row.entityName ?? '').toUpperCase() === 'LOANBASEINTERESTRATE';
this.dialog
.open(ViewCheckerInboxComponent, {
data: { checkerId: row.id },
autoFocus: false
autoFocus: false,
...(wide ? { width: '1200px', maxWidth: '95vw' } : {})
})
.afterClosed()
.subscribe((result: any) => {