| Customer | Account | Branch | State | Date | Days | Balance | Next stage | Action | |
|---|---|---|---|---|---|---|---|---|---|
|
{{ r.name }}
|
{{ r.account }} | {{ r.branch }} | {{ r.stage }} | {{ r.since | date: 'dd MMM yyyy' }} | {{ r.days }} {{ r.daysLabel }} | {{ r.balance === null ? '—' : '₹' + (r.balance | number: '1.2-2') }} |
{{ r.next }}
@if (r.nextDate) {
{{ r.nextDate | date: 'dd MMM yyyy' }}
}
|
@if (r.stageKey === 'ESCHEAT') {
} @else {
}
|
|
| {{ statusLoading ? 'Loading…' : 'No account matches these filters.' }} | |||||||||
| Rule | What happens |
|---|---|
| Re-KYC overdue, first {{ expiryPolicy.graceDays }} days | Nothing is restricted; reminders go out |
| Re-KYC overdue, after {{ expiryPolicy.graceDays }} days | Debits stopped; credits still accepted |
| Re-KYC overdue, after {{ expiryPolicy.inoperativeDays }} days | Marked inoperative; only {{ alwaysAllowed.join(', ') }} still go through |
| No customer transaction for {{ dormancyPolicy.inactiveDays }} days | Inactive — flagged for the branch, nothing restricted |
| No customer transaction for {{ dormancyPolicy.dormantDays }} days | Dormant / inoperative — debits stopped; revived by re-KYC |
| No customer transaction for {{ dormancyPolicy.escheatDays }} days | Escheat — balance remitted to RBI DEAF |
| Date | Customers | Notices | Waiting | Sent | Failed | Cancelled | Action |
|---|---|---|---|---|---|---|---|
| {{ g.date | date: 'dd MMM yyyy' }} | {{ g.customers }} | {{ g.rows.length }} | {{ g.waiting }} | {{ g.sent }} | {{ g.failed }} | {{ g.cancelled }} | |
| {{ queueLoading ? 'Loading…' : 'Nothing has been queued yet. Select customers on the Alert Dashboard and use Notify selected.' }} | |||||||
| Customer | KYC | Ladder | Next step | Last contact | Action | |
|---|---|---|---|---|---|---|
| @if (s.next?.sends) { } |
{{ s.row.clientName }}
{{ s.row.accountNo }}
|
{{ s.row.expiryDate | date: 'dd MMM yyyy' }}
{{
s.row.daysOverdue < 0 ? -s.row.daysOverdue + ' days left' : s.row.daysOverdue + ' days overdue'
}}
|
@for (st of s.steps; track st.label) {
{{ st.state === 'done' ? '✓ ' : '' }}{{ st.label }}
}
|
{{ s.next ? s.next.label : 'Ladder complete' }} | {{ s.row.lastContactDate ? (s.row.lastContactDate | date: 'dd MMM yyyy') : 'Never' }} | @if (s.next?.sends) { } @else if (s.next) { } |
| {{ statusLoading ? 'Loading…' : 'No customer is expiring or lapsed.' }} | ||||||
| Date | Customers | Notices | Delivered | Failed | No contact detail | Recorded (call / visit) | Action |
|---|---|---|---|---|---|---|---|
| {{ d.date | date: 'dd MMM yyyy' }} | {{ d.customers }} | {{ d.notices }} | {{ d.delivered }} | {{ d.failed }} | {{ d.noContact + d.notConfigured }} | {{ d.recorded }} | |
| {{ auditLoading ? 'Loading…' : 'No notice matches these filters.' }} | |||||||
| Client / Account | Branch | Exception Reason & Date | Risk | Contact Status | Contact Logs | Actions |
|---|---|---|---|---|---|---|
|
{{ c.name }}
{{ c.account }}
|
{{ c.contact.branch }} |
{{ c.exceptionReason }}
Opened: {{ c.exceptionDate }}
|
{{ c.riskLabel }} |
@if (c.contactHistory && c.contactHistory.length > 0) {
Contacted
Last: {{ c.contactHistory[c.contactHistory.length - 1].date }}
} @else {
Not Contacted
}
|
@if (c.contactHistory && c.contactHistory.length > 0) {
@for (log of c.contactHistory; track $index) {
} @else {
No logs recorded
}
{{ log.date }} ({{ log.action }}): {{ log.notes }}
— {{ log.officer }}
@if (log.platformSent) {
@if (log.delivered) {
Sent {{ log.destinationMasked }}
} @else {
Not sent
}
}
}
|
|
| Client / Account | Branch | Exception Reason & Resolution | Risk | Contact Logs | Status |
|---|---|---|---|---|---|
|
{{ c.name }}
{{ c.account }}
|
{{ c.contact.branch }} |
{{ c.exceptionReason }}
Resolved On: {{ c.exceptionResolvedOn }}
|
{{ c.riskLabel }} |
@if (c.contactHistory && c.contactHistory.length > 0) {
@for (log of c.contactHistory; track $index) {
} @else {
No logs recorded
}
{{ log.date }} ({{ log.action }}): {{ log.notes }}
— {{ log.officer }}
@if (log.platformSent) {
@if (log.delivered) {
Sent {{ log.destinationMasked }}
} @else {
Not sent
}
}
}
|
|