feat(delinquency): maker-checker UI for Delinquency Ranges and Buckets

Checker inbox now resolves DELINQUENCY_RANGE/DELINQUENCY_BUCKET entries
to readable diffs instead of raw JSON, and each bucket/range screen
shows its own pending-approval state via a new pending-requests panel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 15:52:11 +05:30
co-authored by Claude Sonnet 5
parent d61584f291
commit afcd3af918
16 changed files with 539 additions and 3 deletions
@@ -63,6 +63,9 @@ const ENTITY_FETCHERS: Record<string, (id: string, s: EntityFetchServices) => Ob
FIXEDDEPOSITPRODUCT: (id, s) => s.products.getFixedDepositProductAndTemplate(id),
RECURRINGDEPOSITPRODUCT: (id, s) => s.products.getRecurringDepositProduct(id, true),
CHARGE: (id, s) => s.products.getCharge(id, true),
// SMA / NPA classification master. The bucket is read as-is; the dialog resolves its range ids to names.
DELINQUENCY_RANGE: (id, s) => s.products.getDelinquencyRange(id),
DELINQUENCY_BUCKET: (id, s) => s.products.getDelinquencyBucket(id),
// ---- Accounts ----------------------------------------------------------------
SAVINGSACCOUNT: (id, s) => s.savings.getSavingsAccountData(id),
@@ -199,6 +202,12 @@ const DELETE_SUMMARY_KEYS: Record<string, string[]> = {
'email',
'officeName'
],
DELINQUENCY_RANGE: [
'classification',
'minimumAgeDays',
'maximumAgeDays'
],
DELINQUENCY_BUCKET: ['name'],
GLACCOUNT: [
'name',
'glCode',