Upgrade to Angular 16
Merge `angular-update-16` into `dev` branch
This commit is contained in:
+7
-8
@@ -1,5 +1,5 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<div class="layout-row-wrap gap-2px responsive-column">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData" [value]="charge">
|
||||
@@ -8,7 +8,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<div class="flex-48 align-center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
@@ -16,8 +16,7 @@
|
||||
</div>
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
class="flex-98 mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0"
|
||||
@@ -104,9 +103,9 @@
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Overdue Charges' | translate }}</h4>
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Overdue Charges' | translate }}</h4>
|
||||
|
||||
<table mat-table class="mat-elevation-z1" [dataSource]="overDueChargesDataSource">
|
||||
<ng-container matColumnDef="name">
|
||||
@@ -134,7 +133,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row responsive-column align-center gap-2px margin-t">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
<form [formGroup]="datatableForm">
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div *ngFor="let datatableInput of datatableInputs" fxFlex="48%">
|
||||
<mat-form-field fxFlex="100%" *ngIf="!isBoolean(datatableInput.columnDisplayType)">
|
||||
<div class="layout-row-wrap gap-2px responsive-column">
|
||||
<div *ngFor="let datatableInput of datatableInputs" class="flex-48">
|
||||
<mat-form-field class="flex-100" *ngIf="!isBoolean(datatableInput.columnDisplayType)">
|
||||
<mat-label>{{ getInputName(datatableInput) }}</mat-label>
|
||||
|
||||
<mat-select
|
||||
@@ -55,7 +55,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row align-center gap-2percent margin-t responsive-column">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+14
-14
@@ -1,6 +1,6 @@
|
||||
<form [formGroup]="loansAccountDetailsForm">
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-form-field fxFlex="72%">
|
||||
<div class="layout-row-wrap gap-2px responsive-column">
|
||||
<mat-form-field class="flex-fill">
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }}</mat-label>
|
||||
<mat-select
|
||||
required
|
||||
@@ -25,13 +25,13 @@
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" *ngIf="loanProductSelected">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<div class="layout-row-wrap layout-lt-md-column gap-2percent" *ngIf="loanProductSelected">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.External id' | translate }}</mat-label>
|
||||
<input matInput formControlName="externalId" matTooltip="{{ 'tooltips.Provides an external id' | translate }}" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loanProductSelected">
|
||||
<mat-form-field class="flex-48" *ngIf="loanProductSelected">
|
||||
<mat-label>{{ 'labels.inputs.Loan officer' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="loanOfficerId"
|
||||
@@ -43,7 +43,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Loan Purpose' | translate }}</mat-label>
|
||||
<mat-select formControlName="loanPurposeId" matTooltip="{{ 'tooltips.Provides an indication' | translate }}">
|
||||
<mat-option *ngFor="let loanPurpose of loanPurposeOptions" [value]="loanPurpose.id">
|
||||
@@ -52,7 +52,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Fund' | translate }}</mat-label>
|
||||
<mat-select formControlName="fundId">
|
||||
<mat-option *ngFor="let fund of fundOptions" [value]="fund.id">
|
||||
@@ -61,7 +61,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="submitPicker.open()">
|
||||
<mat-form-field class="flex-48" (click)="submitPicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.Submitted on' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -80,7 +80,7 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="disbursementPicker.open()">
|
||||
<mat-form-field class="flex-48" (click)="disbursementPicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.Disbursement on' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -99,11 +99,11 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Savings Linkage' | translate }}</h3>
|
||||
<h3 class="mat-h3 flex-fill">{{ 'labels.heading.Savings Linkage' | translate }}</h3>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Link savings' | translate }}</mat-label>
|
||||
<mat-select formControlName="linkAccountId">
|
||||
<mat-option *ngFor="let savingaccount of accountLinkingOptions" [value]="savingaccount.id">
|
||||
@@ -112,12 +112,12 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="createStandingInstructionAtDisbursement">
|
||||
<mat-checkbox class="flex-48" formControlName="createStandingInstructionAtDisbursement">
|
||||
<p>{{ 'labels.inputs.Create standing instructions at disbursement' | translate }}</p>
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row align-center gap-2percent margin-t responsive-column">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+117
-119
@@ -1,51 +1,55 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Details' | translate }}</h3>
|
||||
<div class="content responsive-column">
|
||||
<h3 class="mat-h3 flex-fill">{{ 'labels.heading.Details' | translate }}</h3>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Product' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.productId | find: loansAccountTemplate.productOptions : 'id' : 'name' }}</span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Product' | translate }}:</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.productId | find: loansAccountTemplate.productOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.loanOfficerId">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Loan officer' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill" *ngIf="loansAccount.loanOfficerId">
|
||||
<span class="flex-40">{{ 'labels.inputs.Loan officer' | translate }}:</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.loanOfficerId | find: loansAccountProductTemplate.loanOfficerOptions : 'id' : 'displayName'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.loanPurposeId">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Loan purpose' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill" *ngIf="loansAccount.loanPurposeId">
|
||||
<span class="flex-40">{{ 'labels.inputs.Loan purpose' | translate }}:</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.loanPurposeId | find: loansAccountProductTemplate.loanPurposeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.fundId">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Fund' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.fundId | find: loansAccountProductTemplate.fundOptions : 'id' : 'name' }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.fundId">
|
||||
<span class="flex-40">{{ 'labels.inputs.Fund' | translate }}:</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.fundId | find: loansAccountProductTemplate.fundOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Submitted on' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Submitted on' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.submittedOnDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Disbursement on' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.expectedDisbursementDate | dateFormat }}</span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Disbursement on' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.expectedDisbursementDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.externalId">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.External id' | translate }}:</span>
|
||||
<span fxFlex="60%">
|
||||
<div class="flex-fill" *ngIf="loansAccount.externalId">
|
||||
<span class="flex-40">{{ 'labels.inputs.External id' | translate }}:</span>
|
||||
<span class="flex-60">
|
||||
<mifosx-external-identifier externalId="{{ loansAccount.externalId }}"></mifosx-external-identifier>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="activeClientMembers">
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Client Members' | translate }}</h3>
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
<div fxFlex="60%">
|
||||
<h3 class="mat-h3 margin-t flex-fill">{{ 'labels.heading.Client Members' | translate }}</h3>
|
||||
<mat-divider class="flex-fill"></mat-divider>
|
||||
<div class="flex-60">
|
||||
<table mat-table #membersTable [dataSource]="dataSource">
|
||||
<!-- ID Column -->
|
||||
<ng-container matColumnDef="id">
|
||||
@@ -79,13 +83,12 @@
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
<h3 class="mat-h3 margin-t flex-fill">{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Principal' | translate }}:</span>
|
||||
<span fxFlex="60%">
|
||||
<mat-divider class="flex-fill"></mat-divider>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Principal' | translate }}:</span>
|
||||
<span class="flex-60">
|
||||
{{
|
||||
loansAccount.principalAmount | currency: loansAccountProductTemplate.currency.code : 'symbol-narrow' : '1.2-2'
|
||||
}}
|
||||
@@ -93,9 +96,9 @@
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Loan Term' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Loan Term' | translate }}:</span>
|
||||
<span class="flex-60"
|
||||
>{{ loansAccount.loanTermFrequency }}
|
||||
{{
|
||||
loansAccount.loanTermFrequencyType | find: loansAccountProductTemplate.termFrequencyTypeOptions : 'id' : 'name'
|
||||
@@ -103,14 +106,14 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of repayments' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.numberOfRepayments }}</span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Number of repayments' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.numberOfRepayments }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Repaid every' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Repaid every' | translate }}:</span>
|
||||
<span class="flex-60"
|
||||
>{{ loansAccount.repaymentEvery }}
|
||||
{{
|
||||
loansAccount.repaymentFrequencyType | find: loansAccountProductTemplate.termFrequencyTypeOptions : 'id' : 'name'
|
||||
@@ -126,133 +129,131 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="productEnableDownPayment">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Enable Down Payments' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.enableDownPayment | yesNo }}</span>
|
||||
<div class="flex-fill" *ngIf="productEnableDownPayment">
|
||||
<span class="flex-40">{{ 'labels.inputs.Enable Down Payments' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.enableDownPayment | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.repaymentsStartingFromDate">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.First repayment on' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.repaymentsStartingFromDate | dateFormat }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.repaymentsStartingFromDate">
|
||||
<span class="flex-40">{{ 'labels.inputs.First repayment on' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.repaymentsStartingFromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestChargedFromDate">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest charged from' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.interestChargedFromDate | dateFormat }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.interestChargedFromDate">
|
||||
<span class="flex-40">{{ 'labels.inputs.Interest charged from' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.interestChargedFromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestRatePerPeriod">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Nominal interest rate' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
<div class="flex-fill" *ngIf="loansAccount.interestRatePerPeriod">
|
||||
<span class="flex-40">{{ 'labels.inputs.Nominal interest rate' | translate }}:</span>
|
||||
<span class="flex-60"
|
||||
>{{ loansAccount.interestRatePerPeriod }} {{
|
||||
loansAccountProductTemplate.interestRateFrequencyType.value
|
||||
}}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestType">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest method' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.interestType }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.interestType">
|
||||
<span class="flex-40">{{ 'labels.inputs.Interest method' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.interestType }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.isEqualAmortization">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Is Equal Amortization' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.isEqualAmortization }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.isEqualAmortization">
|
||||
<span class="flex-40">{{ 'labels.inputs.Is Equal Amortization' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.isEqualAmortization }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Amortization' | translate }}</span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Amortization' | translate }}</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.amortizationType | find: loansAccountProductTemplate.amortizationTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest calculation period' | translate }}: </span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Interest calculation period' | translate }}: </span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.interestCalculationPeriodType
|
||||
| find: loansAccountProductTemplate.interestCalculationPeriodTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.allowPartialPeriodInterestCalculation">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Calculate interest for exact days in partial period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.allowPartialPeriodInterestCalculation }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.allowPartialPeriodInterestCalculation">
|
||||
<span class="flex-40">{{ 'labels.inputs.Calculate interest for exact days in partial period' | translate }}:</span>
|
||||
<span class="flex-60">{{ loansAccount.allowPartialPeriodInterestCalculation }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.inArrearsTolerance">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Arrears tolerance' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.inArrearsTolerance }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.inArrearsTolerance">
|
||||
<span class="flex-40">{{ 'labels.inputs.Arrears tolerance' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.inArrearsTolerance }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnInterestCharged">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest free period' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnInterestCharged }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.graceOnInterestCharged">
|
||||
<span class="flex-40">{{ 'labels.inputs.Interest free period' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.graceOnInterestCharged }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Repayment strategy' | translate }}: </span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Repayment strategy' | translate }}: </span>
|
||||
<span class="flex-60">{{
|
||||
loansAccount.transactionProcessingStrategyCode
|
||||
| find: loansAccountProductTemplate.transactionProcessingStrategyOptions : 'code' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%"> {{ 'labels.inputs.Installment Amount' | translate }} </span>
|
||||
<span fxFlex="60%"> {{ loansAccount.fixedEmiAmount | formatNumber }} </span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40"> {{ 'labels.inputs.Installment Amount' | translate }} </span>
|
||||
<span class="flex-60"> {{ loansAccount.fixedEmiAmount | formatNumber }} </span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%"> {{ 'labels.inputs.Balloon Repayment Amount' | translate }} </span>
|
||||
<span fxFlex="60%"> {{ loansAccount.balloonRepaymentAmount | formatNumber }} </span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40"> {{ 'labels.inputs.Balloon Repayment Amount' | translate }} </span>
|
||||
<span class="flex-60"> {{ loansAccount.balloonRepaymentAmount | formatNumber }} </span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Moratorium' | translate }}</h3>
|
||||
<h3 class="mat-h3 margin-t flex-fill">{{ 'labels.heading.Moratorium' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnPrincipalPayment">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.On principal payment' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnPrincipalPayment }}</span>
|
||||
<mat-divider class="flex-fill"></mat-divider>
|
||||
<div class="flex-fill" *ngIf="loansAccount.graceOnPrincipalPayment">
|
||||
<span class="flex-40">{{ 'labels.inputs.On principal payment' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.graceOnPrincipalPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnInterestPayment">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.On interest payment' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnInterestPayment }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.graceOnInterestPayment">
|
||||
<span class="flex-40">{{ 'labels.inputs.On interest payment' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.graceOnInterestPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnArrearsAgeing">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.On Arrears Aging' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnArrearsAgeing }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.graceOnArrearsAgeing">
|
||||
<span class="flex-40">{{ 'labels.inputs.On Arrears Aging' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccount.graceOnArrearsAgeing }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%"> {{ 'labels.inputs.Enable installment level Delinquency' | translate }} </span>
|
||||
<span fxFlex="60%"> {{ loansAccount.enableInstallmentLevelDelinquency | yesNo }} </span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40"> {{ 'labels.inputs.Enable installment level Delinquency' | translate }} </span>
|
||||
<span class="flex-60"> {{ loansAccount.enableInstallmentLevelDelinquency | yesNo }} </span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.isTopup">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Is Topup Loan' | translate }}? </span>
|
||||
<span fxFlex="60%">{{ loansAccount.isTopup }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccount.isTopup">
|
||||
<span class="flex-40">{{ 'labels.inputs.Is Topup Loan' | translate }}? </span>
|
||||
<span class="flex-60">{{ loansAccount.isTopup }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Recalculate Interest' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccountProductTemplate?.isInterestRecalculationEnabled | yesNo }}</span>
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Recalculate Interest' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccountProductTemplate?.isInterestRecalculationEnabled | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountProductTemplate?.daysInMonthType">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in month' | translate }}: </span>
|
||||
<span fxFlex="60%">{{ loansAccountProductTemplate?.daysInMonthType.value }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccountProductTemplate?.daysInMonthType">
|
||||
<span class="flex-40">{{ 'labels.inputs.Days in month' | translate }}: </span>
|
||||
<span class="flex-60">{{ loansAccountProductTemplate?.daysInMonthType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column" class="margin-t">
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
<div *ngIf="loansAccount.charges.length" class="layout-row-wrap responsive-column flex-fill margin-t">
|
||||
<h3 class="mat-h3 flex-fill">{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="loansAccount.charges">
|
||||
<mat-divider class="flex-fill"></mat-divider>
|
||||
<table class="flex-fill mat-elevation-z1" mat-table [dataSource]="loansAccount.charges">
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
@@ -313,15 +314,12 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngIf="loansAccountProductTemplate.overdueCharges.length"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
class="margin-t"
|
||||
class="flex-fill layout-row-wrap layout-xs-column margin-t"
|
||||
>
|
||||
<h3 fxFlex="98%" class="mat-h3">{{ 'labels.heading.Overdue Charges' | translate }}</h3>
|
||||
<h3 class="mat-h3 flex-98">{{ 'labels.heading.Overdue Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
|
||||
<table mat-table class="mat-elevation-z1" [dataSource]="loansAccountProductTemplate.overdueCharges">
|
||||
<ng-container matColumnDef="name">
|
||||
@@ -350,7 +348,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row responsive-column align-center gap-2px margin-t">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+3
-3
@@ -1,17 +1,17 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<div class="layout-row-wrap responsive-column">
|
||||
<button mat-flat-button color="primary" (click)="showRepaymentInfo()">
|
||||
<fa-icon icon="calendar" class="m-r-10"></fa-icon>{{ 'labels.inputs.Generate Repayment Schedule' | translate }}
|
||||
</button>
|
||||
|
||||
<mifosx-repayment-schedule-tab
|
||||
fxFlex="100%"
|
||||
class="flex-100"
|
||||
[repaymentScheduleDetails]="repaymentScheduleDetails"
|
||||
[currencyCode]="currencyCode"
|
||||
>
|
||||
</mifosx-repayment-schedule-tab>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row responsive-column align-center gap-2px margin-t">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+98
-97
@@ -1,7 +1,7 @@
|
||||
<form [formGroup]="loansAccountTermsForm">
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div class="layout-row-wrap gap-2px responsive-column">
|
||||
<mifosx-input-amount
|
||||
fxFlex="48%"
|
||||
class="flex-48"
|
||||
*ngIf="currency"
|
||||
[currency]="currency"
|
||||
[isRequired]="true"
|
||||
@@ -10,12 +10,12 @@
|
||||
>
|
||||
</mifosx-input-amount>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
<h4 class="mat-h4 flex-98">
|
||||
{{ 'labels.heading.Term Options' | translate }}
|
||||
<i class="fas fa-question" matTooltip="{{ 'tooltips.The loan term parameter in loan accounts' | translate }}"></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Loan Term' | translate }}</mat-label>
|
||||
<input type="number" matInput required disabled formControlName="loanTermFrequency" />
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.loanTermFrequency.hasError('required')">
|
||||
@@ -24,7 +24,7 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="loanTermFrequencyType">
|
||||
<mat-option *ngFor="let type of termFrequencyTypeData" [value]="type.id">
|
||||
@@ -37,17 +37,17 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="20%" *ngIf="hasFixedLength()">
|
||||
<mat-form-field class="flex-fill flex-20" *ngIf="hasFixedLength()">
|
||||
<mat-label>{{ 'labels.inputs.Fixed Length' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedLength" />
|
||||
</mat-form-field>
|
||||
<span fxFlex="20%" *ngIf="hasFixedLength()" class="label-field">{{
|
||||
<span *ngIf="hasFixedLength()" class="flex-20 label-field">{{
|
||||
loansAccountTermsForm.value.loanTermFrequencyType | find: termFrequencyTypeData : 'id' : 'value'
|
||||
}}</span>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Repayments</h4>
|
||||
<h4 class="mat-h4 flex-98">Repayments</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Number of repayments' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
@@ -61,7 +61,7 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%" (click)="repaymentsPicker.open()">
|
||||
<mat-form-field class="flex-fill flex-23" (click)="repaymentsPicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.First repayment on' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -75,7 +75,7 @@
|
||||
<mat-datepicker #repaymentsPicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%" (click)="interestPicker.open()">
|
||||
<mat-form-field class="flex-fill flex-23" (click)="interestPicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.Interest charged from' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -89,7 +89,7 @@
|
||||
<mat-datepicker #interestPicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
<h4 class="mat-h4 flex-98">
|
||||
{{ 'labels.heading.Repaid Every' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
@@ -97,7 +97,7 @@
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Repaid every' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
@@ -112,7 +112,7 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyType" disabled required>
|
||||
<mat-option *ngFor="let repaymentFrequencyType of termFrequencyTypeData" [value]="repaymentFrequencyType.id">
|
||||
@@ -121,7 +121,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="14%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value === 2">
|
||||
<mat-form-field class="flex-fill flex-14" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value === 2">
|
||||
<mat-label>{{ 'labels.inputs.Select On' | translate }}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyNthDayType">
|
||||
<mat-option
|
||||
@@ -133,7 +133,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="14%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value === 2">
|
||||
<mat-form-field class="flex-fill flex-14" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value === 2">
|
||||
<mat-label>{{ 'labels.inputs.Select Day' | translate }}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyDayOfWeekType">
|
||||
<mat-option
|
||||
@@ -146,25 +146,24 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox
|
||||
fxFlex="73%"
|
||||
labelPosition="before"
|
||||
formControlName="enableDownPayment"
|
||||
matTooltip="{{ 'tooltips.Leave this checkbox checked if the loan has Down Payment' | translate }}"
|
||||
class="margin-b"
|
||||
class="margin-b flex-73"
|
||||
*ngIf="productEnableDownPayment"
|
||||
>
|
||||
{{ 'labels.inputs.Enable Down Payment' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Nominal interest rate' | translate }}</h4>
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.inputs.Nominal interest rate' | translate }}</h4>
|
||||
|
||||
<ng-container *ngIf="!loansAccountTermsData?.isLoanProductLinkedToFloatingRate">
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Nominal interest rate' | translate }} %</mat-label>
|
||||
<input type="number" matInput formControlName="interestRatePerPeriod" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<mat-select formControlName="interestRateFrequencyType">
|
||||
<mat-option
|
||||
@@ -180,7 +179,7 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Interest method' | translate }}</mat-label>
|
||||
<mat-select formControlName="interestType" matTooltip="{{ 'tooltips.The Interest method value' | translate }}">
|
||||
<mat-option *ngFor="let interestType of interestTypeData" [value]="interestType.id">
|
||||
@@ -189,7 +188,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Amortization' | translate }}</mat-label>
|
||||
<mat-select
|
||||
required
|
||||
@@ -206,13 +205,13 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%" *ngIf="isEqualPrincipalPayments()">
|
||||
<mat-form-field class="flex-fill flex-23" *ngIf="isEqualPrincipalPayments()">
|
||||
<mat-label>{{ 'labels.inputs.Principal Percentage Per Installment' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedPrincipalPercentagePerInstallment" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox
|
||||
fxFlex="23%"
|
||||
class="flex-23"
|
||||
formControlName="isEqualAmortization"
|
||||
[checked]="loansAccountTermsData?.isEqualAmortization"
|
||||
>
|
||||
@@ -221,8 +220,8 @@
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="loansAccountTermsData?.isLoanProductLinkedToFloatingRate">
|
||||
<div fxFlex="48%" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<div class="flex-48 layout-row-wrap gap-2percent layout-xs-column">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Interest Method' | translate }}</mat-label>
|
||||
<mat-select formControlName="interestType">
|
||||
<mat-option *ngFor="let interestType of interestTypeData" [value]="interestType.id">
|
||||
@@ -231,7 +230,7 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Amortization' | translate }}</mat-label>
|
||||
<mat-select
|
||||
required
|
||||
@@ -248,24 +247,24 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="isFloatingInterestRate">
|
||||
<mat-checkbox class="flex-48" formControlName="isFloatingInterestRate">
|
||||
<p>{{ 'labels.inputs.Is Floating Rate' | translate }}?</p>
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Loan Schedule' | translate }}</h4>
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.inputs.Loan Schedule' | translate }}</h4>
|
||||
|
||||
<div fxFlex="48%" *ngIf="loanScheduleType">
|
||||
<span fxFlex="40%"
|
||||
<div class="flex-48" *ngIf="loanScheduleType">
|
||||
<span class="flex-40"
|
||||
><p>{{ 'labels.inputs.Loan Schedule Type' | translate }}</p></span
|
||||
>
|
||||
<span fxFlex="60%"
|
||||
<span class="flex-60"
|
||||
><p>{{ loanScheduleType.value | translateKey: 'catalogs' }}</p></span
|
||||
>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Repayment Strategy' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="transactionProcessingStrategyCode"
|
||||
@@ -285,14 +284,14 @@
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsData?.canDefineInstallmentAmount">
|
||||
<mat-form-field class="flex-48" *ngIf="loansAccountTermsData?.canDefineInstallmentAmount">
|
||||
<mat-label>{{ 'labels.inputs.Installment Amount' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedEmiAmount" />
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Interest Calculations' | translate }}</h4>
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Interest Calculations' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-40">
|
||||
<mat-label>{{ 'labels.inputs.Interest calculation period' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCalculationPeriodType"
|
||||
@@ -308,7 +307,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
class="flex-48"
|
||||
formControlName="allowPartialPeriodInterestCalculation"
|
||||
matTooltip="{{ 'tooltips.To be used with SAME AS REPAYMENT PERIOD' | translate }}"
|
||||
>
|
||||
@@ -316,12 +315,12 @@
|
||||
</mat-checkbox>
|
||||
|
||||
<ng-container *ngIf="isProgressive">
|
||||
<mat-checkbox formControlName="interestRecognitionOnDisbursementDate" fxFlex="48%">
|
||||
<mat-checkbox formControlName="interestRecognitionOnDisbursementDate" class="flex-48">
|
||||
<p>{{ 'labels.inputs.Is interest recognition on disbursement date?' | translate }}</p>
|
||||
</mat-checkbox>
|
||||
</ng-container>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Arrears tolerance' | translate }} </mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -331,7 +330,7 @@
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Interest free period' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
@@ -340,47 +339,47 @@
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
<h4 class="mat-h4 flex-98">
|
||||
{{ 'labels.heading.Moratorium' | translate }}
|
||||
<i class="fas fa-question" matTooltip="{{ 'tooltips.The moratorium information' | translate }}"></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Grace on principal payment' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="graceOnPrincipalPayment" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-form-field class="flex-fill flex-23">
|
||||
<mat-label>{{ 'labels.inputs.Grace on interest payment' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="graceOnInterestPayment" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.On arrears ageing' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="graceOnArrearsAgeing" />
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlexFill fxFlex="48%" *ngIf="isDelinquencyEnabled()">
|
||||
<div class="flex-48 flex-fill" *ngIf="isDelinquencyEnabled()">
|
||||
<p>
|
||||
<span fxFlex="53%"
|
||||
<span class="flex-53"
|
||||
><b>{{ 'labels.inputs.Delinquency Bucket' | translate }}</b></span
|
||||
>
|
||||
<span fxFlex="48%">{{ loanProduct?.delinquencyBucket.name }}</span>
|
||||
<span class="flex-48">{{ loanProduct?.delinquencyBucket.name }}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div fxFlex="48%" *ngIf="isDelinquencyEnabled()">
|
||||
<div class="flex-48" *ngIf="isDelinquencyEnabled()">
|
||||
<mat-checkbox formControlName="enableInstallmentLevelDelinquency">
|
||||
<p>{{ 'labels.inputs.Enable installment level Delinquency' | translate }}</p>
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<ng-container fxFlex="48%" *ngIf="loansAccountTermsData?.isTopup">
|
||||
<mat-checkbox fxFlex="20%" formControlName="isTopup">
|
||||
<ng-container class="flex-48" *ngIf="loansAccountTermsData?.isTopup">
|
||||
<mat-checkbox class="flex-20" formControlName="isTopup">
|
||||
<p>{{ 'labels.inputs.Is Topup Loan' | translate }}?</p>
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="24%" *ngIf="loansAccountTermsForm.controls.isTopup.value">
|
||||
<mat-form-field class="flex-fill flex-24" *ngIf="loansAccountTermsForm.controls.isTopup.value">
|
||||
<mat-label>{{ 'labels.inputs.Loan closed with Topup' | translate }}</mat-label>
|
||||
<mat-select formControlName="loanIdToClose">
|
||||
<mat-option *ngFor="let clientActiveLoan of clientActiveLoanData" [value]="clientActiveLoan.id">
|
||||
@@ -390,44 +389,44 @@
|
||||
</mat-form-field>
|
||||
</ng-container>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%"
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40"
|
||||
><b>{{ 'labels.inputs.Recalculate Interest' | translate }}</b></span
|
||||
>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData?.isInterestRecalculationEnabled | yesNo }}</span>
|
||||
<span class="flex-60">{{ loansAccountTermsData?.isInterestRecalculationEnabled | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in year' | translate }}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.daysInYearType.value | translateKey: 'catalogs' }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span class="flex-40">{{ 'labels.inputs.Days in year' | translate }}</span>
|
||||
<span class="flex-60">{{ loansAccountTermsData.daysInYearType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Advance payments adjustment type' | translate }}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.interestRecalculationData.rescheduleStrategyType.value }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span class="flex-40">{{ 'labels.inputs.Advance payments adjustment type' | translate }}</span>
|
||||
<span class="flex-60">{{ loansAccountTermsData.interestRecalculationData.rescheduleStrategyType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in month' | translate }}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.daysInMonthType.value | translateKey: 'catalogs' }}</span>
|
||||
<div class="flex-fill" *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span class="flex-40">{{ 'labels.inputs.Days in month' | translate }}</span>
|
||||
<span class="flex-60">{{ loansAccountTermsData.daysInMonthType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest recalculation compounding on' | translate }}</span>
|
||||
<span fxFlex="60%">{{
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Interest recalculation compounding on' | translate }}</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.value
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Frequency Interval for recalculation' | translate }}</span>
|
||||
<span fxFlex="60%">
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Frequency Interval for recalculation' | translate }}</span>
|
||||
<span class="flex-60">
|
||||
<span>{{ loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyType.value }}</span>
|
||||
<span
|
||||
*ngIf="
|
||||
@@ -459,32 +458,34 @@
|
||||
</ng-container>
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
class="flex-fill"
|
||||
*ngIf="
|
||||
loansAccountTermsData?.isInterestRecalculationEnabled &&
|
||||
loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyType.id !== 1
|
||||
"
|
||||
>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Frequency Interval for recalculation' | translate }}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyInterval }}</span>
|
||||
<span class="flex-40">{{ 'labels.inputs.Frequency Interval for recalculation' | translate }}</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyInterval
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%"
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40"
|
||||
><b>{{ 'labels.inputs.Enable income capitalization' | translate }}</b></span
|
||||
>
|
||||
<span fxFlex="60%">{{ enableIncomeCapitalization | yesNo }}</span>
|
||||
<span class="flex-40">{{ enableIncomeCapitalization | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="multiDisburseLoan">
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<div fxFlexFill *ngIf="allowAddDisbursementDetails()">
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Loan Tranche Details' | translate }}</h4>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
<div class="flex-fill" *ngIf="allowAddDisbursementDetails()">
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Loan Tranche Details' | translate }}</h4>
|
||||
<mat-form-field class="flex-48">
|
||||
<mat-label>{{ 'labels.inputs.Maximum allowed outstanding balance' | translate }}</mat-label>
|
||||
<input matInput required formControlName="maxOutstandingLoanBalance" />
|
||||
</mat-form-field>
|
||||
<span fxFlex>
|
||||
<span class="flex">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
@@ -497,8 +498,8 @@
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div fxFlexFill *ngIf="!allowAddDisbursementDetails()">
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
<div class="flex-fill" *ngIf="!allowAddDisbursementDetails()">
|
||||
<h4 class="mat-h4 flex-98">
|
||||
{{ 'labels.heading.Loan Tranche Details are not allowed for this Loan Product' | translate }}
|
||||
</h4>
|
||||
</div>
|
||||
@@ -545,9 +546,9 @@
|
||||
loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.id !== 0
|
||||
"
|
||||
>
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Frequency for compounding' | translate }}</span>
|
||||
<span fxFlex="60%"
|
||||
<div class="flex-fill">
|
||||
<span class="flex-40">{{ 'labels.inputs.Frequency for compounding' | translate }}</span>
|
||||
<span class="flex-60"
|
||||
>{{ loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyType.value }}
|
||||
<span
|
||||
*ngIf="
|
||||
@@ -580,28 +581,28 @@
|
||||
</ng-container>
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
class="flex-fill"
|
||||
*ngIf="
|
||||
loansAccountTermsData?.isInterestRecalculationEnabled &&
|
||||
loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.id !== 0 &&
|
||||
loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyType.id !== 1
|
||||
"
|
||||
>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Frequency Interval for compounding' | translate }}</span>
|
||||
<span fxFlex="60%">{{
|
||||
<span class="flex-40">{{ 'labels.inputs.Frequency Interval for compounding' | translate }}</span>
|
||||
<span class="flex-60">{{
|
||||
loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyInterval
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<mat-divider class="flex-98"></mat-divider>
|
||||
|
||||
<div fxFlex="50%">
|
||||
<div fxLayout="column" fxFlex="50%" class="table-name">
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Collaterals Data' | translate }}</h4>
|
||||
<div class="flex-50">
|
||||
<div class="layout-column table-name flex-50">
|
||||
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Collaterals Data' | translate }}</h4>
|
||||
</div>
|
||||
|
||||
<div fxLayout="column" fxFlex="50%">
|
||||
<div fxLayout="row" fxLayoutAlign="flex-end">
|
||||
<div class="layout-column flex-50">
|
||||
<div class="layout-row align-flex-end">
|
||||
<button mat-raised-button color="primary" (click)="addCollateral()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
@@ -643,7 +644,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row align-center gap-2percent margin-t responsive-column">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" *ngIf="activeClientMembers">
|
||||
<table fxFlex="98%" mat-table [dataSource]="dataSource">
|
||||
<div *ngIf="activeClientMembers" class="layout-row-wrap gap-2percent layout-xs-column">
|
||||
<table class="flex-98" mat-table [dataSource]="dataSource">
|
||||
<!-- Check Column -->
|
||||
<ng-container matColumnDef="check">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
@@ -52,7 +52,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div class="layout-row responsive-column align-center gap-2px margin-t">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
|
||||
Reference in New Issue
Block a user