feat:Unificaction of radhathakare's PR (#1879)
* feat:Clients Translate Module * feat: Collections Translate Module * feat:Loan Translate Module * feat:Search Translate Module * feat English Json File --------- Co-authored-by: radhathakare <radhathakare322@gmail.com>
This commit is contained in:
co-authored by
radhathakare
parent
3e1067bfc6
commit
d92f6c1c5e
+17
-17
@@ -1,7 +1,7 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Charge</mat-label>
|
||||
<mat-label>{{"labels.inputs.Charge" |translate}}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData" [value]="charge">
|
||||
{{ charge.name }}
|
||||
@@ -12,7 +12,7 @@
|
||||
<div fxFlex="48%" fxFlexAlign="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>
|
||||
Add
|
||||
{{"labels.buttons.Add" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -20,21 +20,21 @@
|
||||
[hidden]="chargesDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Type" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
<button mat-icon-button color="primary" (click)="editChargeAmount(charge)">
|
||||
@@ -44,14 +44,14 @@
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="date">
|
||||
<th mat-header-cell *matHeaderCellDef> Date </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Date" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<span
|
||||
*ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'">
|
||||
@@ -63,7 +63,7 @@
|
||||
<span
|
||||
*ngIf="!(charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|
||||
|| charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee')">
|
||||
N/A
|
||||
{{"labels.inputs.N/A" |translate}}
|
||||
</span>
|
||||
<button mat-icon-button color="primary" *ngIf="charge.chargeTimeType.value === 'Weekly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|
||||
|| charge.chargeTimeType.value === 'Specified due date'" (click)="editChargeDate(charge)">
|
||||
@@ -73,7 +73,7 @@
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> Actions </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -88,27 +88,27 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Overdue Charges</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Overdue Charges" |translate}}</h4>
|
||||
|
||||
<table mat-table class="mat-elevation-z1" [dataSource]="overDueChargesDataSource">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.name }},{{ charge.currency.displaySymbol }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Type" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.amount| formatNumber }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="collectedon">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
@@ -121,13 +121,13 @@
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!loansAccountFormValid">
|
||||
Next
|
||||
{{"labels.buttons.Next" |translate}}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
|
||||
Cancel
|
||||
{{"labels.buttons.Cancel" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+2
-2
@@ -40,10 +40,10 @@
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
Next
|
||||
{{"labels.buttons.Next" |translate}}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+22
-22
@@ -3,20 +3,20 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Product Name</mat-label>
|
||||
<mat-select formControlName="productId" matTooltip="The name of the loan product that the loan account is based upon" required>
|
||||
<mat-label>{{"labels.inputs.Product Name" |translate}}</mat-label>
|
||||
<mat-select formControlName="productId" matTooltip="{{ 'tooltips.Name of the loan product' | translate }}" required>
|
||||
<mat-option *ngFor="let product of productData" [value]="product.id">
|
||||
{{ product.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
Product Name is <strong>required</strong>
|
||||
{{"labels.inputs.Product Name" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loanProductSelected">
|
||||
<mat-label>Loan officer</mat-label>
|
||||
<mat-select formControlName="loanOfficerId" matTooltip="The financial institution representative who has responsibility for, and interacts with, the client/group associated with a loan account">
|
||||
<mat-label>{{"labels.inputs.Loan officer" |translate}}</mat-label>
|
||||
<mat-select formControlName="loanOfficerId" matTooltip="{{ 'tooltips.Financial institution representative' | translate }}">
|
||||
<mat-option *ngFor="let loanOfficer of loanOfficerOptions" [value]="loanOfficer.id">
|
||||
{{ loanOfficer.displayName }}
|
||||
</mat-option>
|
||||
@@ -27,8 +27,8 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" *ngIf="loanProductSelected">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Loan purpose</mat-label>
|
||||
<mat-select formControlName="loanPurposeId" matTooltip="Provides an indication of how the funds provided through the loan will be directed and can be used to group loans with the same purpose for reporting">
|
||||
<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">
|
||||
{{ loanPurpose.name }}
|
||||
</mat-option>
|
||||
@@ -36,7 +36,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Fund</mat-label>
|
||||
<mat-label>{{"labels.inputs.Fund" |translate}}</mat-label>
|
||||
<mat-select formControlName="fundId">
|
||||
<mat-option *ngFor="let fund of fundOptions" [value]="fund.id">
|
||||
{{ fund.name }}
|
||||
@@ -45,38 +45,38 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="submitPicker.open()">
|
||||
<mat-label>Submitted on</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submitPicker" matTooltip="The date the loan account application was received" required
|
||||
<mat-label>{{"labels.inputs.Submitted on" |translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submitPicker" matTooltip="{{ 'tooltips.Date the loan account application' | translate }}" required
|
||||
formControlName="submittedOnDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="submitPicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #submitPicker></mat-datepicker>
|
||||
<mat-error *ngIf="loansAccountDetailsForm.controls.submittedOnDate?.hasError('required')">
|
||||
Submitted on is <strong>required</strong>
|
||||
{{"labels.inputs.Submitted on" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="disbursementPicker.open()">
|
||||
<mat-label>Disbursement on</mat-label>
|
||||
<input matInput [min]="loansAccountDetailsForm.value.submittedOnDate" [max]="maxDate" [matDatepicker]="disbursementPicker" matTooltip="The date that the loan account is expected to be disbursed" required
|
||||
<mat-label>{{"labels.inputs.Disbursement on" |translate}}</mat-label>
|
||||
<input matInput [min]="loansAccountDetailsForm.value.submittedOnDate" [max]="maxDate" [matDatepicker]="disbursementPicker" matTooltip="{{ 'tooltips.Date that the loan account disbursed' | translate }}" required
|
||||
formControlName="expectedDisbursementDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="disbursementPicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #disbursementPicker></mat-datepicker>
|
||||
<mat-error *ngIf="loansAccountDetailsForm.controls.submittedOnDate?.hasError('required')">
|
||||
Disbursement on is <strong>required</strong>
|
||||
{{"labels.inputs.Disbursement on" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>External id</mat-label>
|
||||
<input matInput formControlName="externalId" matTooltip="Provides an external id for the loan account">
|
||||
<mat-label>{{"labels.inputs.External id" |translate}}</mat-label>
|
||||
<input matInput formControlName="externalId" matTooltip="{{ 'tooltips.Provides an external id' | translate }}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Savings Linkage</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Savings Linkage" |translate}}</h3>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Link savings</mat-label>
|
||||
<mat-label>{{"labels.inputs.Link savings" |translate}}</mat-label>
|
||||
<mat-select formControlName="linkAccountId">
|
||||
<mat-option *ngFor="let savingaccount of accountLinkingOptions" [value]="savingaccount.id">
|
||||
({{ savingaccount.accountNo }}) {{ savingaccount.productName }}
|
||||
@@ -85,21 +85,21 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="createStandingInstructionAtDisbursement">
|
||||
<p>Create standing instructions at disbursement</p>
|
||||
<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%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
Next
|
||||
{{"labels.buttons.Next" |translate}}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
|
||||
Cancel
|
||||
{{"labels.buttons.Cancel" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
+46
-46
@@ -1,52 +1,52 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Details</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Details" |translate}}</h3>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Product:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Product" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.productId | find:loansAccountTemplate.productOptions:'id':'name' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.loanOfficerId">
|
||||
<span fxFlex="40%">Loan officer:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Loan officer" |translate}}:</span>
|
||||
<span
|
||||
fxFlex="60%">{{ loansAccount.loanOfficerId | find:loansAccountProductTemplate.loanOfficerOptions:'id':'displayName'}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.loanPurposeId">
|
||||
<span fxFlex="40%">Loan purpose:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Loan purpose" |translate}}:</span>
|
||||
<span
|
||||
fxFlex="60%">{{ loansAccount.loanPurposeId | find:loansAccountProductTemplate.loanPurposeOptions:'id':'name'}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.fundId">
|
||||
<span fxFlex="40%">Fund:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Fund" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.fundId | find:loansAccountProductTemplate.fundOptions:'id':'name'}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Submitted on:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Submitted on" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Disbursement on:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Disbursement on" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.expectedDisbursementDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.externalId">
|
||||
<span fxFlex="40%">External id:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.External id" |translate}}:</span>
|
||||
<span fxFlex="60%">
|
||||
<mifosx-external-identifier externalId="{{loansAccount.externalId}}"></mifosx-external-identifier>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Terms</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Terms" |translate}}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Principal:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Principal" |translate}}:</span>
|
||||
<span fxFlex="60%">
|
||||
{{ loansAccount.principalAmount | currency:loansAccountProductTemplate.currency.code:'symbol-narrow':'1.2-2'}}
|
||||
<span class="m-l-5">{{loansAccountProductTemplate.currency.code}}</span>
|
||||
@@ -54,18 +54,18 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Loan term:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Loan term" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.loanTermFrequency }}
|
||||
{{loansAccount.loanTermFrequencyType | find: loansAccountProductTemplate.termFrequencyTypeOptions:'id':'name'}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Number of repayments:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Number of repayments" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.numberOfRepayments }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Repaid every:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Repaid every" |translate}}:</span>
|
||||
<span fxFlex="60%">{{loansAccount.repaymentEvery}}
|
||||
{{loansAccount.repaymentFrequencyType | find: loansAccountProductTemplate.termFrequencyTypeOptions:'id':'name'}}
|
||||
{{loansAccount.repaymentFrequencyNthDayType | find: loansAccountProductTemplate.repaymentFrequencyNthDayTypeOptions:'id': 'name'}}
|
||||
@@ -73,137 +73,137 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.repaymentsStartingFromDate">
|
||||
<span fxFlex="40%">First repayment on:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.First repayment on" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.repaymentsStartingFromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestChargedFromDate">
|
||||
<span fxFlex="40%">Interest charged from:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Interest charged from" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.interestChargedFromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestRatePerPeriod">
|
||||
<span fxFlex="40%">Nominal interest rate:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Nominal interest rate" |translate}}:</span>
|
||||
<span
|
||||
fxFlex="60%">{{loansAccount.interestRatePerPeriod}} {{loansAccountProductTemplate.interestRateFrequencyType.value}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.interestType">
|
||||
<span fxFlex="40%">Interest method: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Interest method" |translate}}: </span>
|
||||
<span fxFlex="60%">{{loansAccount.interestType}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.isEqualAmortization">
|
||||
<span fxFlex="40%">Is Equal Amortization:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Is Equal Amortization" |translate}}:</span>
|
||||
<span fxFlex="60%">{{loansAccount.isEqualAmortization}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Amortization</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Amortization" |translate}}</span>
|
||||
<span
|
||||
fxFlex="60%">{{ loansAccount.amortizationType | find:loansAccountProductTemplate.amortizationTypeOptions:'id':'value' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Interest calculation period: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Interest calculation period" |translate}}: </span>
|
||||
<span
|
||||
fxFlex="60%">{{ loansAccount.interestCalculationPeriodType | find:loansAccountProductTemplate.interestCalculationPeriodTypeOptions:'id':'value' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.allowPartialPeriodInterestCalcualtion">
|
||||
<span fxFlex="40%">Calculate interest for exact days in partial period:</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Calculate interest for exact days in partial period" |translate}}:</span>
|
||||
<span fxFlex="60%">{{ loansAccount.allowPartialPeriodInterestCalcualtion }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.inArrearsTolerance">
|
||||
<span fxFlex="40%">Arrears tolerance: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Arrears tolerance" |translate}}: </span>
|
||||
<span
|
||||
fxFlex="60%">{{loansAccount.inArrearsTolerance}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnInterestCharged">
|
||||
<span fxFlex="40%">Interest free period: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Interest free period" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnInterestCharged }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Repayment strategy: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Repayment strategy" |translate}}: </span>
|
||||
<span
|
||||
fxFlex="60%">{{ loansAccount.transactionProcessingStrategyCode | find:loansAccountTemplate.transactionProcessingStrategyOptions:'code':'name' }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Moratorium</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Moratorium" |translate}}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnPrincipalPayment">
|
||||
<span fxFlex="40%">On principal payment: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.On principal payment" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnPrincipalPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnInterestPayment">
|
||||
<span fxFlex="40%">On interest payment: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.On interest payment" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnInterestPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.graceOnArrearsAgeing">
|
||||
<span fxFlex="40%">On Arrears Aging: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.On Arrears Aging" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccount.graceOnArrearsAgeing }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.isTopup">
|
||||
<span fxFlex="40%">Is Topup Loan? </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Is Topup Loan" |translate}}? </span>
|
||||
<span fxFlex="60%">{{ loansAccount.isTopup }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Recalculate Interest: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccountProductTemplate?.isInterestRecalculationEnabled? 'Yes' : 'No' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountProductTemplate?.daysInMonthType">
|
||||
<span fxFlex="40%">Days in month: </span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Days in month" |translate}}: </span>
|
||||
<span fxFlex="60%">{{ loansAccountProductTemplate?.daysInMonthType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Charges</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Charges" |translate}}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="loansAccount.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Type" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="date">
|
||||
<th mat-header-cell *matHeaderCellDef> Date </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Date" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<span
|
||||
*ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'">
|
||||
@@ -215,7 +215,7 @@
|
||||
<span
|
||||
*ngIf="!(charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|
||||
|| charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee')">
|
||||
N/A
|
||||
{{"labels.inputs.N/A" |translate}}
|
||||
</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
@@ -229,29 +229,29 @@
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountProductTemplate.overdueCharges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 fxFlex="98%" class="mat-h3">Overdue Charges</h3>
|
||||
<h3 fxFlex="98%" class="mat-h3">{{"labels.heading.Overdue Charges" |translate}}</h3>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<table mat-table class="mat-elevation-z1" [dataSource]="loansAccountProductTemplate.overdueCharges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.name }},{{ charge.currency.displaySymbol }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Type" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.amount| formatNumber }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="collectedon">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
@@ -265,12 +265,12 @@
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
Cancel
|
||||
{{"labels.buttons.Cancel" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submit.emit()">
|
||||
Submit
|
||||
{{"labels.buttons.Submit" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<a mat-button (click)="showRepaymentInfo()">
|
||||
Repayment Info
|
||||
{{"labels.inputs.Repayment Info" |translate}}
|
||||
</a>
|
||||
|
||||
<mifosx-repayment-schedule-tab fxFlex="100%" [repaymentScheduleDetails]="repaymentScheduleDetails"
|
||||
@@ -13,13 +13,13 @@
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
Next
|
||||
{{"labels.buttons.Next" |translate}}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
|
||||
Cancel
|
||||
{{"labels.buttons.Cancel" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+74
-74
@@ -3,68 +3,68 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Principal {{currencyDisplaySymbol}}</mat-label>
|
||||
<mat-label>{{"labels.inputs.Principal" |translate}} {{currencyDisplaySymbol}}</mat-label>
|
||||
<input type="number" matInput formControlName="principalAmount">
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.principalAmount.hasError('required')">
|
||||
Principal is <strong>required</strong>
|
||||
{{"labels.inputs.Principal" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Term Options <i class="fas fa-question" matTooltip="The loan term parameter in loan accounts
|
||||
is the default-calculated field based on the number of repayments and repaid every value entered by the user"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Term Options <i class="fas fa-question" matTooltip="The loan term parameter in loan accounts
|
||||
is the default-calculated field based on the number of repayments and repaid every value entered by the user"></i>" |translate}}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Loan Term</mat-label>
|
||||
<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')">
|
||||
Loan Term is <strong>required</strong>
|
||||
{{"labels.inputs.Loan Term" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Frequency</mat-label>
|
||||
<mat-label>{{"labels.inputs.Frequency" |translate}}</mat-label>
|
||||
<mat-select required formControlName="loanTermFrequencyType">
|
||||
<mat-option *ngFor="let type of termFrequencyTypeData" [value]="type.id">
|
||||
{{ type.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.loanTermFrequencyType.hasError('required')">
|
||||
Frequency is <strong>required</strong>
|
||||
{{"labels.inputs.Frequency" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Repayments </h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Number of repayments</mat-label>
|
||||
<mat-label>{{"labels.inputs.Number of repayments" |translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="numberOfRepayments" matTooltip="Enter the total count of repayments that loan schedule has excluding the down-payment. Example:
|
||||
If the loan account has 4 Installments including down-payment then number of repayments is equal to 3">
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.numberOfRepayments.hasError('required')">
|
||||
Number of repayments is <strong>required</strong>
|
||||
{{"labels.inputs.Number of repayments" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="repaymentsPicker.open()">
|
||||
<mat-label>First repayment on</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" matTooltip="May be entered to override the date the system would schedule" [matDatepicker]="repaymentsPicker"
|
||||
<mat-label>{{"labels.inputs.First repayment on" |translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" matTooltip="{{ 'tooltips.May be entered to override' | translate }}" [matDatepicker]="repaymentsPicker"
|
||||
formControlName="repaymentsStartingFromDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="repaymentsPicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #repaymentsPicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Repaid Every</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Repaid Every" |translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Fields are input to calculating the repayment schedule' | translate }}"></i></h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Repaid every</mat-label>
|
||||
<mat-label>{{"labels.inputs.Repaid every" |translate}}</mat-label>
|
||||
<input type="number" matInput required formControlName="repaymentEvery"
|
||||
matTooltip="These fields are input to calculating the repayment schedule for a loan account and are used to determine when payments are due.">
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.repaymentEvery.hasError('required')">
|
||||
Repaid every is <strong>required</strong>
|
||||
{{"labels.inputs.Repaid every" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Frequency</mat-label>
|
||||
<mat-label>{{"labels.inputs.Frequency" |translate}}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyType" disabled required>
|
||||
<mat-option *ngFor="let repaymentFrequencyType of termFrequencyTypeData" [value]="repaymentFrequencyType.id">
|
||||
{{ repaymentFrequencyType.value }}
|
||||
@@ -73,7 +73,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value == 2">
|
||||
<mat-label>Select On</mat-label>
|
||||
<mat-label>{{"labels.inputs.Select On" |translate}}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyNthDayType">
|
||||
<mat-option *ngFor="let repaymentFrequencyNthDayType of repaymentFrequencyNthDayTypeData"
|
||||
[value]="repaymentFrequencyNthDayType.id">
|
||||
@@ -83,7 +83,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value == 2">
|
||||
<mat-label>Select Day</mat-label>
|
||||
<mat-label>{{"labels.inputs.Select Day" |translate}}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyDayOfWeekType">
|
||||
<mat-option *ngFor="let repaymentFrequencyDayOfWeekType of repaymentFrequencyDaysOfWeekTypeData"
|
||||
[value]="repaymentFrequencyDayOfWeekType.id">
|
||||
@@ -93,8 +93,8 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="interestPicker.open()">
|
||||
<mat-label>Interest charged from</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="interestPicker" matTooltip="May be entered to override the date the system would start charging interest"
|
||||
<mat-label>{{"labels.inputs.Interest charged from" |translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="interestPicker" matTooltip="{{ 'tooltips.May be entered to override the date' | translate }}"
|
||||
formControlName="interestChargedFromDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="interestPicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #interestPicker></mat-datepicker>
|
||||
@@ -103,13 +103,13 @@
|
||||
<ng-container *ngIf="!loansAccountTemplate?.isLoanProductLinkedToFloatingRate">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Nominal interest rate</mat-label>
|
||||
<mat-label>{{"labels.inputs.Nominal interest rate" |translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="interestRatePerPeriod">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Interest method</mat-label>
|
||||
<mat-select formControlName="interestType" matTooltip="The Interest method value is input to calculating the payments amount for repayment of the loan.">
|
||||
<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">
|
||||
{{ interestType.value }}
|
||||
</mat-option>
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="isEqualAmortization"
|
||||
[checked]="loansAccountTermsData?.isEqualAmortization">
|
||||
<p>Is Equal Amortization</p>
|
||||
<p>{{"labels.inputs.Is Equal Amortization" |translate}}</p>
|
||||
</mat-checkbox>
|
||||
|
||||
</ng-container>
|
||||
@@ -128,7 +128,7 @@
|
||||
<div fxFlex="48%" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Interest Method</mat-label>
|
||||
<mat-label>{{"labels.inputs.Interest Method" |translate}}</mat-label>
|
||||
<mat-select formControlName="interestType">
|
||||
<mat-option *ngFor="let interestType of interestTypeData" [value]="interestType.id">
|
||||
{{ interestType.value }}
|
||||
@@ -137,7 +137,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="isFloatingInterestRate">
|
||||
<p>Is Floating Rate?</p>
|
||||
<p>{{"labels.inputs.Is Floating Rate" |translate}}?</p>
|
||||
</mat-checkbox>
|
||||
|
||||
</div>
|
||||
@@ -145,22 +145,22 @@
|
||||
</ng-container>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Amortization</mat-label>
|
||||
<mat-select required matTooltip="The Amortization value is input to calculating the repayment amounts for repayment of the loan." formControlName="amortizationType">
|
||||
<mat-label>{{"labels.inputs.Amortization" |translate}}</mat-label>
|
||||
<mat-select required matTooltip="{{ 'tooltips.The Amortization value' | translate }}" formControlName="amortizationType">
|
||||
<mat-option *ngFor="let amortizationType of amortizationTypeData" [value]="amortizationType.id">
|
||||
{{ amortizationType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.amortizationType.hasError('required')">
|
||||
Amortization Type is <strong>required</strong>
|
||||
{{"labels.inputs.Amortization Type" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Interest Calculations</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Interest Calculations" |translate}}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Interest calculation period</mat-label>
|
||||
<mat-select formControlName="interestCalculationPeriodType" matTooltip="Daily - Will Calculate the interest on DAILY basis ex: Month of February has 28days and it will calculate interest for 28days, SAME AS REPAYMENT PERIOD- it calculates for the month,that is, 30days.">
|
||||
<mat-label>{{"labels.inputs.Interest calculation period" |translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationPeriodType" matTooltip="{{ 'tooltips.Daily - Will Calculate the interest' | translate }}">
|
||||
<mat-option *ngFor="let interestCalculationPeriodType of interestCalculationPeriodTypeData"
|
||||
[value]="interestCalculationPeriodType.id">
|
||||
{{ interestCalculationPeriodType.value }}
|
||||
@@ -168,62 +168,62 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="allowPartialPeriodInterestCalcualtion" matTooltip="To be used with SAME AS REPAYMENT PERIOD- for calculating exact interest with partial period ex: Interest charged from is 5th of April , Principal is 10000 and interest is 1% per month then the interest will be (10000 * 1%)* (25/30) , it calculates for the month first then calculates exact periods between start date and end date(can be a decimal)">
|
||||
<p>Calculate interest for exact days in partial period</p>
|
||||
<mat-checkbox fxFlex="48%" formControlName="allowPartialPeriodInterestCalcualtion" matTooltip="{{ 'tooltips.To be used with SAME AS REPAYMENT PERIOD' | translate }}">
|
||||
<p>{{"labels.inputs.Calculate interest for exact days in partial period" |translate}}</p>
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Arrears tolerance {{currencyDisplaySymbol}}</mat-label>
|
||||
<input matInput type="number" formControlName="inArrearsTolerance" matTooltip="With 'Arrears tolerance' you can specify a tolerance amount and if the loan is behind (in arrears), but within the tolerance, it won't be classified as 'in arrears' and part of the portfolio at risk.">
|
||||
<mat-label>{{"labels.inputs.Arrears tolerance" |translate}} {{currencyDisplaySymbol}}</mat-label>
|
||||
<input matInput type="number" formControlName="inArrearsTolerance" matTooltip="{{ 'tooltips.With Arrears tolerance' | translate }}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Interest free period</mat-label>
|
||||
<input matInput formControlName="graceOnInterestCharged" matTooltip="If the Interest Free Period is '4' and the client's Repayment Frequency is every week, then for the first four weeks the client need not to pay interest, he has to pay principle due for that week only.">
|
||||
<mat-label>{{"labels.inputs.Interest free period" |translate}}</mat-label>
|
||||
<input matInput formControlName="graceOnInterestCharged" matTooltip="{{ 'tooltips.If the Interest Free Period' | translate }}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Repayment strategy</mat-label>
|
||||
<mat-select formControlName="transactionProcessingStrategyCode" matTooltip="The repayment strategy determines the sequence in which each of the components is paid.">
|
||||
<mat-label>{{"labels.inputs.Repayment strategy" |translate}}</mat-label>
|
||||
<mat-select formControlName="transactionProcessingStrategyCode" matTooltip="{{ 'tooltips.The repayment strategy' | translate }}">
|
||||
<mat-option *ngFor="let transactionProcessingStrategy of transactionProcessingStrategyOptions" [value]="transactionProcessingStrategy.code">
|
||||
{{ transactionProcessingStrategy.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="loansAccountTermsForm.controls.transactionProcessingStrategyCode.hasError('required')">
|
||||
Repayment Strategy is <strong>required</strong>
|
||||
{{"labels.inputs.Repayment Strategy" |translate}} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">Moratorium <i class="fas fa-question" matTooltip="The moratorium information will default from the loan product settings, but can be changed for this loan account"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Moratorium" |translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.The moratorium information' | translate }}"></i></h4>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>Grace on principal payment</mat-label>
|
||||
<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-label>Grace on interest payment</mat-label>
|
||||
<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-label>On arrears ageing</mat-label>
|
||||
<mat-label>{{"labels.inputs.On arrears ageing" |translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="graceOnArrearsAgeing">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsData?.canDefineInstallmentAmount">
|
||||
<mat-label>Installment Amount</mat-label>
|
||||
<mat-label>{{"labels.inputs.Installment Amount" |translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedEmiAmount">
|
||||
</mat-form-field>
|
||||
|
||||
<ng-container *ngIf="loansAccountTermsData?.canUseForTopup">
|
||||
|
||||
<mat-checkbox fxFlex="48%" formControlName="isTopup">
|
||||
<p>Is Topup Loan?</p>
|
||||
<p>{{"labels.inputs.Is Topup Loan" |translate}}?</p>
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.isTopup.value">
|
||||
<mat-label>Loan closed with Topup</mat-label>
|
||||
<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">
|
||||
{{ clientActiveLoan.accountNo }}
|
||||
@@ -236,24 +236,24 @@
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Recalculate Interest</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData?.isInterestRecalculationEnabled? 'Yes' : 'No' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">Days in year</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Days in year" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.daysInYearType.value}}</span>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">Advance payments adjustment type</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Advance payments adjustment type" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.interestRecalculationData.rescheduleStrategyType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
<span fxFlex="40%">Days in month</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Days in month" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.daysInMonthType.value }}</span>
|
||||
</div>
|
||||
|
||||
@@ -262,13 +262,13 @@
|
||||
<ng-container *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Interest recalculation compounding on</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Interest recalculation compounding on" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.value
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Frequency Interval for recalculation</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Frequency Interval for recalculation" |translate}}</span>
|
||||
<span fxFlex="60%">
|
||||
<span>{{ loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyType.value}}</span>
|
||||
<span *ngIf="loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyType.id == 3 &&
|
||||
@@ -289,16 +289,16 @@
|
||||
|
||||
<div fxFlexFill
|
||||
*ngIf="loansAccountTermsData?.isInterestRecalculationEnabled && loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyType.id != 1">
|
||||
<span fxFlex="40%">Frequency Interval for recalculation</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Frequency Interval for recalculation" |translate}}</span>
|
||||
<span fxFlex="60%">{{ loansAccountTermsData.interestRecalculationData.recalculationRestFrequencyInterval}}</span>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="multiDisburseLoan">
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
<div fxFlexFill *ngIf="allowAddDisbursementDetails()">
|
||||
<h4 fxFlex="98%" class="mat-h4">Loan Tranche Details</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Loan Tranche Details" |translate}}</h4>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>Maximum allowed outstanding balance</mat-label>
|
||||
<mat-label>{{"labels.inputs.Maximum allowed outstanding balance" |translate}}</mat-label>
|
||||
<input matInput required formControlName="maxOutstandingLoanBalance">
|
||||
</mat-form-field>
|
||||
<span fxFlex>
|
||||
@@ -309,28 +309,28 @@
|
||||
</span>
|
||||
</div>
|
||||
<div fxFlexFill *ngIf="!allowAddDisbursementDetails()">
|
||||
<h4 fxFlex="98%" class="mat-h4">Loan Tranche Details are not allowed for this Loan Product</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Loan Tranche Details are not allowed for this Loan Product" |translate}}</h4>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="disbursementDataSource" [hidden]="disbursementDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="expectedDisbursementDate">
|
||||
<th mat-header-cell *matHeaderCellDef> Eexpected Disbursement Date </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Eexpected Disbursement Date" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.expectedDisbursementDate | dateFormat }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="principal">
|
||||
<th mat-header-cell *matHeaderCellDef> Principal </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Principal" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.principal }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> Actions </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn" (click)="removeDisbursementDataEntry(rowIndex)"
|
||||
matTooltip="Delete" matTooltipPosition="left">
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}" matTooltipPosition="left">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
@@ -346,7 +346,7 @@
|
||||
*ngIf="loansAccountTermsData?.isInterestRecalculationEnabled && loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.id != 0">
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">Frequency for compounding</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Frequency for compounding" |translate}}</span>
|
||||
<span fxFlex="60%">{{
|
||||
loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyType.value}}
|
||||
<span *ngIf="loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyType.id == 3 &&
|
||||
@@ -369,7 +369,7 @@
|
||||
|
||||
<div fxFlexFill
|
||||
*ngIf="loansAccountTermsData?.isInterestRecalculationEnabled && loansAccountTermsData.interestRecalculationData.interestRecalculationCompoundingType.id != 0 && loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyType.id != 1">
|
||||
<span fxFlex="40%">Frequency Interval for compounding</span>
|
||||
<span fxFlex="40%">{{"labels.inputs.Frequency Interval for compounding" |translate}}</span>
|
||||
<span fxFlex="60%">{{
|
||||
loansAccountTermsData.interestRecalculationData.recalculationCompoundingFrequencyInterval}}</span>
|
||||
</div>
|
||||
@@ -378,13 +378,13 @@
|
||||
|
||||
<div fxFlex="50%">
|
||||
<div fxLayout="column" fxFlex="50%" class="table_name">
|
||||
<h4 fxFlex="98%" class="mat-h4">Collaterals Data</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Collaterals Data" |translate}}</h4>
|
||||
</div>
|
||||
|
||||
<div fxLayout="column" fxFlex="50%">
|
||||
<div fxLayout="row" fxLayoutAlign="flex-end">
|
||||
<button mat-raised-button color="primary" (click)="addCollateral()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>Add
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{"labels.buttons.Add" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -392,27 +392,27 @@
|
||||
<table mat-table class="mat-elevation-z1" [dataSource]="collateralDataSource">
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let ele"> {{ ele.type.name }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef> Quantity </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Quantity" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let ele"> {{ ele.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="totalValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Total Value </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Value" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let ele"> {{ ele.type.basePrice*ele.value }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="totalCollateralValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Total Collateral Value </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Collateral Value" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let ele"> {{ ele.type.pctToBase*ele.type.basePrice*ele.value/100 }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> Actions </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" |translate}} </th>
|
||||
<td mat-cell *matCellDef="let ele; let collateralIndex = index">
|
||||
<button mat-icon-button color="warn" (click)="deleteCollateral(collateralIndex)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -428,14 +428,14 @@
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
Previous
|
||||
{{"labels.buttons.Previous" |translate}}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
Next
|
||||
{{"labels.buttons.Next" |translate}}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
|
||||
Cancel
|
||||
{{"labels.buttons.Cancel" |translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user