Fixed and Recurring Deposit wizards now bidirectionally sync the Product tab's linked-account selection with the new Terms tab's Transfer-to-Savings account, disable the Withdraw Deposit maturity instruction end-to-end, and card-style the Transfer to Savings picker to match the existing linked-account UI. Adds a printable FD/RD deposit certificate from the account view page, following the existing letter-mgmt certificate pattern. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
109 lines
4.4 KiB
HTML
109 lines
4.4 KiB
HTML
<!--
|
|
Copyright since 2025 Mifos Initiative
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
-->
|
|
|
|
<form [formGroup]="closureSettingsForm" class="layout-row-wrap gap-2px responsive-column">
|
|
<h4 class="mat-h4 flex-98">{{ 'labels.heading.For Pre-mature closure' | translate }}</h4>
|
|
|
|
<mat-form-field class="flex-48">
|
|
<mat-label>{{ 'labels.inputs.Maturity Instructions' | translate }}</mat-label>
|
|
<mat-select formControlName="maturityInstructionId">
|
|
@for (maturityInstruction of maturityInstructionOptions; track maturityInstruction) {
|
|
<mat-option [value]="maturityInstruction.id">
|
|
{{ maturityInstruction.value | translateKey: 'catalogs' }}
|
|
</mat-option>
|
|
}
|
|
</mat-select>
|
|
</mat-form-field>
|
|
|
|
@if (closureSettingsForm.contains('transferToSavingsId')) {
|
|
<div class="dal-card flex-98">
|
|
<div class="dal-card__header">
|
|
<div class="dal-card__header-left">
|
|
<div class="dal-card__icon">
|
|
<mat-icon>savings</mat-icon>
|
|
</div>
|
|
<div>
|
|
<h3 class="dal-card__title">{{ 'labels.inputs.Transfer to savings account' | translate }}</h3>
|
|
<span class="dal-card__sub">Maturity proceeds will be credited to this account</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="dal-card__body">
|
|
@if (selectedTransferAccount) {
|
|
<div class="dal-selected">
|
|
<div class="dal-selected__info">
|
|
<span class="dal-type-badge dal-type-badge--savings">
|
|
<mat-icon>savings</mat-icon>
|
|
Savings
|
|
</span>
|
|
<div class="dal-selected__details">
|
|
<span class="dal-selected__accno">{{ selectedTransferAccount.accountNo }}</span>
|
|
<span class="dal-selected__product">{{ selectedTransferAccount.savingsProductName }}</span>
|
|
</div>
|
|
@if (selectedTransferAccount.summary?.accountBalance != null) {
|
|
<div class="dal-selected__balance">
|
|
<span class="dal-selected__bal-label">Balance</span>
|
|
<span class="dal-selected__bal-amount">
|
|
{{ selectedTransferAccount.currency?.code }}
|
|
{{ selectedTransferAccount.summary.accountBalance | number: '1.2-2' }}
|
|
</span>
|
|
</div>
|
|
}
|
|
</div>
|
|
<button
|
|
mat-stroked-button
|
|
color="primary"
|
|
type="button"
|
|
class="dal-change-btn"
|
|
(click)="clearTransferAccount()"
|
|
>
|
|
<mat-icon>swap_horiz</mat-icon>
|
|
Change
|
|
</button>
|
|
</div>
|
|
} @else {
|
|
<mat-form-field appearance="outline" class="flex-98">
|
|
<mat-label>{{ 'labels.inputs.Transfer to savings account' | translate }}</mat-label>
|
|
<mat-select formControlName="transferToSavingsId" required>
|
|
@for (account of savingsAccountsData; track account) {
|
|
<mat-option [value]="account.id">
|
|
({{ account.accountNo }}) {{ account.savingsProductName }}
|
|
</mat-option>
|
|
}
|
|
</mat-select>
|
|
<mat-error>Transfer to savings account is required</mat-error>
|
|
</mat-form-field>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<mat-checkbox class="flex-98 margin-v" labelPosition="before" formControlName="preClosurePenalApplicable">
|
|
{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}
|
|
</mat-checkbox>
|
|
|
|
@if (closureSettingsForm.value.preClosurePenalApplicable) {
|
|
<mat-form-field class="flex-48">
|
|
<mat-label>{{ 'labels.inputs.Penal Interest' | translate }} (%)</mat-label>
|
|
<input type="number" matInput formControlName="preClosurePenalInterest" min="0" step="0.01" />
|
|
</mat-form-field>
|
|
|
|
<mat-form-field class="flex-48">
|
|
<mat-label>{{ 'labels.inputs.Period' | translate }}</mat-label>
|
|
<mat-select formControlName="preClosurePenalInterestOnTypeId">
|
|
@for (preClosurePenalInterestOnType of preClosurePenalInterestOnTypeData; track preClosurePenalInterestOnType) {
|
|
<mat-option [value]="preClosurePenalInterestOnType.id">
|
|
{{ preClosurePenalInterestOnType.value | translateKey: 'catalogs' }}
|
|
</mat-option>
|
|
}
|
|
</mat-select>
|
|
</mat-form-field>
|
|
}
|
|
</form>
|