FD Maturity Reports

Every branch gets its own report of the fixed deposits maturing with no closure instruction of their own, generated automatically at 12:00 noon. One user puts the figures up and a second approves them — whoever generated a report cannot approve it. Approving sets in motion the whole event: status, final interest, and any renewal, all together, when the branch closes its day. A deposit that already named Transfer to Savings or a Reinvest option settles itself the moment it matures, exactly as it always has — see "Matured automatically" for those.
@if (!approvalEnabled) {
Fixed deposit maturities are currently settled directly by the nightly job, so there is nothing to approve here. Turn on fd-maturity-interest-posting-approval under System → Configurations to put maturities behind this report.
} @if (isHeadOffice) {
@if (tab === 'others') {
Each branch generates and approves its own report. The head office can act here only for a branch that has not opened the day, and only once every other open branch has closed. Anything it approves is marked (HO).
} } @if (errorMessage) {
{{ errorMessage }}
} @if (notice) {
{{ notice }}
} @if (pendingCount > 0) {
{{ pendingCount }} report(s) waiting for approval. The day cannot be closed until they are approved, and the user who generated a report cannot be the one to approve it.
} @if (due.length > 0) {
Fixed deposits are maturing but no report has been generated yet for:
@for (d of due; track d.officeId) {
{{ d.officeName }} · {{ d.postingDate }} · {{ d.accountCount }} deposit(s) · est. ₹{{ d.totalInterest | number: '1.2-2' }} @if (d.canAct) { } @else if (d.blockedReason) { {{ d.blockedReason }} }
}
}
Maturing, no report
₹{{ dueTotal | number: '1.2-2' }}
{{ dueAccountTotal }} deposit(s)
Awaiting approval
₹{{ awaitingTotal | number: '1.2-2' }}
{{ awaitingReports.length }} report(s) · blocking day close
Approved — runs at close
₹{{ approvedTotal | number: '1.2-2' }}
{{ approvedReports.length }} report(s)
Matured today
₹{{ postedTotal | number: '1.2-2' }}
{{ postedReports.length }} report(s)
@if (showAutoMatured) {

Fixed deposits matured automatically

A deposit that named Transfer to Savings or a Reinvest option on its own closure needs no approval here — it settles the moment it matures, as it always has. Listed so nothing that moved is invisible, approved or not.
Deposits {{ autoMaturedRows.length }}
@if (autoMaturedLoading) {
Looking for deposits that matured outside this report…
} @else {
@for (g of autoMaturedGroups; track g.productName) { } @empty { }
Product Scheme Deposits Principal
{{ g.productName }} {{ fdTypeShort(g.fdType) }} {{ g.accounts }} ₹{{ g.deposit | number: '1.2-2' }}
No fixed deposit matured automatically in this period.
@if (autoMaturedRows.length > 0) {
@for (r of autoMaturedRows; track r.fdAccountId) { }
Account no Customer Product Scheme Maturity date Deposit On closure Matured on
{{ r.accountNo }} {{ r.clientName }} {{ r.productName }} {{ fdTypeShort(r.fdType) }} {{ r.maturityDate }} ₹{{ r.depositAmount | number: '1.2-2' }} {{ closureLabel(r.closureInstruction) }} {{ r.maturedOn }}
} }
}

Reports{{ postingDate ? ' for ' + postingDate : '' }}

One report per branch
@for (r of reports; track r.id) { } @empty { }
Branch Posting date Deposits Est. interest Status Maker Checker
{{ r.officeName }} {{ r.postingDate }} {{ r.accountCount }} ₹{{ r.totalInterest | number: '1.2-2' }} {{ r.status }} @if (r.failureReason) {
Some deposits could not mature — see detail
}
{{ r.generatedBy || 'System' }} · {{ r.generationMode }}
{{ r.generatedAt | date: 'dd MMM, HH:mm' }}
@if (r.approvedAt) { {{ r.approvedBy }} @if (r.approvedOnBehalf) { (HO) }
{{ r.approvedAt | date: 'dd MMM, HH:mm' }} } @else { — }
@if (canRegenerate(r)) { } @if (canApprove(r)) { } @else if (r.status === 'GENERATED' && r.approveBlockedReason) { {{ r.approveBlockedReason }} }
@if (loading) { Loading… } @else { No fixed deposit maturity report for {{ postingDate || 'this date' }}. Reports are generated at 12:00 noon on the posting date. }
@if (selected) {

{{ selected.officeName }} — {{ selected.postingDate }} {{ selected.status }}

Approving runs the real maturity settlement for every deposit below — status, final interest and closure, together.
Total estimated interest ₹{{ selected.totalInterest | number: '1.2-2' }} {{ selected.accountCount }} deposit(s)
@for (l of selected.lines; track l.fdAccountId) { }
Account no Account holder Scheme Maturity date Deposit Rate % Est. interest On closure Matured
{{ l.accountNo }} {{ l.clientName }} {{ fdTypeShort(l.fdType) }} {{ l.maturityDate }} ₹{{ l.depositAmount | number: '1.2-2' }} {{ l.interestRate | number: '1.2-2' }} ₹{{ l.estimatedInterest | number: '1.2-2' }} {{ closureLabel(l.closureInstruction) }} @if (l.closureAccountNo) {
{{ l.closureAccountNo }} }
@if (l.postedAt) { {{ l.postedAt | date: 'dd MMM, HH:mm' }} } @else if (l.failureReason) { Failed } @else { — }
Total ₹{{ selected.totalInterest | number: '1.2-2' }}
}