CREDIT · LOAN ORIGINATION · {{ scopeName | uppercase }}

Loan Origination Pipeline

Every sanctioning stage from application intake to disbursement — KYC/OVD, CIC credit check, Field Investigation, Personal Discussion, Credit Committee, Risk & Legal Approval — as on {{ asOnDate }}.

@if (isHeadOffice) { } @else { }
Total Applications {{ totalApplications }} in the active pipeline
In Progress {{ inProgressCount }} moving through the workflow
On Hold {{ onHoldCount }} discrepancy under resolution
Rejected {{ rejectedCount }} declined at Committee/Risk
Disbursed {{ disbursedApplications.length }} ₹{{ disbursedAmount | number: '1.0-0' }} total
@if (activeView === 'pipeline') {
@for (a of paged(filteredApplications); track a.applicationNo) { } @empty { }
Application No Applicant Branch Channel Product Requested Amount Current Stage Progress Status
{{ a.applicationNo }} {{ a.applicantName }} {{ a.branchName }} {{ channelLabels[a.channel] }} {{ a.productName }} ₹{{ a.requestedAmount | number: '1.0-0' }} {{ stageLabel(a.currentStage) }} {{ progress(a) }}% {{ statusLabel(a.overallStatus) }}
No applications match these filters.
@if (filteredApplications.length > pageSize) {
Showing {{ rangeStart(filteredApplications) }}–{{ rangeEnd(filteredApplications) }} of {{ filteredApplications.length }}
Page {{ currentPage }} of {{ pageCount(filteredApplications) }}
}
} @if (activeView === 'new') {
@if (newApp.channel === 'BC') { } @if (newApp.customerType === 'EXISTING') { @if (!newApp.clientId) { } @else { } } @else { }
@if (newApp.customerType === 'EXISTING' && !newApp.clientId) { @if (searchingExistingClient) {

Searching…

} @else if (existingClientSearchText.length >= 2 && existingClientSearchResults.length === 0) {

No clients found.

} @if (existingClientSearchResults.length > 0) {
@for (client of existingClientSearchResults; track client.id) { }
} }
} @if (activeView === 'channel') {
@for (r of channelReport; track r.channel) { }
Channel Applications Requested Amount Disbursed Count Disbursed Amount
{{ r.label }} {{ r.count }} ₹{{ r.requestedAmount | number: '1.0-0' }} {{ r.disbursedCount }} ₹{{ r.disbursedAmount | number: '1.0-0' }}
Total {{ totalApplications }} ₹{{ channelReport[0].requestedAmount + channelReport[1].requestedAmount + channelReport[2].requestedAmount | number: '1.0-0' }} {{ disbursedApplications.length }} ₹{{ disbursedAmount | number: '1.0-0' }}
} @if (activeView === 'bc') {
@for (r of bcReport; track r.bcAgentName) { } @empty { }
BC Agent / Point Applications Requested Amount Disbursed Count Disbursed Amount
{{ r.bcAgentName }} {{ r.count }} ₹{{ r.requestedAmount | number: '1.0-0' }} {{ r.disbursedCount }} ₹{{ r.disbursedAmount | number: '1.0-0' }}
No BC-sourced applications in this branch.
} @if (activeView === 'share') {

A cooperative-bank borrower must hold membership shares in the society before a loan can be sanctioned. {{ shareMemberCount }} of {{ totalApplications }} applicants are already members; the rest need membership allotted before Credit Committee approval — done from the application's own detail screen.

@for (a of paged(nonMemberApplications); track a.applicationNo) { } @empty { }
Application No Applicant Branch Current Stage Status
{{ a.applicationNo }} {{ a.applicantName }} {{ a.branchName }} {{ stageLabel(a.currentStage) }} {{ statusLabel(a.overallStatus) }}
Every active applicant in this branch already holds membership.
@if (nonMemberApplications.length > pageSize) {
Showing {{ rangeStart(nonMemberApplications) }}–{{ rangeEnd(nonMemberApplications) }} of {{ nonMemberApplications.length }}
Page {{ currentPage }} of {{ pageCount(nonMemberApplications) }}
}
} @if (activeView === 'target') {
@for (row of branchTargetRows; track row.branchCode) { }
Branch Target Disbursed (Actual) Achievement % Status
{{ row.branchName }} ₹{{ row.target | number: '1.0-0' }} ₹{{ row.actual | number: '1.0-0' }} {{ row.achievementPct | number: '1.1-1' }}% {{ statusLabelOf(row.status) }}

KCC and Cash Credit (MSME) targets are RBI's actual Priority Sector Lending sub-targets — Agriculture 18% and Micro Enterprises 7.5% of Adjusted Net Bank Credit (shown here against this module's own mix, since RBI sets them against the bank's whole loan book, not one product line). The rest are internal business-plan targets, not RBI-mandated.

@for (row of productTargetRows; track row.code) { }
Product Target Basis Target % Actual % Variance Status
{{ row.label }} {{ row.isRbiMandated ? 'RBI PSL Sub-Target' : 'Internal Target' }} {{ row.targetPct | number: '1.0-1' }}% {{ row.actualPct | number: '1.1-1' }}% {{ row.variancePct > 0 ? '+' : '' }}{{ row.variancePct | number: '1.1-1' }} pp {{ statusLabelOf(row.status) }}
@for (row of channelTargetRows; track row.code) { }
Channel Target % Actual % Variance Status
{{ row.label }} {{ row.targetPct | number: '1.0-1' }}% {{ row.actualPct | number: '1.1-1' }}% {{ row.variancePct > 0 ? '+' : '' }}{{ row.variancePct | number: '1.1-1' }} pp {{ statusLabelOf(row.status) }}
} @if (activeView === 'rates') {

Total Interest is an illustrative simple-interest figure (Amount x Rate x Tenure in years) at the product's own min/max amount and tenure band — actual repayment is on a reducing balance and depends on the amount and tenure chosen at sanction. Share Capital Required is the minimum a borrower must hold per bank bye-laws, proportional to the loan amount.

@for (p of products; track p.code) { }
Product Type Amount Range Interest Rate (p.a.) Tenure Range Illustrative Total Interest Share Capital Required Illustrative Share Amount
{{ p.name }} {{ p.secured ? 'Secured' : 'Unsecured' }} ₹{{ p.minAmt | number: '1.0-0' }} – ₹{{ p.maxAmt | number: '1.0-0' }} {{ p.minRate | number: '1.1-1' }}% – {{ p.maxRate | number: '1.1-1' }}% {{ p.minTenure }} – {{ p.maxTenure }} months ₹{{ illustrativeInterest(p.minAmt, p.minRate, p.minTenure) | number: '1.0-0' }} – ₹{{ illustrativeInterest(p.maxAmt, p.maxRate, p.maxTenure) | number: '1.0-0' }} {{ p.shareLinkagePercent | number: '1.1-1' }}% ₹{{ p.minAmt * (p.shareLinkagePercent / 100) | number: '1.0-0' }} – ₹{{ p.maxAmt * (p.shareLinkagePercent / 100) | number: '1.0-0' }}

A general slab schedule by loan quantum, independent of product — where this differs from the product-wise minimum above, whichever is higher governs the actual requirement.

@for (row of shareLinkageSlabRows; track row.minAmt) { }
Loan Amount Slab Share Capital Required Illustrative Share Amount
@if (row.maxAmt !== null) { ₹{{ row.minAmt | number: '1.0-0' }} – ₹{{ row.maxAmt | number: '1.0-0' }} } @else { Above ₹{{ row.minAmt | number: '1.0-0' }} } {{ row.sharePercent | number: '1.1-1' }}% @if (row.shareAtMax !== null) { ₹{{ row.shareAtMin | number: '1.0-0' }} – ₹{{ row.shareAtMax | number: '1.0-0' }} } @else { From ₹{{ row.shareAtMin | number: '1.0-0' }} }
}
{{ toastMsg }}