@if (loading) {
hourglass_empty Loading entry…
} @else {
@if (isProductReview) {
{{ isEdit ? 'edit_note' : 'savings' }}
{{ isEdit ? 'Edit request' : 'New product' }} {{ entry.status }}

{{ valueOf('accountTypeDescription') || entry.details || 'DDS Product' }}

{{ valueOf('accountTypeCode') || '—' }} @if (valueOf('accountTypeGroup')) { {{ valueOf('accountTypeGroup') }} group }
person {{ entry.makerName || entry.maker }} {{ entry.maker }} schedule {{ formatDateTime(entry.madeOn) }} Submitted @if (entry.status !== 'PENDING' && entry.checker) { verified_user {{ entry.checkerName || entry.checker }} {{ entry.status === 'APPROVED' ? 'Approved by' : 'Rejected by' }} }
percentInterest Rate {{ valueOf('interestRate') || '—' }} p.a., worked out daily
event_repeatInterest Posting {{ valueOf('autoInterestPost') === 'No' ? 'Manual' : valueOf('autoInterestPostWhen') || 'Monthly' }} {{ valueOf('autoInterestPost') === 'No' ? 'Posted from the batch screen' : 'Automatic, at period end' }}
lock_clockLock-in {{ valueOf('prematureLockinMonths') || '—' }} before early closure
event_availableMaturity {{ valueOf('maturityAutoClose') === 'Yes' ? 'Auto close' : 'Manual payout' }} on the maturity date
@if (compareFields) {
{{ changedCount ? 'compare_arrows' : 'info' }} @if (changedCount) { {{ changedCount }} term{{ changedCount !== 1 ? 's' : '' }} will change on approval - highlighted below as current → proposed. } @else { This edit changes nothing - every term matches the product as it stands. }
} @for (group of fieldGroups; track group.name) {
{{ group.icon }} {{ group.name }} @if (group.changed) { {{ group.changed }} changed }
@if (group.name === 'Accounting') {
@for (field of group.fields; track field.key) {
{{ glKind(field.key) }} {{ field.label }} @if (field.changed) { Changed }
@if (field.changed) { {{ glName(field.current) }} @if (glCode(field.current)) { {{ glCode(field.current) }} } arrow_forward } {{ glName(field.value) }} @if (glCode(field.value)) { {{ glCode(field.value) }} }
}
} @else {
@for (field of group.fields; track field.key) {
{{ field.label }} @if (field.changed) { Changed } @if (field.changed) { {{ field.current || '—' }} arrow_forward } @else { }
}
}
} @if (field.format === 'yesno' && field.value) { {{ field.value === 'Yes' ? 'check_circle' : 'remove_circle_outline' }} {{ field.value }} } @else { {{ field.value || '—' }} } } @else if (isAgentReview) {
{{ isEdit ? 'manage_accounts' : 'person_add' }}
{{ isEdit ? 'Edit request' : 'New agent' }} {{ entry.status }}

{{ valueOf('agentNameId') || entry.details || 'DDS Agent' }}

@if (valueOf('clientId')) { Client {{ valueOf('clientId') }} } @if (valueOf('agentSavingAccountNo')) { {{ valueOf('agentSavingAccountNo') }} }
person {{ entry.makerName || entry.maker }} {{ entry.maker }} schedule {{ formatDateTime(entry.madeOn) }} Submitted @if (entry.status !== 'PENDING' && entry.checker) { verified_user {{ entry.checkerName || entry.checker }} {{ entry.status === 'APPROVED' ? 'Approved by' : 'Rejected by' }} }
@for (group of fieldGroups; track group.name) {
{{ group.icon }} {{ group.name }}
@for (field of group.fields; track field.key) {
{{ field.label }} {{ field.value || '—' }}
}
}
shield_person Guarantors {{ guarantors.length }}
@if (guarantors.length) { @for (g of guarantors; track $index; let i = $index) { }
# Client Name Telephone Address
{{ i + 1 }} {{ g.client || '—' }} {{ g.name || '—' }} {{ g.telephone || '—' }} {{ g.address || '—' }}
} @else {
No guarantors named in this request.
}
} @else if (isPartyReview) {
{{ isEdit ? 'edit_note' : 'account_balance_wallet' }}
{{ isEdit ? 'Edit request' : 'New DDS account' }} {{ entry.status }}

{{ valueOf('partyName') || entry.details || 'DDS Account' }}

@if (valueOf('subType')) { {{ valueOf('subType') }} } @if (valueOf('clientId')) { Client {{ valueOf('clientId') }} }
person {{ entry.makerName || entry.maker }} {{ entry.maker }} schedule {{ formatDateTime(entry.madeOn) }} Submitted @if (entry.status !== 'PENDING' && entry.checker) { verified_user {{ entry.checkerName || entry.checker }} {{ entry.status === 'APPROVED' ? 'Approved by' : 'Rejected by' }} }
paymentsDaily Deposit {{ valueOf('dailyDepositAmount') || '—' }} collected every day
date_rangeTerm {{ valueOf('days') ? valueOf('days') + ' days' : '—' }} {{ valueOf('month') ? valueOf('month') + ' months' : '' }}
eventOpening Date {{ valueOf('openingDate') || '—' }} {{ valueOf('maturityDate') ? 'Matures ' + valueOf('maturityDate') : 'account opens' }}
support_agentAgent {{ valueOf('agentId') || '—' }} {{ valueOf('officeId') || '' }}
@for (group of fieldGroups; track group.name) {
{{ group.icon }} {{ group.name }}
@for (field of group.fields; track field.key) {
{{ field.label }} @if (field.format === 'yesno') { {{ field.value === 'Yes' ? 'check_circle' : 'remove_circle_outline' }} {{ field.value }} } @else { {{ field.value || '—' }} }
}
}
family_restroom Nominees @if (detail?.nomineeSplit && nominees.length) { Split by {{ detail.nomineeSplit }} } {{ nominees.length }}
@if (nominees.length) { @for (n of nominees; track $index; let i = $index) { }
# Name Relation Gender Mobile Birth Date Guardian Share
{{ i + 1 }} {{ n.name || '—' }} {{ n.relation || '—' }} {{ n.gender || '—' }} {{ n.mobileNo || '—' }} {{ n.birthDate || '—' }} {{ n.guardianName || '—' }} {{ n.share || '—' }}
} @else {
No nominee named in this request.
}
} @else {
@if (voucherNo || movesMoney) { {{ voucherNo || '—' }} } {{ entry.status }}{{ entry.voucherCancelled ? ' · VOUCHER CANCELLED' : '' }}
person {{ entry.makerName || entry.maker }} ({{ entry.maker }}) schedule {{ formatDateTime(entry.madeOn) }} @if (entry.status !== 'PENDING' && entry.checker) { check_circle Actioned by: {{ entry.checkerName || entry.checker }} }
swap_horiz {{ entry.type }} Summary
@if (movesMoney) {
Total Amount {{ entry.amount !== null && entry.amount !== undefined ? '₹' + (entry.amount | number: '1.2-2') : '—' }}
@if (entriesProjected) {
Ledger No journal entry is made when this is approved - it records what has been earned. The entries below are what the matching Posting run will book.
}
{{ entriesProjected ? 'DR Accounts (when posted)' : 'DR Accounts' }} {{ debitLines.length }} account{{ debitLines.length !== 1 ? 's' : '' }}
{{ entriesProjected ? 'CR Accounts (when posted)' : 'CR Accounts' }} {{ creditLines.length }} account{{ creditLines.length !== 1 ? 's' : '' }}
}
Details {{ entry.details || '—' }}
@if (detail?.description) {
Description {{ detail.description }}
}
} @if (debitLines.length) {
arrow_upward {{ entriesProjected ? 'Debit entries when posted' : 'Debit Entries' }} ({{ debitLines.length }} account{{ debitLines.length !== 1 ? 's' : '' }} — funds out)
@for (line of debitLines; track $index; let i = $index) { }
# Account No Account Name Type Amount (DR)
{{ i + 1 }} {{ line.accountNo || '—' }} {{ line.accountName || '—' }} {{ line.type || '—' }} ₹{{ line.amount | number: '1.2-2' }}
Total Debit ₹{{ total(debitLines) | number: '1.2-2' }}
} @if (creditLines.length) {
arrow_downward {{ entriesProjected ? 'Credit entries when posted' : 'Credit Entries' }} ({{ creditLines.length }} account{{ creditLines.length !== 1 ? 's' : '' }} — funds in)
@for (line of creditLines; track $index; let i = $index) { }
# Account No Account Name Type Amount (CR)
{{ i + 1 }} {{ line.accountNo || '—' }} {{ line.accountName || '—' }} {{ line.type || '—' }} ₹{{ line.amount | number: '1.2-2' }}
Total Credit ₹{{ total(creditLines) | number: '1.2-2' }}
} @if (entry.status === 'PENDING' && isMine && !done) {
info Your own entry

You made this entry, so another user with checker rights has to approve or reject it.

} @if (entry.status === 'REJECTED') {
cancel Rejected

Nothing was done{{ voucherNo ? '. Voucher ' + voucherNo + ' is cancelled and will not be used' : '' }}.

@if (entry.checker) {
manage_accounts {{ entry.checker }}
}
} @if (entry.status === 'APPROVED') {
check_circle Approved and carried out

{{ voucherNo ? 'Voucher ' + voucherNo : entry.entity === 'DDSBATCH' ? 'Posting is running - refresh for its voucher' : '—' }}

manage_accounts Approved by: {{ entry.checker || '—' }}
} @if (error) {
error Could not complete

{{ error }}

} @if (entry.status === 'PENDING' && !done) {
@if (!confirmReject) { } @else {
}
}
}