feat(investment): FD TDS fields, GOI interest to the paisa, compact home reminders, deal no in holdings and settle guard

This commit is contained in:
2026-10-20 16:16:12 +05:30
parent d584af8e54
commit 6890584b16
11 changed files with 316 additions and 82 deletions
@@ -106,6 +106,9 @@
@if (f.closureTds) {
· TDS ₹{{ f.closureTds | number: '1.2-2' }}
}
@if (f.closurePenal) {
· penal ₹{{ f.closurePenal | number: '1.2-2' }}
}
</small>
}
@if (f.renewedFromDealNo) {
@@ -240,7 +243,14 @@
/></label>
<label class="inv-form-field"
><span>Maturity Amount</span
><input type="text" [value]="'₹' + (q.expectedMaturityAmount | number: '1.2-2')" readonly
><input
type="text"
[value]="
q.expectedMaturityAmount === null || q.expectedMaturityAmount === undefined
? ''
: '₹' + (q.expectedMaturityAmount | number: '1.2-2')
"
readonly
/></label>
@if (q.payout !== 'MATURITY') {
<label class="inv-form-field"
@@ -416,12 +426,18 @@
<div class="inv-form-grid">
<label class="inv-form-field"
><span>Amount received from Bank (₹)</span
><input type="number" min="0" [(ngModel)]="payoutReceived" [placeholder]="r.grossInterest"
/></label>
<label class="inv-form-field"
><span>TDS deducted (₹)</span
><input type="number" min="0" [(ngModel)]="payoutTds" placeholder="0"
><input
type="number"
min="0"
[(ngModel)]="payoutReceived"
[placeholder]="r.grossInterest - (r.tds || 0)"
/></label>
@if (s.fd.tdsRate) {
<label class="inv-form-field"
><span>TDS deducted (₹) · auto at {{ s.fd.tdsRate }}%</span
><input type="number" min="0" [(ngModel)]="payoutTds" [placeholder]="r.tds || 0"
/></label>
}
<label class="inv-form-field">
<span>Received into</span>
<select [(ngModel)]="payoutBankGlAccountId">
@@ -432,8 +448,13 @@
</label>
</div>
<small
>Leave the amount blank to take the system's interest. Voucher: Dr bank + Dr 100602 TDS / Cr
100603 (provisioned) + Cr interest income (the rest).</small
>Leave the amount blank to take the system's interest.
@if (s.fd.tdsRate) {
Leave TDS blank to work it out at {{ s.fd.tdsRate }}%; enter the bank's figure if it differs.
} @else {
{{ s.fd.partyName }} does not deduct TDS (Bank / Party Master).
}
Voucher: Dr bank + Dr 100602 TDS / Cr 100603 (provisioned) + Cr interest income (the rest).</small
>
</td>
</tr>
@@ -506,10 +527,17 @@
[placeholder]="closure.type === 'PREMATURE' ? '' : (closureQuote?.receivedAmount ?? '')"
(change)="refreshClosureQuote()"
/></label>
<label class="inv-form-field"
><span>TDS deducted by Bank (₹)</span
><input type="number" min="0" [(ngModel)]="closure.tds" placeholder="0" (change)="refreshClosureQuote()"
/></label>
@if (closureFd?.tdsRate) {
<label class="inv-form-field"
><span>TDS deducted by Bank (₹) · auto at {{ closureFd?.tdsRate }}%</span
><input
type="number"
min="0"
[(ngModel)]="closure.tds"
[placeholder]="closureQuote?.tds ?? ''"
(change)="refreshClosureQuote()"
/></label>
}
@if (closure.type === 'PREMATURE') {
<label class="inv-form-field"
><span>Penal Interest (₹)</span
@@ -519,7 +547,7 @@
@if (closure.type !== 'RENEWAL') {
<label class="inv-form-field">
<span>Principal received into</span>
<select [(ngModel)]="closure.principalBankGlAccountId">
<select [(ngModel)]="closure.principalBankGlAccountId" (ngModelChange)="refreshClosureQuote()">
@for (g of bankGlOptions; track g.id) {
<option [ngValue]="g.id">{{ g.glCode }} — {{ g.name }}</option>
}
@@ -527,7 +555,7 @@
</label>
<label class="inv-form-field">
<span>Interest received into</span>
<select [(ngModel)]="closure.interestBankGlAccountId">
<select [(ngModel)]="closure.interestBankGlAccountId" (ngModelChange)="refreshClosureQuote()">
@for (g of bankGlOptions; track g.id) {
<option [ngValue]="g.id">{{ g.glCode }} — {{ g.name }}</option>
}
@@ -601,7 +629,7 @@
}}
— {{ closureTopUp > 0 ? 'paid from' : 'credited to' }}</span
>
<select [(ngModel)]="closure.diffBankGlAccountId">
<select [(ngModel)]="closure.diffBankGlAccountId" (ngModelChange)="refreshClosureQuote()">
<option [ngValue]="null">-- Select --</option>
@for (g of bankGlOptions; track g.id) {
<option [ngValue]="g.id">{{ g.glCode }} — {{ g.name }}</option>
@@ -659,6 +687,12 @@
}
</tbody>
</table>
@if (closure.type === 'RENEWAL' && closureTopUp !== 0 && !closure.diffBankGlAccountId) {
<p class="pg-sub" style="padding: 0 16px; color: #b42318">
Choose the bank for the {{ closureTopUp > 0 ? 'extra amount' : 'amount taken out' }} to complete the
voucher.
</p>
}
<p class="pg-sub" style="padding: 0 16px">
Voucher dated {{ q.closeDate }}. The lines follow the amounts entered above.
</p>