Loan Overdue Notices

Generate, dispatch, and audit notices for accounts with overdue dues. Bulk operations supported.
{{ totalOverdueAccounts | number }}
Overdue Accounts
₹{{ totalOverdueAmount | number: '1.0-0' }}
Total Overdue Value
{{ noticesGeneratedCount | number }}
Notices Generated
{{ noticesPendingGenCount | number }}
Pending Generation
@if (filterMode === 'range') {
} @else {
}
@if (search || accountTypeFilter || startDate || endDate || asOnDate) { }
@if (selectedCount > 0) {
{{ selectedCount }} selected
}
{{ loan.customerName.charAt(0).toUpperCase() }}
{{ loan.customerName }}
{{ loan.accountNo }}
{{ accountTypeLabel(loan.accountType) }}
Customer ID {{ loan.customerId }}
Branch {{ loan.branch }}
Overdue dues ₹{{ loan.overdueTotal | number: '1.0-0' }}
{{ loan.daysOverdue }} days past due
Notice document
Send to customer
Customer
@for (loan of filteredLoans; track loan.accountNo) { } @if (filteredLoans.length === 0) { }
Customer · A/C Type Branch Overdue DPD Last Paid Notice Status Last Sent Actions
{{ loan.customerName }}
{{ loan.accountNo }} · {{ loan.customerId }}
{{ accountTypeLabel(loan.accountType) }} {{ loan.branch }}
₹{{ loan.overdueTotal | number: '1.0-0' }}
P ₹{{ loan.overduePrincipal | number: '1.0-0' }} · I ₹{{ loan.overdueInterest | number: '1.0-0' }}
{{ loan.daysOverdue }} d {{ loan.lastPaidDate | date: 'd MMM y' }} @switch (noticeStatus(loan)) { @case ('NONE') { Not Generated } @case ('GENERATED') { {{ stageLabel(latestNotice(loan)!.stage) }} · Awaiting Send } @case ('SENT') { {{ stageLabel(latestNotice(loan)!.stage) }} · Sent ({{ totalSendCount(loan) }}) } } @if (latestNotice(loan) && latestNotice(loan)!.sends.length > 0) {
{{ channelLabel(latestNotice(loan)!.sends[0].channel) }}
{{ latestNotice(loan)!.sends[0].sentAt }}
} @else { — }
No overdue accounts match the current filters.