@if (isLoading) {
Loading account…
} @else if (!account) {
DDS account not found
} @else {
● {{ account.status }}

{{ account.subType }}

Account Number {{ account.accountNo }} Client Name {{ account.clientName || account.partyName }}
Current Balance ₹{{ account.currentBalance || 0 | formatNumber }}
Maturity Amount ₹{{ account.maturityAmount || 0 | formatNumber }}
@if (account.status === 'CLOSED') { }
@if (tab === 'closure') { @if (!closure) {
Loading closure details…
} @else {
How It Closed
Type {{ closureLabels[closure.closureType] || closure.closureType }} @if (closure.withinLockin) { within lock-in }
Closed On{{ closure.closeDate | date: 'dd MMMM yyyy' }}
@if (closure.paidOutBy) {
Paid Out By{{ closure.paidOutBy }}
}
Closed By{{ closure.closedBy || '—' }}
Approved By{{ closure.approvedBy || '—' }}
@if (closure.lockinOverrideReason) {
Reason{{ closure.lockinOverrideReason }}
} @if (closure.shortfallBorneBy) {
Cost Borne By {{ closure.shortfallBorneBy === 'AGENT' ? 'Agent — ' + closure.agentCode : 'Customer' }}
}
The Money
Balance at Close₹{{ closure.balanceAtClose || 0 | formatNumber }}
@if (closure.interestRecovered > 0) {
Interest Recovered− ₹{{ closure.interestRecovered | formatNumber }}
} @if (closure.interestToppedUpByAgent > 0) {
Interest Funded by Agent+ ₹{{ closure.interestToppedUpByAgent | formatNumber }}
}
Paid Out₹{{ closure.paidOut || 0 | formatNumber }}
@if (closure.closureType === 'PREMATURE') {
Agent Penalty ({{ closure.agentCode }})₹{{ closure.agentCommissionPenalty || 0 | formatNumber }}
}
Where It Went
@if (closure.destination === 'OWN_ACCOUNT') {
Paid IntoCustomer's own account
Account{{ closure.creditedAccount?.accountNo }}
@if (closure.creditedAccount?.productName) {
Product{{ closure.creditedAccount.productName }}
} @if (closure.creditedAccount?.owner) {
Holder{{ closure.creditedAccount.owner }}
} } @else if (closure.destination === 'SUNDRY') {
Parked InSundry (customer has no account here)
GL Account{{ closure.sundryGl?.glCode }} · {{ closure.sundryGl?.glName }}
} @else {
Paid OutNothing - the balance was nil
} @if (closure.voucherNo) {
Voucher{{ closure.voucherNo }}
} @if (closure.payoutDate) {
Paid On{{ closure.payoutDate | date: 'dd MMMM yyyy' }}
} @if (closure.passbookNote) {
Passbook Note{{ closure.passbookNote }}
}
@if (closure.ledgerEntries?.length) {
Ledger Entry
Transaction ID{{ closure.ledgerTransactionId }}
@for (leg of closure.ledgerEntries; track $index) {
{{ leg.glCode }} · {{ leg.glName }} {{ leg.side }} ₹{{ leg.amount | formatNumber }}
}
}
} } @if (tab === 'general') {
DDS Details
Account Number{{ account.accountNo }}
Party Code{{ account.partyCode }}
Client Name{{ account.clientName }} ({{ account.clientId }})
Agent{{ account.agentCode }} · {{ account.agentName }}
Branch{{ account.officeName }}
Product{{ account.subType }}
Opened On{{ account.openingDate | date: 'dd MMMM yyyy' }}
Matures On{{ account.maturityDate | date: 'dd MMMM yyyy' }}
Daily Deposit₹{{ account.dailyDepositAmount || 0 | formatNumber }}
Term{{ account.month }} months · {{ account.days }} days
Interest Rate{{ account.interestRate }} %
CurrencyIndian Rupee [INR]
Performance History
Total Collected₹{{ totalOf('PARTY_TRAN') | formatNumber }}
Total Interest Earned₹{{ interestEarned | formatNumber }}
Total Paid Out₹{{ totalDebitsAll | formatNumber }}
Account Summary
Collected to Date₹{{ account.collectedToDate || 0 | formatNumber }}
Expected to Date₹{{ account.expectedToDate || 0 | formatNumber }}
Standing @if (account.advanceDays > 0) { {{ account.advanceDays }} days ahead } @else if (account.arrearsDays > 0) { {{ account.arrearsDays }} days behind } @else { Up to date }
Instalments Due{{ account.instalmentsDue ?? 0 }}
Interest Earned₹{{ interestEarned | formatNumber }}
Interest Calculated, Not Posted₹{{ account.interestCalc || 0 | formatNumber }}
Interest Calculated UsingDaily Balance
Days in Year365 Days
Last Interest Date{{ account.interestDate ? (account.interestDate | date: 'dd MMMM yyyy') : '—' }}
Last Transaction Date{{ lastTransactionDate ? (lastTransactionDate | date: 'dd MMMM yyyy') : '—' }}
Maturity Amount₹{{ account.maturityAmount || 0 | formatNumber }}
Lien {{ account.lien ? 'Yes — ₹' + (account.amountHeldUnderLien || 0) : 'No' }}
Freeze{{ account.freezeCode || 'Normal' }}
@if (account.closeDate) {
Closed On{{ account.closeDate | date: 'dd MMMM yyyy' }}
}
} @if (tab === 'transactions') {
From
To
@if (hasDateFilters) { }
Credits ₹{{ totalCredits | formatNumber }} Debits ₹{{ totalDebits | formatNumber }}
@if (shownTransactions.length === 0) {
{{ hasDateFilters ? 'Nothing moved on this account in these dates' : 'Nothing has been credited to this account yet' }}
} @else {
@for (txn of shownTransactions; track txn.id; let i = $index) { }
# ID Transaction Date Transaction Type Voucher Description Debit Credit Balance
{{ i + 1 }} {{ txn.id }} {{ txn.transactionDate | date: 'dd MMMM yyyy' }} {{ label(txn.transactionType) }} {{ txn.voucherNo || '—' }} {{ txn.description }} {{ txn.direction === 'DEBIT' ? '₹' + (txn.amount | formatNumber) : 'N/A' }} {{ txn.direction === 'CREDIT' ? '₹' + (txn.amount | formatNumber) : 'N/A' }} ₹{{ txn.balanceAfterTransaction || 0 | formatNumber }}
}
} @if (tab === 'passbook') {
From
To
@if (hasDateFilters) { }
DDS Passbook
{{ account.officeName }}
Account No{{ account.accountNo }} Party Code{{ account.partyCode }} Name{{ account.clientName || account.partyName }} Product{{ account.subType }} · {{ account.interestRate }} % Opened On{{ account.openingDate | date: 'dd/MM/yyyy' }} Agent{{ account.agentCode }}
@if (passbookEntries.length === 0) {
{{ hasDateFilters ? 'No entries in these dates' : 'No entries yet' }}
} @else { @for (txn of passbookEntries; track txn.id) { }
Date Voucher Particulars Withdrawals Deposits Balance
{{ txn.transactionDate | date: 'dd/MM/yyyy' }} {{ txn.voucherNo || '' }} {{ label(txn.transactionType) }} @if (txn.description) { {{ txn.description }} } {{ txn.direction === 'DEBIT' ? (txn.amount | formatNumber) : '' }} {{ txn.direction === 'CREDIT' ? (txn.amount | formatNumber) : '' }} {{ txn.balanceAfterTransaction || 0 | formatNumber }}
Total {{ totalDebits | formatNumber }} {{ totalCredits | formatNumber }} {{ passbookClosingBalance | formatNumber }}
}
} @if (tab === 'nominees') {
@if (!account.nominees || account.nominees.length === 0) {
No nominee on this account
} @else {
@for (nominee of account.nominees; track nominee.id; let i = $index) { }
# Name Relation Gender Mobile Birth Date Nominated On Guardian {{ account.nomineeSplitMode === 'Sequence' ? 'Order' : 'Share %' }}
{{ i + 1 }} {{ nominee.name }} {{ nominee.relation }} {{ nominee.gender }} {{ nominee.mobileNo || '—' }} {{ nominee.birthDate ? (nominee.birthDate | date: 'dd MMM yyyy') : '—' }} {{ nominee.nominationDate ? (nominee.nominationDate | date: 'dd MMM yyyy') : '—' }} {{ nominee.guardianName || '—' }} {{ account.nomineeSplitMode === 'Sequence' ? nominee.sequenceNo : (nominee.sharePercent ?? '—') }}
}
} }