i18n: Adding new languages: Part 1 (#1882)

Co-authored-by: Jose Alberto Hernandez <alberto@blue-daemon.local>
This commit is contained in:
José Alberto Hernández
2023-10-22 20:18:05 -06:00
committed by GitHub
co-authored by Jose Alberto Hernandez
parent c7fe21e74a
commit 408f004450
432 changed files with 38051 additions and 44613 deletions
@@ -23,7 +23,7 @@
<mat-step [stepControl]="loansAccountDetailsForm">
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate}}</ng-template>
<mifosx-loans-account-details-step [loansAccountTemplate]="loansAccountTemplate"
(loansAccountProductTemplate)="setTemplate($event)" #loansAccountDetailsForm>
@@ -33,7 +33,7 @@
<mat-step [stepControl]="loansAccountTermsForm">
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate}}</ng-template>
<mifosx-loans-account-terms-step #loanAccountTerms [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate] = "loansAccountTemplate" [collateralOptions]="collateralOptions"
@@ -44,7 +44,7 @@
<mat-step>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate}}</ng-template>
<mifosx-loans-account-charges-step #loanAccountCharges [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate]="loansAccountTemplate"
@@ -55,7 +55,7 @@
<mat-step state="repayment" *ngIf="loansAccountFormValid" completed>
<ng-template matStepLabel>{{"labels.inputs.REPAYMENT SCHEDULE" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.REPAYMENT SCHEDULE" | translate}}</ng-template>
<mifosx-loans-account-schedule-step #loanAccountSchedule [loansAccountTemplate]="loansAccountTemplate"
[loansAccountProductTemplate]="loansAccountProductTemplate" [loansAccount]="loansAccount" [currencyCode]="currencyCode">
@@ -73,7 +73,7 @@
<mat-step state="preview" *ngIf="loansAccountFormValid" completed>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate}}</ng-template>
<mifosx-loans-account-preview-step [loansAccountTemplate]="loansAccountTemplate"
[loansAccountProductTemplate]="loansAccountProductTemplate" [loansAccount]="loansAccount" (submit)="submit()">
@@ -1,44 +1,44 @@
<h1 mat-dialog-title>{{"labels.heading.Add Loan Collateral" | translate }}</h1>
<h1 mat-dialog-title>{{"labels.heading.Add Loan Collateral" | translate}}</h1>
<div mat-dialog-content [formGroup]="addCollateralForm" fxLayout="column">
<mat-form-field>
<mat-label>{{"labels.inputs.Collateral" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Collateral" | translate}}</mat-label>
<mat-select formControlName="collateral" required>
<mat-option *ngFor="let collateralType of collateralTypeData" [value]="collateralType" >
{{ collateralType.name }}
</mat-option>
</mat-select>
<mat-error>
{{"labels.inputs.Collateral" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Collateral" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Quantity" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Quantity" | translate}}</mat-label>
<input type="number" [max]="maxQuantity" [min]="0" matInput formControlName="quantity" required>
<mat-error *ngIf="addCollateralForm.controls.quantity.hasError('required')">
{{"labels.inputs.Quantity" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Quantity" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
<mat-error *ngIf="addCollateralForm.controls.quantity.hasError('max')">
{{"labels.inputs.Quantity can not be more than" | translate }} <strong>{{ maxQuantity }}</strong>
{{"labels.inputs.Quantity can not be more than" | translate}} <strong>{{ maxQuantity }}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Total Value" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Total Value" | translate}}</mat-label>
<input type="text" matInput formControlName="totalValue" [disabled]="true">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Total Collateral Value" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Total Collateral Value" | translate}}</mat-label>
<input type="text" matInput formControlName="totalCollateralValue" [disabled]="true">
</mat-form-field>
</div>
<mat-dialog-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button mat-dialog-close> {{"labels.buttons.Cancel" | translate }} </button>
<button mat-raised-button mat-dialog-close> {{"labels.buttons.Cancel" | translate}} </button>
<button mat-raised-button color="primary" [mat-dialog-close]="{ data: addCollateralForm }"
[disabled]="!addCollateralForm.valid || addCollateralForm.pristine">{{ layout.addButtonText }}</button>
</mat-dialog-actions>
@@ -1,37 +1,37 @@
<h1 mat-dialog-title>{{"labels.heading.Guarantor Detail" | translate }}</h1>
<h1 mat-dialog-title>{{"labels.heading.Guarantor Detail" | translate}}</h1>
<div mat-dialog-content fxLayout="column">
<div fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.First Name" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.First Name" | translate}}:</span>
<span fxFlex="50%">{{ data.guarantorData.firstname }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Last Name" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Last Name" | translate}}:</span>
<span fxFlex="50%">{{ data.guarantorData.lastname }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Relationship" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Relationship" | translate}}:</span>
<span fxFlex="50%">{{ data.guarantorData.clientRelationshipType.name }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Guarantor Type" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Guarantor Type" | translate}}:</span>
<span fxFlex="50%">{{ data.guarantorData.guarantorType.value }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Status" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Status" | translate}}:</span>
<span fxFlex="50%">
<span *ngIf="data.guarantorData.status">
{{"labels.inputs.Active" | translate }}
{{"labels.inputs.Active" | translate}}
</span>
<span *ngIf="!data.guarantorData.status">
{{"labels.inputs.Deleted" | translate }}
{{"labels.inputs.Deleted" | translate}}
</span></span>
</div>
@@ -40,5 +40,5 @@
</div>
<mat-dialog-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button mat-dialog-close> {{"labels.buttons.Cancel" | translate }} </button>
<button mat-raised-button mat-dialog-close> {{"labels.buttons.Cancel" | translate}} </button>
</mat-dialog-actions>
@@ -23,7 +23,7 @@
<mat-step [stepControl]="loansAccountDetailsForm">
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate}}</ng-template>
<mifosx-loans-account-details-step [loansAccountTemplate]="loansAccountAndTemplate"
(loansAccountProductTemplate)="setTemplate($event)">
@@ -33,7 +33,7 @@
<mat-step [stepControl]="loansAccountTermsForm">
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate}}</ng-template>
<mifosx-loans-account-terms-step [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate]="loansAccountAndTemplate" [collateralOptions]="collateralOptions">
@@ -43,7 +43,7 @@
<mat-step>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate}}</ng-template>
<mifosx-loans-account-charges-step [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate]="loansAccountAndTemplate"
@@ -54,7 +54,7 @@
<mat-step>
<ng-template matStepLabel>{{"labels.inputs.REPAYMENT SCHEDULE" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.REPAYMENT SCHEDULE" | translate}}</ng-template>
<mifosx-loans-account-schedule-step [loansAccountTemplate]="loansAccountAndTemplate"
[loansAccountProductTemplate]="loansAccountProductTemplate" [loansAccount]="loansAccount"
@@ -65,7 +65,7 @@
<mat-step state="preview" *ngIf="loansAccountFormValidAndNotPristine" completed>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate}}</ng-template>
<mifosx-loans-account-preview-step [loansAccountTemplate]="loansAccountAndTemplate"
[loansAccountProductTemplate]="loansAccountProductTemplate" [loansAccount]="loansAccount" (submit)="submit()">
@@ -23,7 +23,7 @@
<mat-step [stepControl]="loansAccountDetailsForm">
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.DETAILS" | translate}}</ng-template>
<mifosx-glim-details-step [loansAccountTemplate]="loansAccountTemplate"
(loansAccountProductTemplate)="setTemplate($event)" [gsimData]="gsimData">
@@ -33,7 +33,7 @@
<mat-step [stepControl]="loansAccountTermsForm">
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.TERMS" | translate}}</ng-template>
<mifosx-glim-terms-step [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate] = "loansAccountTemplate">
@@ -43,7 +43,7 @@
<mat-step>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.CHARGES" | translate}}</ng-template>
<mifosx-glim-charges-step [loansAccountProductTemplate]="loansAccountProductTemplate"
[loansAccountTemplate]="loansAccountTemplate"
@@ -55,7 +55,7 @@
<mat-step state="preview" *ngIf="loansAccountFormValid" completed>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate }}</ng-template>
<ng-template matStepLabel>{{"labels.inputs.PREVIEW" | translate}}</ng-template>
<mifosx-loans-account-preview-step [loansAccountTemplate]="loansAccountTemplate"
[loansAccountProductTemplate]="loansAccountProductTemplate" [loansAccount]="loansAccount" (submit)="submit()">
@@ -1,7 +1,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Charge" | translate }}</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,28 +12,28 @@
<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>
{{"labels.buttons.Add" | translate }}
{{"labels.buttons.Add" | translate}}
</button>
</div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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)">
@@ -43,25 +43,25 @@
</ng-container>
<ng-container matColumnDef="chargeTimeType">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" | translate }} </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> {{"labels.inputs.Date" | translate }} </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'">
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
</span>
<span *ngIf="charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'">
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
</span>
<span
*ngIf="!(charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|| charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee')">
{{"labels.inputs.N/A" | translate }}
{{"labels.inputs.N/A" | translate}}
</span>
<button mat-icon-button color="primary"
*ngIf="charge.chargeTimeType.value === 'Weekly Fee' || charge.chargeTimeType.value === 'Annual Fee'
@@ -73,7 +73,7 @@
</ng-container>
<ng-container matColumnDef="repaymentsEvery">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Repayments Every" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Repayments Every" | translate}} </th>
<td mat-cell *matCellDef="let charge">
{{ charge.feeInterval || 'Not Provided' }}
<button mat-icon-button color="primary"
@@ -85,7 +85,7 @@
</ng-container>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </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>
@@ -113,22 +113,22 @@
<!-- Position Column -->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client ID" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client ID" | translate}} </th>
<td mat-cell *matCellDef="let element"> {{element.id}} </td>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Name" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Name" | translate}} </th>
<td mat-cell *matCellDef="let element"> {{element.displayName}} </td>
</ng-container>
<!-- Weight Column -->
<ng-container matColumnDef="purpose">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Purpose" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Purpose" | translate}} </th>
<td mat-cell *matCellDef="let element">
<mat-form-field>
<mat-label>{{"labels.inputs.Select Purpose" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Select Purpose" | translate}}</mat-label>
<mat-select [(ngModel)]="element.loanPurposeId">
<mat-option *ngFor="let purpose of loanPurposeOptions" [value]="purpose.id">
{{ purpose.name }}
@@ -140,7 +140,7 @@
<!-- Symbol Column -->
<ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Original Loan" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Original Loan" | translate}} </th>
<td mat-cell *matCellDef="let element">
<mat-form-field>
<input type="number" matInput [(ngModel)]="element.principal">
@@ -160,10 +160,10 @@
<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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
</div>
@@ -3,19 +3,19 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Product Name" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Product Name" | translate}}</mat-label>
<mat-select formControlName="productId" required>
<mat-option *ngFor="let product of productData" [value]="product.id">
{{ product.name }}
</mat-option>
</mat-select>
<mat-error>
{{"labels.inputs.Product Name" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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%">
<mat-label>{{"labels.inputs.Loan officer" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Loan officer" | translate}}</mat-label>
<mat-select formControlName="loanOfficerId">
<mat-option *ngFor="let loanOfficer of loanOfficerOptions" [value]="loanOfficer.id">
{{ loanOfficer.displayName }}
@@ -25,7 +25,7 @@
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Fund" | translate }}</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 }}
@@ -34,24 +34,24 @@
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="submitPicker.open()">
<mat-label>{{"labels.inputs.Submitted on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Submitted on" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submitPicker" 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')">
{{"labels.inputs.Submitted on" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Disbursement on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Disbursement on" | translate}}</mat-label>
<input matInput [min]="loansAccountDetailsForm.value.submittedOnDate" [max]="maxDate" [matDatepicker]="disbursementPicker" 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')">
{{"labels.inputs.Disbursement on" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Disbursement on" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
@@ -59,10 +59,10 @@
<mat-divider fxFlex="98%"></mat-divider>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Savings Linkage" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Savings Linkage" | translate}}</h3>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Link savings" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Link savings" | translate}}</mat-label>
<mat-select formControlName="linkAccountId">
<mat-option *ngFor="let savingaccount of gsimData" [value]="savingaccount.id">
{{ savingaccount.accountNumber }}
@@ -77,10 +77,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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
</div>
@@ -1,70 +1,70 @@
<div fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Details" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Details" | translate}}</h3>
<mat-divider fxFlexFill></mat-divider>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Product" | translate }}:</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%">{{"labels.inputs.Loan officer" | translate }}:</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%">{{"labels.inputs.Loan purpose" | translate }}:</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%">{{"labels.inputs.Fund" | translate }}:</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%">{{"labels.inputs.Submitted on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
<span fxFlex="40%">{{"labels.inputs.Submitted on" | translate}}:</span>
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Disbursement on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.expectedDisbursementDate | dateFormat }}</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%">{{"labels.inputs.External id" | translate }}:</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>{{"labels.heading.Terms" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Terms" | translate}}</h3>
<mat-divider fxFlexFill></mat-divider>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Principal" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Principal" | translate}}:</span>
<span fxFlex="60%">{{ loansAccount.principal }} {{loansAccountProductTemplate.currency.DisplaySymbol}}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Loan term" | translate }}:</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%">{{"labels.inputs.Number of repayments" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Number of repayments" | translate}}:</span>
<span fxFlex="60%">{{ loansAccount.numberOfRepayments }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Repaid every" | translate }}:</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'}}
@@ -72,149 +72,149 @@
</div>
<div fxFlexFill *ngIf="loansAccount.repaymentsStartingFromDate">
<span fxFlex="40%">{{"labels.inputs.First repayment on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.repaymentsStartingFromDate | dateFormat }}</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%">{{"labels.inputs.Interest charged from" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.interestChargedFromDate | dateFormat }}</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%">{{"labels.inputs.Nominal interest rate" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Nominal interest rate" | translate}}:</span>
<span
fxFlex="60%">{{loansAccount.interestRatePerPeriod}}&nbsp;&nbsp;{{loansAccountProductTemplate.interestRateFrequencyType.value}}</span>
</div>
<div fxFlexFill *ngIf="loansAccount.interestType">
<span fxFlex="40%">{{"labels.inputs.Interest method" | translate }}: </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%">{{"labels.inputs.Is Equal Amortization" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Is Equal Amortization" | translate}}:</span>
<span fxFlex="60%">{{loansAccount.isEqualAmortization}}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Amortization" | translate }}</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%">{{"labels.inputs.Interest calculation period" | translate }}: </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%">{{"labels.inputs.Calculate interest for exact days in partial period" | translate }}:</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%">{{"labels.inputs.Arrears tolerance" | translate }}: </span>
<span fxFlex="40%">{{"labels.inputs.Arrears tolerance" | translate}}: </span>
<span
fxFlex="60%">{{loansAccount.inArrearsTolerance}}&nbsp;{{loansAccountProductTemplate.currency.displaySymbol}}</span>
</div>
<div fxFlexFill *ngIf="loansAccount.graceOnInterestCharged">
<span fxFlex="40%">{{"labels.inputs.Interest free period" | translate }}: </span>
<span fxFlex="40%">{{"labels.inputs.Interest free period" | translate}}: </span>
<span fxFlex="60%">{{ loansAccount.graceOnInterestCharged }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Repayment strategy" | translate }}: </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>{{"labels.heading.Moratorium" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"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="40%">{{"labels.inputs.On principal payment" | translate}}: </span>
<span fxFlex="60%">{{ loansAccount.graceOnPrincipalPayment }}</span>
</div>
<div fxFlexFill *ngIf="loansAccount.graceOnInterestPayment">
<span fxFlex="40%">{{"labels.inputs.On interest payment" | translate }}: </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%">{{"labels.inputs.On Arrears Aging" | translate }}: </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%">{{"labels.inputs.Is Topup Loan" | translate }}? </span>
<span fxFlex="40%">{{"labels.inputs.Is Topup Loan" | translate}}? </span>
<span fxFlex="60%">{{ loansAccount.isTopup }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" | translate }}: </span>
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" | translate}}: </span>
<span fxFlex="60%">{{ loansAccountProductTemplate?.isInterestRecalculationEnabled| yesNo }}</span>
</div>
<div fxFlexFill *ngIf="loansAccountProductTemplate?.daysInMonthType">
<span fxFlex="40%">{{"labels.inputs.Days in month" | translate }}: </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>{{"labels.heading.Charges" | translate }}</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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </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> {{"labels.inputs.Date" | translate }} </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'">
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
</span>
<span *ngIf="charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'">
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
</span>
<span
*ngIf="!(charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|| charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee')">
{{"labels.inputs.N/A" | translate }}
{{"labels.inputs.N/A" | translate}}
</span>
</td>
</ng-container>
@@ -228,29 +228,29 @@
<div fxFlexFill *ngIf="loansAccountProductTemplate.overdueCharges.length" fxLayout="row wrap" fxLayout.lt-md="column">
<h3 fxFlex="98%" class="mat-h3">{{"labels.heading.Overdue Charges" | translate }}</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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Collected On" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
</ng-container>
@@ -264,12 +264,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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button [routerLink]="['../']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
<button mat-raised-button color="primary" (click)="submit.emit()">
{{"labels.buttons.Submit" | translate }}
{{"labels.buttons.Submit" | translate}}
</button>
</div>
@@ -2,57 +2,57 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Term Options" | translate }}</h4>
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Term Options" | translate}}</h4>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Loan Term" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Loan Term" | translate}}</mat-label>
<input matInput required formControlName="loanTermFrequency">
<mat-error *ngIf="loansAccountTermsForm.controls.loanTermFrequency.hasError('required')">
{{"labels.inputs.Loan Term" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Frequency" | translate }}</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')">
{{"labels.inputs.Frequency" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Frequency" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Number of repayments" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Number of repayments" | translate}}</mat-label>
<input type="number" matInput formControlName="numberOfRepayments">
<mat-error *ngIf="loansAccountTermsForm.controls.numberOfRepayments.hasError('required')">
{{"labels.inputs.Number of repayments" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.First repayment on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.First repayment on" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [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">{{"labels.heading.Repaid Every" | translate }}</h4>
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Repaid Every" | translate}}</h4>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Repaid every" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Repaid every" | translate}}</mat-label>
<input matInput required formControlName="repaymentEvery"
[disabled]="!loansAccountProductTemplate?.product.allowAttributeOverrides.repaymentEvery">
<mat-error *ngIf="loansAccountTermsForm.controls.repaymentEvery.hasError('required')">
{{"labels.inputs.Repaid every" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Frequency" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Frequency" | translate}}</mat-label>
<mat-select formControlName="repaymentFrequencyType" required
[disabled]="!loansAccountProductTemplate?.product.allowAttributeOverrides.repaymentEvery">
<mat-option *ngFor="let repaymentFrequencyType of termFrequencyTypeData"
@@ -63,7 +63,7 @@
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value == 2">
<mat-label>{{"labels.inputs.Select On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Select On" | translate}}</mat-label>
<mat-select formControlName="repaymentFrequencyNthDayType">
<mat-option
*ngFor="let repaymentFrequencyNthDayType of repaymentFrequencyNthDayTypeData"
@@ -74,7 +74,7 @@
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.repaymentFrequencyType.value == 2">
<mat-label>{{"labels.inputs.Select Day" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Select Day" | translate}}</mat-label>
<mat-select formControlName="repaymentFrequencyDayOfWeekType">
<mat-option
*ngFor="let repaymentFrequencyDayOfWeekType of repaymentFrequencyDaysOfWeekTypeData"
@@ -85,7 +85,7 @@
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="interestPicker.open()">
<mat-label>{{"labels.inputs.Interest charged from" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Interest charged from" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="interestPicker"
formControlName="interestChargedFromDate">
<mat-datepicker-toggle matSuffix [for]="interestPicker"></mat-datepicker-toggle>
@@ -95,12 +95,12 @@
<ng-container *ngIf="!loansAccountProductTemplate?.isLoanProductLinkedToFloatingRate">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Nominal interest rate" | translate }}</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>{{"labels.inputs.Interest method" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Interest method" | translate}}</mat-label>
<mat-select [disabled]="!loansAccountProductTemplate?.product.allowAttributeOverrides.interestType"
formControlName="interestType">
<mat-option *ngFor="let interestType of interestTypeData"
@@ -118,10 +118,10 @@
<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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
</div>
@@ -2,38 +2,38 @@
<mat-card-content>
<h2> {{"labels.heading.GLIM Account Overview" | translate }}</h2>
<h2> {{"labels.heading.GLIM Account Overview" | translate}}</h2>
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="loanId">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Id" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Id" | translate}} </th>
<td mat-cell *matCellDef="let element">
{{element.childLoanId}} </td>
</ng-container>
<ng-container matColumnDef="clientId">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client ID" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client ID" | translate}} </th>
<td mat-cell *matCellDef="let element">{{element.clientId}} </td>
</ng-container>
<ng-container matColumnDef="clientName">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Name" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Name" | translate}} </th>
<td mat-cell *matCellDef="let element">{{element.clientName}} </td>
</ng-container>
<ng-container matColumnDef="loanAccountNumber">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Account Number" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Account Number" | translate}} </th>
<td mat-cell *matCellDef="let element"> {{element.childLoanAccountNo}} </td>
</ng-container>
<ng-container matColumnDef="clientPrincipalLoan">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Principal Loan" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client Principal Loan" | translate}} </th>
<td mat-cell *matCellDef="let element" > {{element.childPrincipalAmount}} </td>
</ng-container>
<ng-container matColumnDef="groupPrincipalLoan">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Group Principal Loan" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Group Principal Loan" | translate}} </th>
<td mat-cell *matCellDef="let element" > {{element.parentPrincipalAmount}} </td>
</ng-container>
@@ -1,7 +1,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Charge" | translate }}</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>
{{"labels.buttons.Add" | translate }}
{{"labels.buttons.Add" | translate}}
</button>
</div>
@@ -20,21 +20,21 @@
[hidden]="chargesDataSource.length === 0">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </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> {{"labels.inputs.Date" | translate }} </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')">
{{"labels.inputs.N/A" | translate }}
{{"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> {{"labels.inputs.Actions" | translate }} </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">{{"labels.heading.Overdue Charges" | translate }}</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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext [disabled]="!loansAccountFormValid">
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
</div>
@@ -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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
</div>
@@ -3,20 +3,20 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Product Name" | translate }}</mat-label>
<mat-select formControlName="productId" matTooltip="{{ 'tooltips.Name of the loan product' | translate }}" 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>
{{"labels.inputs.Product Name" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Loan officer" | translate }}</mat-label>
<mat-select formControlName="loanOfficerId" matTooltip="{{ 'tooltips.Financial institution representative' | translate }}">
<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>{{"labels.inputs.Loan purpose" | translate }}</mat-label>
<mat-select formControlName="loanPurposeId" matTooltip="{{ 'tooltips.Provides an indication' | translate }}">
<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>{{"labels.inputs.Fund" | translate }}</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>{{"labels.inputs.Submitted on" | translate }}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submitPicker" matTooltip="{{ 'tooltips.Date the loan account application' | translate }}" 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')">
{{"labels.inputs.Submitted on" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"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
<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')">
{{"labels.inputs.Disbursement on" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.External id" | translate }}</mat-label>
<input matInput formControlName="externalId" matTooltip="{{ 'tooltips.Provides an external id' | translate }}">
<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>{{"labels.heading.Savings Linkage" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Savings Linkage" | translate}}</h3>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Link savings" | translate }}</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>{{"labels.inputs.Create standing instructions at disbursement" | translate }}</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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
</div>
@@ -1,52 +1,52 @@
<div fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Details" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Details" | translate}}</h3>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Product" | translate }}:</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%">{{"labels.inputs.Loan officer" | translate }}:</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%">{{"labels.inputs.Loan purpose" | translate }}:</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%">{{"labels.inputs.Fund" | translate }}:</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%">{{"labels.inputs.Submitted on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
<span fxFlex="40%">{{"labels.inputs.Submitted on" | translate}}:</span>
<span fxFlex="60%">{{ loansAccount.submittedOnDate | dateFormat }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Disbursement on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.expectedDisbursementDate | dateFormat }}</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%">{{"labels.inputs.External id" | translate }}:</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>{{"labels.heading.Terms" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"labels.heading.Terms" | translate}}</h3>
<mat-divider fxFlexFill></mat-divider>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Principal" | translate }}:</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%">{{"labels.inputs.Loan term" | translate }}:</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%">{{"labels.inputs.Number of repayments" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Number of repayments" | translate}}:</span>
<span fxFlex="60%">{{ loansAccount.numberOfRepayments }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Repaid every" | translate }}:</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,149 +73,149 @@
</div>
<div fxFlexFill *ngIf="loansAccount.repaymentsStartingFromDate">
<span fxFlex="40%">{{"labels.inputs.First repayment on" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.repaymentsStartingFromDate | dateFormat }}</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%">{{"labels.inputs.Interest charged from" | translate }}:</span>
<span fxFlex="60%">{{ loansAccount.interestChargedFromDate | dateFormat }}</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%">{{"labels.inputs.Nominal interest rate" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Nominal interest rate" | translate}}:</span>
<span
fxFlex="60%">{{loansAccount.interestRatePerPeriod}}&nbsp;&nbsp;{{loansAccountProductTemplate.interestRateFrequencyType.value}}</span>
</div>
<div fxFlexFill *ngIf="loansAccount.interestType">
<span fxFlex="40%">{{"labels.inputs.Interest method" | translate }}: </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%">{{"labels.inputs.Is Equal Amortization" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Is Equal Amortization" | translate}}:</span>
<span fxFlex="60%">{{loansAccount.isEqualAmortization}}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Amortization" | translate }}</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%">{{"labels.inputs.Interest calculation period" | translate }}: </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%">{{"labels.inputs.Calculate interest for exact days in partial period" | translate }}:</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%">{{"labels.inputs.Arrears tolerance" | translate }}: </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%">{{"labels.inputs.Interest free period" | translate }}: </span>
<span fxFlex="40%">{{"labels.inputs.Interest free period" | translate}}: </span>
<span fxFlex="60%">{{ loansAccount.graceOnInterestCharged }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Repayment strategy" | translate }}: </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>{{"labels.heading.Moratorium" | translate }}</h3>
<h3 class="mat-h3" fxFlexFill>{{"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="40%">{{"labels.inputs.On principal payment" | translate}}: </span>
<span fxFlex="60%">{{ loansAccount.graceOnPrincipalPayment }}</span>
</div>
<div fxFlexFill *ngIf="loansAccount.graceOnInterestPayment">
<span fxFlex="40%">{{"labels.inputs.On interest payment" | translate }}: </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%">{{"labels.inputs.On Arrears Aging" | translate }}: </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%">{{"labels.inputs.Is Topup Loan" | translate }}? </span>
<span fxFlex="40%">{{"labels.inputs.Is Topup Loan" | translate}}? </span>
<span fxFlex="60%">{{ loansAccount.isTopup }}</span>
</div>
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" | translate }}: </span>
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" | translate}}: </span>
<span fxFlex="60%">{{ loansAccountProductTemplate?.isInterestRecalculationEnabled| yesNo }}</span>
</div>
<div fxFlexFill *ngIf="loansAccountProductTemplate?.daysInMonthType">
<span fxFlex="40%">{{"labels.inputs.Days in month" | translate }}: </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>{{"labels.heading.Charges" | translate }}</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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </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> {{"labels.inputs.Date" | translate }} </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'">
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
{{(charge.dueDate | dateFormat) || 'Unassigned'}}
</span>
<span *ngIf="charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'">
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
{{(charge.feeOnMonthDay | dateFormat) || 'Unassigned'}}
</span>
<span
*ngIf="!(charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'
|| charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee')">
{{"labels.inputs.N/A" | translate }}
{{"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">{{"labels.heading.Overdue Charges" | translate }}</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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Type" | translate }} </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> {{"labels.inputs.Amount" | translate }} </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> {{"labels.inputs.Collected On" | translate }} </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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button [routerLink]="['../']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
<button mat-raised-button color="primary" (click)="submit.emit()">
{{"labels.buttons.Submit" | translate }}
{{"labels.buttons.Submit" | translate}}
</button>
</div>
@@ -1,7 +1,7 @@
<div fxLayout="row wrap" fxLayout.lt-md="column">
<a mat-button (click)="showRepaymentInfo()">
{{"labels.inputs.Repayment Info" | translate }}
{{"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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
</div>
@@ -3,68 +3,68 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Principal" | translate }} {{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')">
{{"labels.inputs.Principal" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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">{{"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>
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>{{"labels.inputs.Loan Term" | translate }}</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')">
{{"labels.inputs.Loan Term" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Frequency" | translate }}</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')">
{{"labels.inputs.Frequency" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Number of repayments" | translate }}</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')">
{{"labels.inputs.Number of repayments" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.First repayment on" | translate }}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" matTooltip="{{ 'tooltips.May be entered to override' | translate }}" [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">{{"labels.heading.Repaid Every" | translate }} <i class="fas fa-question" matTooltip="{{ 'tooltips.Fields are input to calculating the repayment schedule' | translate }}"></i></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>{{"labels.inputs.Repaid every" | translate }}</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')">
{{"labels.inputs.Repaid every" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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>{{"labels.inputs.Frequency" | translate }}</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>{{"labels.inputs.Select On" | translate }}</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>{{"labels.inputs.Select Day" | translate }}</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>{{"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 }}"
<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>{{"labels.inputs.Nominal interest rate" | translate }}</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>{{"labels.inputs.Interest method" | translate }}</mat-label>
<mat-select formControlName="interestType" matTooltip="{{ 'tooltips.The Interest method value' | translate }}">
<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>{{"labels.inputs.Is Equal Amortization" | translate }}</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>{{"labels.inputs.Interest Method" | translate }}</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>{{"labels.inputs.Is Floating Rate" | translate }}?</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>{{"labels.inputs.Amortization" | translate }}</mat-label>
<mat-select required matTooltip="{{ 'tooltips.The Amortization value' | translate }}" 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')">
{{"labels.inputs.Amortization Type" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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">{{"labels.heading.Interest Calculations" | translate }}</h4>
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Interest Calculations" | translate}}</h4>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Interest calculation period" | translate }}</mat-label>
<mat-select formControlName="interestCalculationPeriodType" matTooltip="{{ 'tooltips.Daily - Will Calculate the interest' | translate }}">
<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="{{ '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 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>{{"labels.inputs.Arrears tolerance" | translate }} {{currencyDisplaySymbol}}</mat-label>
<input matInput type="number" formControlName="inArrearsTolerance" matTooltip="{{ 'tooltips.With Arrears tolerance' | translate }}">
<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>{{"labels.inputs.Interest free period" | translate }}</mat-label>
<input matInput formControlName="graceOnInterestCharged" matTooltip="{{ 'tooltips.If the Interest Free Period' | translate }}">
<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>{{"labels.inputs.Repayment strategy" | translate }}</mat-label>
<mat-select formControlName="transactionProcessingStrategyCode" matTooltip="{{ 'tooltips.The repayment strategy' | translate }}">
<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')">
{{"labels.inputs.Repayment Strategy" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</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">{{"labels.heading.Moratorium" | translate }} <i class="fas fa-question" matTooltip="{{ 'tooltips.The moratorium information' | translate }}"></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>{{"labels.inputs.Grace on principal payment" | translate }}</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>{{"labels.inputs.Grace on interest payment" | translate }}</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>{{"labels.inputs.On arrears ageing" | translate }}</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>{{"labels.inputs.Installment Amount" | translate }}</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>{{"labels.inputs.Is Topup Loan" | translate }}?</p>
<p>{{"labels.inputs.Is Topup Loan" | translate}}?</p>
</mat-checkbox>
<mat-form-field fxFlex="48%" *ngIf="loansAccountTermsForm.controls.isTopup.value">
<mat-label>{{"labels.inputs.Loan closed with Topup" | translate }}</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%">{{"labels.inputs.Recalculate Interest" | translate }}</span>
<span fxFlex="40%">{{"labels.inputs.Recalculate Interest" | translate}}</span>
<span fxFlex="60%">{{ loansAccountTermsData?.isInterestRecalculationEnabled| yesNo }}</span>
</div>
<div fxFlexFill *ngIf="loansAccountTermsData?.isInterestRecalculationEnabled">
<span fxFlex="40%">{{"labels.inputs.Days in year" | translate }}</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%">{{"labels.inputs.Advance payments adjustment type" | translate }}</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%">{{"labels.inputs.Days in month" | translate }}</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%">{{"labels.inputs.Interest recalculation compounding on" | translate }}</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%">{{"labels.inputs.Frequency Interval for recalculation" | translate }}</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%">{{"labels.inputs.Frequency Interval for recalculation" | translate }}</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">{{"labels.heading.Loan Tranche Details" | translate }}</h4>
<h4 fxFlex="98%" class="mat-h4">{{"labels.heading.Loan Tranche Details" | translate}}</h4>
<mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Maximum allowed outstanding balance" | translate }}</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">{{"labels.heading.Loan Tranche Details are not allowed for this Loan Product" | translate }}</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> {{"labels.inputs.Eexpected Disbursement Date" | translate }} </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> {{"labels.inputs.Principal" | translate }} </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> {{"labels.inputs.Actions" | translate }} </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="{{ 'tooltips.Delete' | translate }}" 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%">{{"labels.inputs.Frequency for compounding" | translate }}</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%">{{"labels.inputs.Frequency Interval for compounding" | translate }}</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">{{"labels.heading.Collaterals Data" | translate }}</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>{{"labels.buttons.Add" | translate }}
<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> {{"labels.inputs.name" | translate }} </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> {{"labels.inputs.Quantity" | translate }} </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> {{"labels.inputs.Total Value" | translate }} </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> {{"labels.inputs.Total Collateral Value" | translate }} </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> {{"labels.inputs.Actions" | translate }} </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>
{{"labels.buttons.Previous" | translate }}
{{"labels.buttons.Previous" | translate}}
</button>
<button mat-raised-button matStepperNext>
{{"labels.buttons.Next" | translate }}
{{"labels.buttons.Next" | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button>
<button mat-raised-button *ngIf="loanId" [routerLink]="['../', 'general']">
{{"labels.buttons.Cancel" | translate }}
{{"labels.buttons.Cancel" | translate}}
</button>
</div>
+26 -29
View File
@@ -2,9 +2,6 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
/** Translation Imports */
import { extract } from '../core/i18n/i18n.service';
/** Custom Components */
import { LoansViewComponent } from './loans-view/loans-view.component';
import { GeneralTabComponent } from './loans-view/general-tab/general-tab.component';
@@ -66,11 +63,11 @@ import { LoanCollateralsResolver } from './common-resolvers/loan-collaterals.res
const routes: Routes = [
{
path: '',
data: { title: extract('Loans'), breadcrumb: 'Loans', routeParamBreadcrumb: false },
data: { title: 'Loans', breadcrumb: 'Loans', routeParamBreadcrumb: false },
children: [
{
path: 'create',
data: { title: extract('Create Loans Account'), breadcrumb: 'Create Loans Account' },
data: { title: 'Create Loans Account', breadcrumb: 'Create Loans Account' },
component: CreateLoansAccountComponent,
resolve: {
loansAccountTemplate: LoansAccountTemplateResolver
@@ -78,7 +75,7 @@ const routes: Routes = [
},
{
path: ':loanId',
data: { title: extract('Loan View'), routeParamBreadcrumb: 'loanId' },
data: { title: 'Loan View', routeParamBreadcrumb: 'loanId' },
component: LoansViewComponent,
resolve: {
loanDetailsData: LoanDetailsResolver,
@@ -94,7 +91,7 @@ const routes: Routes = [
{
path: 'general',
component: GeneralTabComponent,
data: { title: extract('General'), breadcrumb: 'General', routeParamBreadcrumb: false },
data: { title: 'General', breadcrumb: 'General', routeParamBreadcrumb: false },
resolve: {
loanDetailsData: LoanDetailsResolver,
loanDatatables: LoanDatatablesResolver
@@ -103,21 +100,21 @@ const routes: Routes = [
{
path: 'accountdetail',
component: AccountDetailsComponent,
data: { title: extract('Account Detail'), breadcrumb: 'Account Detail', routeParamBreadcrumb: false }
data: { title: 'Account Detail', breadcrumb: 'Account Detail', routeParamBreadcrumb: false }
},
{
path: 'original-schedule',
component: OriginalScheduleTabComponent,
data: { title: extract('Original Schedule'), breadcrumb: 'Original Schedule', routeParamBreadcrumb: false },
data: { title: 'Original Schedule', breadcrumb: 'Original Schedule', routeParamBreadcrumb: false },
},
{
path: 'repayment-schedule',
component: RepaymentScheduleTabComponent,
data: { title: extract('Repayment Schedule'), breadcrumb: 'Repayment Schedule', routeParamBreadcrumb: false },
data: { title: 'Repayment Schedule', breadcrumb: 'Repayment Schedule', routeParamBreadcrumb: false },
},
{
path: 'transactions',
data: { title: extract('Loans Account Transactions'), breadcrumb: 'Transactions', routeParamBreadcrumb: false },
data: { title: 'Loans Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false },
children: [
{
path: '',
@@ -132,7 +129,7 @@ const routes: Routes = [
},
{
path: 'delinquencytags',
data: { title: extract('Loans Delinquency Tags'), breadcrumb: 'Delinquency Tags', routeParamBreadcrumb: false },
data: { title: 'Loans Delinquency Tags', breadcrumb: 'Delinquency Tags', routeParamBreadcrumb: false },
resolve: {
loanDelinquencyTagsData: LoanDelinquencyTagsResolver
},
@@ -159,7 +156,7 @@ const routes: Routes = [
{
path: 'loan-collateral',
component: LoanCollateralTabComponent,
data: { title: extract('Loan Collateral Details'), breadcrumb: 'Loan Collateral Details', routeParamBreadcrumb: false },
data: { title: 'Loan Collateral Details', breadcrumb: 'Loan Collateral Details', routeParamBreadcrumb: false },
resolve: {
loanCollaterals: LoanCollateralsResolver
}
@@ -167,27 +164,27 @@ const routes: Routes = [
{
path: 'loan-tranche-details',
component: LoanTrancheDetailsComponent,
data: { title: extract('Loan Tranche Details'), breadcrumb: 'Loan Tranche Details', routeParamBreadcrumb: false },
data: { title: 'Loan Tranche Details', breadcrumb: 'Loan Tranche Details', routeParamBreadcrumb: false },
},
{
path: 'overdue-charges',
component: OverdueChargesTabComponent,
data: { title: extract('Overdue Charges'), breadcrumb: 'Overdue Charges', routeParamBreadcrumb: false }
data: { title: 'Overdue Charges', breadcrumb: 'Overdue Charges', routeParamBreadcrumb: false }
},
{
path: 'floating-interest-rates',
component: FloatingInterestRatesComponent,
data: { title: extract('Floating Interest Rates'), breadcrumb: 'Floating Interest Rates', routeParamBreadcrumb: false },
data: { title: 'Floating Interest Rates', breadcrumb: 'Floating Interest Rates', routeParamBreadcrumb: false },
},
{
path: 'charges',
data: { title: extract('Loans Account Charges'), breadcrumb: 'Charges', routeParamBreadcrumb: false },
data: { title: 'Loans Account Charges', breadcrumb: 'Charges', routeParamBreadcrumb: false },
component: ChargesTabComponent,
},
{
path: 'loan-documents',
component: LoanDocumentsTabComponent,
data: { title: extract('Loan Documents'), breadcrumb: 'Loan Documents', routeParamBreadcrumb: false },
data: { title: 'Loan Documents', breadcrumb: 'Loan Documents', routeParamBreadcrumb: false },
resolve: {
loanDocuments: LoanDocumentsResolver
},
@@ -195,7 +192,7 @@ const routes: Routes = [
{
path: 'notes',
component: NotesTabComponent,
data: { title: extract('Notes'), breadcrumb: 'Notes', routeParamBreadcrumb: false },
data: { title: 'Notes', breadcrumb: 'Notes', routeParamBreadcrumb: false },
resolve: {
loanNotes: LoanNotesResolver
},
@@ -203,12 +200,12 @@ const routes: Routes = [
{
path: 'standing-instruction',
component: StandingInstructionsTabComponent,
data: { title: extract('Standing Instructions'), breadcrumb: 'Standing Instructions', routeParamBreadcrumb: false }
data: { title: 'Standing Instructions', breadcrumb: 'Standing Instructions', routeParamBreadcrumb: false }
},
{
path: 'external-asset-owner',
component: ExternalAssetOwnerTabComponent,
data: { title: extract('External Asset Owner'), breadcrumb: 'External Asset Owner', routeParamBreadcrumb: false },
data: { title: 'External Asset Owner', breadcrumb: 'External Asset Owner', routeParamBreadcrumb: false },
resolve: {
activeTransferData: ExternalAssetOwnerActiveTransferResolver,
loanTransfersData: ExternalAssetOwnerResolver
@@ -219,7 +216,7 @@ const routes: Routes = [
children: [{
path: ':datatableName',
component: DatatableTabComponent,
data: { title: extract('Data Table View'), routeParamBreadcrumb: 'datatableName' },
data: { title: 'Data Table View', routeParamBreadcrumb: 'datatableName' },
resolve: {
loanDatatable: LoanDatatableResolver
}
@@ -229,7 +226,7 @@ const routes: Routes = [
},
{
path: ':loanId/transactions/:id',
data: { title: extract('Loans Account Transactions'), breadcrumb: 'Transactions', routeParamBreadcrumb: false },
data: { title: 'Loans Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false },
resolve: {
loanDetailsAssociationData: LoanDetailsResolver
},
@@ -262,7 +259,7 @@ const routes: Routes = [
},
{
path: ':loanId/edit-loans-account',
data: { title: extract('Modify Loans Account'), breadcrumb: 'Modify Loans Account', routeParamBreadcrumb: 'Edit' },
data: { title: 'Modify Loans Account', breadcrumb: 'Modify Loans Account', routeParamBreadcrumb: 'Edit' },
component: EditLoansAccountComponent,
resolve: {
loansAccountAndTemplate: LoansAccountAndTemplateResolver
@@ -270,7 +267,7 @@ const routes: Routes = [
},
{
path: ':loanId/charges',
data: { title: extract('Loans Account Charges'), breadcrumb: 'Charges', routeParamBreadcrumb: false },
data: { title: 'Loans Account Charges', breadcrumb: 'Charges', routeParamBreadcrumb: false },
children: [
{
path: '',
@@ -299,7 +296,7 @@ const routes: Routes = [
{
path: ':loanId/actions/:action',
component: LoanAccountActionsComponent,
data: { title: extract('Loan Account Actions'), breadcrumb: 'action', routeParamBreadcrumb: 'action' },
data: { title: 'Loan Account Actions', breadcrumb: 'action', routeParamBreadcrumb: 'action' },
resolve: {
actionButtonData: LoanActionButtonResolver
}
@@ -310,7 +307,7 @@ const routes: Routes = [
},
{
path: 'edit-loans-account',
data: { title: extract('Modify Loans Account'), breadcrumb: 'Modify Loans Account', routeParamBreadcrumb: 'Edit' },
data: { title: 'Modify Loans Account', breadcrumb: 'Modify Loans Account', routeParamBreadcrumb: 'Edit' },
component: EditLoansAccountComponent,
resolve: {
loansAccountAndTemplate: LoansAccountAndTemplateResolver
@@ -323,7 +320,7 @@ const routes: Routes = [
children: [
{
path: 'create',
data: { title: extract('Create GLIM Application'), breadcrumb: 'Create GLIM Application' },
data: { title: 'Create GLIM Application', breadcrumb: 'Create GLIM Application' },
component: CreateGlimAccountComponent,
resolve: {
loansAccountTemplate: GLIMLoanTemplateResolver,
@@ -333,7 +330,7 @@ const routes: Routes = [
},
{
path: ':glimId',
data: { title: extract('GSIM Account View'), routeParamBreadcrumb: 'savingAccountId' },
data: { title: 'GSIM Account View', routeParamBreadcrumb: 'savingAccountId' },
component: GlimAccountComponent,
resolve: {
glimData: GLIMViewResolver,
@@ -1,14 +1,15 @@
<div class="container">
<h3> {{"labels.heading.Loan Details" | translate}} </h3>
<div fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Repayment Strategy" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Repayment Strategy" | translate}}:</span>
<span fxFlex="50%">{{ loanDetails.transactionProcessingStrategyName }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Repayments" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Repayments" | translate}}:</span>
<span fxFlex="50%">{{loanDetails.numberOfRepayments}} every {{loanDetails.repaymentEvery}}&nbsp;{{loanDetails.repaymentFrequencyType.value}}
<span *ngIf="loanDetails.repaymentFrequencyType?.id == 2 && loanDetails.repaymentFrequencyNthDayType?.id != 0 && loanDetails.repaymentFrequencyDayOfWeekType?.id != 0">
&nbsp;on&nbsp;{{loanDetails.repaymentFrequencyNthDayType?.value}}&nbsp;{{loanDetails.repaymentFrequencyDayOfWeekType?.value}}
@@ -17,32 +18,32 @@
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Amortization" | translate }} </span>
<span fxFlex="50%"> {{"labels.inputs.Amortization" | translate}} </span>
<span fxFlex="50%"> {{loanDetails.amortizationType.value}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Equal Amortization" | translate }} </span>
<span fxFlex="50%"> {{"labels.inputs.Equal Amortization" | translate}} </span>
<span fxFlex="50%"> {{loanDetails.isEqualAmortization | yesNo}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Interest" | translate }} </span>
<span fxFlex="50%"> {{loanDetails.annualInterestRate}} per annum ({{loanDetails.interestRatePerPeriod}}%&nbsp; {{loanDetails.interestRateFrequencyType.value}}) - {{loanDetails.interestType.value}} </span>
<span fxFlex="50%"> {{"labels.inputs.Interest" | translate}} </span>
<span fxFlex="50%"> {{loanDetails.annualInterestRate | formatNumber}} {{"labels.text.per annum" | translate}} ({{loanDetails.interestRatePerPeriod}} %&nbsp; {{loanDetails.interestRateFrequencyType.value}}) - {{"labels.text." + loanDetails.interestType.value | translate}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Grace: On Principal Payment" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Grace: On Principal Payment" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.graceOnPrincipalPayment}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Grace: On Interest Payment" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Grace: On Interest Payment" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.graceOnInterestPayment}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Grace on Arrears Ageing" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Grace on Arrears Ageing" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.graceOnArrearsAgeing}} </span>
</div>
@@ -53,112 +54,113 @@
<div fxFlexFill>
<span fxFlex="50%"> Fund Source</span>
<span fxFlex="50%"> {{loanDetails.fundName}} </span>
<span fxFlex="50%" *ngIf="loanDetails.fundName"> {{loanDetails.fundName}} </span>
<span fxFlex="50%" *ngIf="!loanDetails.fundName"> {{"labels.inputs.Unassigned" | translate}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Interest Free Period" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Interest Free Period" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.graceOnInterestCharged}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Interest Calculation Period" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Interest Calculation Period" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.interestCalculationPeriodType.value}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Allow Partial Interest Calculation with same as repayment" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.allowPartialPeriodInterestCalcualtion}} </span>
<span fxFlex="50%"> {{"labels.inputs.Allow Partial Interest Calculation with same as repayment" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.allowPartialPeriodInterestCalcualtion | yesNo}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Interest Type" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.interestType.value}} </span>
<span fxFlex="50%"> {{"labels.inputs.Interest Type" | translate}}</span>
<span fxFlex="50%"> {{"labels.text." + loanDetails.interestType.value | translate}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Submitted on" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.timeline.submittedOnDate | dateFormat }} </span>
<span fxFlex="50%"> {{"labels.inputs.Submitted on" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.timeline.submittedOnDate | dateFormat }} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Approved on" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.timeline.approvedOnDate | dateFormat }} </span>
<span fxFlex="50%"> {{"labels.inputs.Approved on" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.timeline.approvedOnDate | dateFormat }} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Disbursed on" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.timeline.actualDisbursementDate | dateFormat }} </span>
<span fxFlex="50%"> {{"labels.inputs.Disbursed on" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.timeline.actualDisbursementDate | dateFormat }} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Matures on" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.timeline.expectedMaturityDate | dateFormat }} </span>
<span fxFlex="50%"> {{"labels.inputs.Matures on" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.timeline.expectedMaturityDate | dateFormat }} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.canDefineInstallmentAmount">
<span fxFlex="50%"> {{"labels.inputs.Fixed EMI amount" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Fixed EMI amount" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.fixedEmiAmount | formatNumber}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isTopup">
<span fxFlex="50%"> {{"labels.inputs.Is Topup Loan" | translate }}?</span>
<span fxFlex="50%"> {{"labels.inputs.Is Topup Loan" | translate}}?</span>
<span fxFlex="50%"> {{loanDetails.isTopup | yesNo}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isTopup">
<span fxFlex="50%"> {{"labels.inputs.Loan closed with Topup" | translate }} </span>
<span fxFlex="50%"> {{"labels.inputs.Loan closed with Topup" | translate}} </span>
<span fxFlex="50%"> <a href="#">{{loanDetails.closureLoanAccountNo}}</a> </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isTopup">
<span fxFlex="50%"> {{"labels.inputs.Topup closure amount" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.topupAmount| formatNumber}} </span>
<span fxFlex="50%"> {{"labels.inputs.Topup closure amount" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.topupAmount | formatNumber}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Recalculate Interest based on new terms" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Recalculate Interest based on new terms" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.isInterestRecalculationEnabled | yesNo}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Days in year" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Days in year" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.daysInYearType.value}} </span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Days in month" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Days in month" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.daysInMonthType.value }} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isInterestRecalculationEnabled">
<span fxFlex="50%"> {{"labels.inputs.Interest recalculation compounding on" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Interest recalculation compounding on" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.interestRecalculationData.interestRecalculationCompoundingType.value}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isInterestRecalculationEnabled">
<span fxFlex="50%"> {{"labels.inputs.Advance payments adjustment type" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Advance payments adjustment type" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.interestRecalculationData.rescheduleStrategyType.value}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isInterestRecalculationEnabled">
<span fxFlex="50%"> {{"labels.inputs.Frequency for recalculate Outstanding Principal" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Frequency for recalculate Outstanding Principal" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.interestRecalculationData.calendarData.humanReadable}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isInterestRecalculationEnabled && loanDetails.interestRecalculationData.interestRecalculationCompoundingType.id !=0">
<span fxFlex="50%"> {{"labels.inputs.Frequency for compounding" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Frequency for compounding" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.interestRecalculationData.compoundingCalendarData.humanReadable}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isVariableInstallmentsAllowed">
<span fxFlex="50%"> {{"labels.inputs.Variable Installments Allowed" | translate }}</span>
<span fxFlex="50%"> {{"labels.inputs.Variable Installments Allowed" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.isVariableInstallmentsAllowed | yesNo}} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.isVariableInstallmentsAllowed">
<span fxFlex="50%"> {{"labels.inputs.Gap between Installments" | translate }}</span>
<span fxFlex="50%"> {{loanDetails.minimumGap}}&nbsp;Days&nbsp;, Max:{{loanDetails.maximumGap}}&nbsp;Days) </span>
<span fxFlex="50%"> {{"labels.inputs.Gap between Installments" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.minimumGap | formatNumber}}&nbsp;{{"labels.text.Days" | translate}}&nbsp;, Max:{{loanDetails.maximumGap | formatNumber}}&nbsp;{{"labels.text.Days" | translate}}) </span>
</div>
</div>
@@ -3,25 +3,25 @@
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.name" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.name" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.name }} </td>
</ng-container>
<ng-container matColumnDef="feepenalty">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Fee/Penalty" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Fee/Penalty" | translate}} </th>
<td mat-cell *matCellDef="let charge">
<span *ngIf="charge.penalty">{{"labels.inputs.Penalty" | translate }}</span>
<span *ngIf="!charge.penalty">{{"labels.inputs.Fee" | translate }}</span>
<span *ngIf="charge.penalty">{{"labels.inputs.Penalty" | translate}}</span>
<span *ngIf="!charge.penalty">{{"labels.inputs.Fee" | translate}}</span>
</td>
</ng-container>
<ng-container matColumnDef="paymentdueat">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Payment due at" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Payment due at" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
</ng-container>
<ng-container matColumnDef="submittedDate">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Submitted On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Submitted On" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.submittedOnDate | dateFormat }} </td>
</ng-container>
@@ -37,58 +37,58 @@
</ng-container>
<ng-container matColumnDef="calculationtype">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Calculation Type" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Calculation Type" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value }} </td>
</ng-container>
<ng-container matColumnDef="due">
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Due" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Due" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let charge"> {{ charge.amount |
currency:charge.currency.code:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="paid">
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Paid" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Paid" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let charge"> {{ charge.amountPaid |
currency:charge.currency.code:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="waived">
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Waived" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Waived" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let charge"> {{ charge.amountWaived |
currency:charge.currency.code:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="outstanding">
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Outstanding" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Outstanding" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let charge"> {{charge.amountOutstanding |
currency:charge.currency.code:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef mat-sort-header> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell class="center" *matCellDef="let charge">
<span *ngIf="status === 'Submitted and pending approval'">
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Edit Charge' | translate }}"
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Edit Charge' | translate}}"
(click)="routeEdit($event); editCharge(charge)">
<i class="fa fa-pencil"></i>
</button>
<button class="account-action-button" mat-raised-button color="warn" matTooltip="{{ 'tooltips.Delete Charge' | translate }}"
<button class="account-action-button" mat-raised-button color="warn" matTooltip="{{ 'tooltips.Delete Charge' | translate}}"
(click)="routeEdit($event); deleteCharge(charge.id)">
<i class="fa fa-trash"></i>
</button>
</span>
<button class="account-action-button" mat-raised-button color="accent" matTooltip="{{ 'tooltips.Adjust Charge' | translate }}"
<button class="account-action-button" mat-raised-button color="accent" matTooltip="{{ 'tooltips.Adjust Charge' | translate}}"
*ngIf="!charge.paid && status=='Active'"
(click)="routeEdit($event); adjustCharge(charge.id)">
<i class="fa fa-pencil"></i>
</button>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Pay Charge' | translate }}"
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Pay Charge' | translate}}"
*ngIf="charge.chargePayable && !charge.paid && status=='Active'"
(click)="routeEdit($event); payCharge(charge.id)">
<i class="fa fa-dollar"></i>
</button>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Waive Charge' | translate }}"
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Waive Charge' | translate}}"
*ngIf="!charge.actionFlag" (click)="routeEdit($event); waiveCharge(charge.id)">
<i class="fa fa-flag"></i>
</button>
@@ -1,12 +1,12 @@
<div class="tab-container mat-typography">
<div fxFlexFill *ngIf="existActiveTransfer">
<h3>{{"labels.heading.Active Asset Transfer" | translate }}</h3>
<h3>{{"labels.heading.Active Asset Transfer" | translate}}</h3>
<div fxLayout="row" fxLayoutGap="32px" class="asset-transfer-container">
<table>
<tbody>
<tr>
<td fxFlex="25%">
<b>{{"labels.inputs.Status" | translate }} :</b>
<b>{{"labels.inputs.Status" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
<div [ngClass]="itemStatus(activeTransferData.status)">
@@ -15,7 +15,7 @@
</div>
</td>
<td fxFlex="25%">
<b>{{"labels.inputs.Owner External Id" | translate }} :</b>
<b>{{"labels.inputs.Owner External Id" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
<mifosx-external-identifier externalId="{{activeTransferData.owner.externalId}}" completed="true"></mifosx-external-identifier>
@@ -23,13 +23,13 @@
</tr>
<tr>
<td fxFlex="25%">
<b>{{"labels.inputs.Settlement Date" | translate }} :</b>
<b>{{"labels.inputs.Settlement Date" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{activeTransferData.settlementDate | dateFormat}}
</td>
<td fxFlex="25%">
<b>{{"labels.inputs.Effective Date" | translate }} :</b>
<b>{{"labels.inputs.Effective Date" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{activeTransferData.effectiveFrom | dateFormat}}
@@ -37,33 +37,33 @@
</tr>
<tr>
<td fxFlex="25%">
<b>{{"labels.inputs.Details" | translate }} :</b>
<b>{{"labels.inputs.Details" | translate}} :</b>
</td>
<td fxFlex="75%" class="left">
<table>
<tbody>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Principal Outstanding" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Principal Outstanding" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalPrincipalOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Interest Outstanding" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Interest Outstanding" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalInterestOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Fees Outstanding" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Fees Outstanding" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalFeeChargesOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Penalties Outstanding" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Penalties Outstanding" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalPenaltyChargesOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Outstanding" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Outstanding" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%"><b>{{"labels.inputs.Overpaid" | translate }} :</b></td>
<td fxFlex="50%"><b>{{"labels.inputs.Overpaid" | translate}} :</b></td>
<td fxFlex="50%" class="r-amount">{{activeTransferData.details.totalOverpaid | formatNumber}}</td>
</tr>
</tbody>
@@ -77,23 +77,23 @@
<div fxLayout="row" fxLayoutAlign="start center">
<h3 fxFlex="90%">{{"labels.heading.External Asset Owner" | translate }}</h3>
<h3 fxFlex="90%">{{"labels.heading.External Asset Owner" | translate}}</h3>
<div fxFlex="10%" *ngIf="canBeSold()" >
<button mat-raised-button class="f-right" color="primary" (click)="saleLoan()" *mifosxHasPermission="'SALE_LOAN'">
<fa-icon icon="dollar-sign" class="m-r-10"></fa-icon>{{"labels.buttons.Sale Loan" | translate }}
<fa-icon icon="dollar-sign" class="m-r-10"></fa-icon>{{"labels.buttons.Sale Loan" | translate}}
</button>
</div>
<div fxFlex="10%" *ngIf="canBeCancelled()" >
<button mat-raised-button class="f-right" color="warn" (click)="cancelSaleLoan()" *mifosxHasPermission="'SALE_LOAN'">
<fa-icon icon="trash" class="m-r-10"></fa-icon>{{"labels.buttons.Cancel Sale Loan" | translate }}
<fa-icon icon="trash" class="m-r-10"></fa-icon>{{"labels.buttons.Cancel Sale Loan" | translate}}
</button>
</div>
<div fxFlex="10%" *ngIf="canBeBuyed()" >
<button mat-raised-button class="f-right" color="primary" (click)="buyBackLoan()" *mifosxHasPermission="'SALE_LOAN'">
<fa-icon icon="dollar-sign" class="m-r-10"></fa-icon>{{"labels.buttons.Buy Back Loan" | translate }}
<fa-icon icon="dollar-sign" class="m-r-10"></fa-icon>{{"labels.buttons.Buy Back Loan" | translate}}
</button>
</div>
</div>
@@ -101,50 +101,50 @@
<table mat-table mat-sort [dataSource]="loanTransfersData" *ngIf="loanTransfersData.length>0">
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate}} </th>
<td mat-cell *matCellDef="let item">
<div [ngClass]="itemStatus(item.status)">
<fa-icon icon="stop"></fa-icon>
<span class="m-l-10 status">
{{ itemCurrentStatus(item) | translate }}
{{ itemCurrentStatus(item) | translate}}
</span>
</div>
</td>
</ng-container>
<ng-container matColumnDef="effectiveFrom">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Effective From" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Effective From" | translate}} </th>
<td mat-cell *matCellDef="let item"> {{ item.effectiveFrom | dateFormat }}</td>
</ng-container>
<ng-container matColumnDef="ownerExternalId">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Owner External Id" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Owner External Id" | translate}} </th>
<td mat-cell *matCellDef="let item">
<mifosx-external-identifier externalId="{{item.owner.externalId}}"></mifosx-external-identifier>
</td>
</ng-container>
<ng-container matColumnDef="transferExternalId">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transfer External Id" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transfer External Id" | translate}} </th>
<td mat-cell *matCellDef="let item">
<mifosx-external-identifier externalId="{{item.transferExternalId}}"></mifosx-external-identifier>
</td>
</ng-container>
<ng-container matColumnDef="settlementDate">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Settlement Date" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Settlement Date" | translate}} </th>
<td mat-cell *matCellDef="let item"> {{ item.settlementDate | dateFormat }}</td>
</ng-container>
<ng-container matColumnDef="purchasePriceRatio">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Purchase Price Ratio" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Purchase Price Ratio" | translate}} </th>
<td mat-cell *matCellDef="let item"> {{ item.purchasePriceRatio | number }}</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell *matCellDef="let item" class="center td-min-space">
<button class="account-action-button" *ngIf="!isPendingOrCanceled(item)" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Journal Entries' | translate }}"
<button class="account-action-button" *ngIf="!isPendingOrCanceled(item)" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Journal Entries' | translate}}"
matTooltipPosition="left" (click)="routeJournalEntry($event)" [routerLink]="['/', 'journal-entry', 'view-transfer', item.transferId]">
<i class="fa fa-arrow-circle-right"></i>
</button>
@@ -3,12 +3,12 @@
<table mat-table [dataSource]="interestRateData">
<ng-container matColumnDef="fromDate">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Date" | translate }} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.fromDate | dateFormat}} </td>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Date" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.fromDate | dateFormat}} </td>
</ng-container>
<ng-container matColumnDef="interestRate">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Interest Rate" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Interest Rate" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.effectiveInterestRate }} </td>
</ng-container>
@@ -1,19 +1,19 @@
<div class="tab-container mat-typography">
<ng-container *ngIf="loanDetails.summary">
<h3>{{"labels.heading.Performance History" | translate }}</h3>
<h3>{{"labels.heading.Performance History" | translate}}</h3>
<div fxLayout="row" fxLayoutGap="32px" class="performance-history-container">
<table>
<tbody>
<tr>
<td fxFlex="25%">
<b>{{"labels.inputs.Number of Repayments" | translate }} :</b>
<b>{{"labels.inputs.Number of Repayments" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{loanDetails?.numberOfRepayments | formatNumber}}
</td>
<td fxFlex="25%">
<b>{{"labels.inputs.Maturity Date" | translate }} :</b>
<b>{{"labels.inputs.Maturity Date" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{loanDetails?.timeline.expectedMaturityDate | dateFormat}}
@@ -26,7 +26,7 @@
<div *ngIf="loanDetails.summary">
<h3> {{"labels.heading.Loan Summary" | translate }} </h3>
<h3> {{"labels.heading.Loan Summary" | translate}} </h3>
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="Empty">
@@ -35,37 +35,37 @@
</ng-container>
<ng-container matColumnDef="Original">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Original" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Original" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.original | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Paid">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Paid" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Paid" | translate}} </th>
<td mat-cell class="r-amount amount-minus" *matCellDef="let ele"> {{ ele.paid | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Adjustments">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Credit Adjustments" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Credit Adjustments" | translate}} </th>
<td mat-cell class="r-amount amount-plus" *matCellDef="let ele"> {{ ele.adjustment | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Waived">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Waived" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Waived" | translate}} </th>
<td mat-cell class="r-amount amount-minus" *matCellDef="let ele"> {{ ele.waived | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Written Off">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Written Off" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Written Off" | translate}} </th>
<td mat-cell class="r-amount amount-minus" *matCellDef="let ele"> {{ ele.writtenOff | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Outstanding">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Outstanding" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Outstanding" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.outstanding | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
<ng-container matColumnDef="Over Due">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Over Due" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Over Due" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.overdue | currency:currencyCode:'symbol-narrow':'1.2-2' }} </td>
</ng-container>
@@ -77,33 +77,29 @@
<div *ngIf="loanDetails.summary">
<h3> {{"labels.heading.Loan Details" | translate }} </h3>
<h3> {{"labels.heading.Loan Details" | translate}} </h3>
<table mat-table [dataSource]="detailsDataSource">
<ng-container matColumnDef="Key">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Key" | translate }} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.key }} </td>
</ng-container>
<ng-container matColumnDef="Value">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Value" | translate }} </th>
<td mat-cell *matCellDef="let ele">
<ng-container *ngIf="ele.key === 'Disbursement Date'" >
<span *ngIf="loanDetails.timeline.actualDisbursementDate"> {{loanDetails.timeline.actualDisbursementDate | dateFormat}} </span>
<span *ngIf="!loanDetails.timeline.actualDisbursementDate"> {{"labels.inputs.Not Available" | translate }} </span>
<span *ngIf="loanDetails.timeline.actualDisbursementDate"> {{loanDetails.timeline.actualDisbursementDate | dateFormat}} </span>
<span *ngIf="!loanDetails.timeline.actualDisbursementDate"> {{"labels.inputs.Not Available" | translate}} </span>
</ng-container>
<ng-container *ngIf="ele.key === 'Loan Purpose'">
<span *ngIf="loanDetails.loanPurposeName"> {{loanDetails.loanPurposeName}} </span>
<span *ngIf="!loanDetails.loanPurposeName"> {{"labels.inputs.Not Available" | translate }} </span>
<span *ngIf="!loanDetails.loanPurposeName"> {{"labels.inputs.Not Available" | translate}} </span>
</ng-container>
<ng-container *ngIf="ele.key === 'Loan Officer'">
<span *ngIf="!loanDetails.loanOfficerName"> {{"labels.inputs.Unassigned" | translate }} </span>
<span *ngIf="!loanDetails.loanOfficerName"> {{"labels.inputs.Unassigned" | translate}} </span>
<span *ngIf="loanDetails.loanOfficerName"> {{loanDetails.loanOfficerName}} &nbsp;
<span *ngIf="loanDetails.loanOfficerName">
<!-- <a ng-click="clickEvent('unassignloanofficer', loanDetails.id)" *mifosxHasPermission = "'REMOVELOANOFFICER_LOAN'"><i
class="fa fa-times"></i></a> -->
</span>
</span>
</ng-container>
@@ -116,7 +112,7 @@
<span *ngIf="loanDetails.externalId">
<mifosx-external-identifier externalId="{{loanDetails.externalId}}" completed="true"></mifosx-external-identifier>
</span>
<span *ngIf="!loanDetails.externalId"> {{"labels.inputs.Not Available" | translate }} </span>
<span *ngIf="!loanDetails.externalId"> {{"labels.inputs.Not Available" | translate}} </span>
</ng-container>
<ng-container *ngIf="ele.key === 'Proposed Amount' || ele.key === 'Approved Amount' || ele.key === 'Disburse Amount'">
@@ -125,7 +121,6 @@
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="loanDetailsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: loanDetailsColumns;"></tr>
</table>
@@ -134,28 +129,24 @@
<div *ngIf="!loanDetails.summary">
<h3> {{"labels.heading.Loan Details" | translate }} </h3>
<h3> {{"labels.heading.Loan Details" | translate}} </h3>
<table mat-table [dataSource]="detailsDataSource">
<ng-container matColumnDef="Key">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Key" | translate }} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.key }} </td>
</ng-container>
<ng-container matColumnDef="Value">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Value" | translate }} </th>
<td mat-cell *matCellDef="let ele">
<ng-container *ngIf="ele.key === 'Disbursement Date'" >
<span *ngIf="loanDetails.timeline.actualDisbursementDate"> {{loanDetails.timeline.actualDisbursementDate | dateFormat}} </span>
<span *ngIf="!loanDetails.timeline.actualDisbursementDate"> {{"labels.inputs.Not Available" | translate }} </span>
<span *ngIf="loanDetails.timeline.actualDisbursementDate"> {{loanDetails.timeline.actualDisbursementDate | dateFormat}} </span>
<span *ngIf="!loanDetails.timeline.actualDisbursementDate"> {{"labels.inputs.Not Available" | translate}} </span>
</ng-container>
<ng-container *ngIf="ele.key === 'Loan Officer'">
<span *ngIf="!loanDetails.loanOfficerName"> {{"labels.inputs.Unassigned" | translate }} </span>
<span *ngIf="!loanDetails.loanOfficerName"> {{"labels.inputs.Unassigned" | translate}} </span>
<span *ngIf="loanDetails.loanOfficerName"> {{loanDetails.loanOfficerName}} &nbsp;
<span *ngIf="loanDetails.loanOfficerName">
<!-- <a ng-click="clickEvent('unassignloanofficer', loanDetails.id)" *mifosxHasPermission = "'REMOVELOANOFFICER_LOAN'"><i
class="fa fa-times"></i></a> -->
</span>
</span>
</ng-container>
@@ -168,51 +159,50 @@
<span *ngIf="loanDetails.externalId">
<mifosx-external-identifier externalId="{{loanDetails.externalId}}" completed="true"></mifosx-external-identifier>
</span>
<span *ngIf="!loanDetails.externalId"> {{"labels.inputs.Not Available" | translate }} </span>
<span *ngIf="!loanDetails.externalId"> {{"labels.inputs.Not Available" | translate}} </span>
</ng-container>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="loanDetailsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: loanDetailsColumns;"></tr>
</table>
</div>
<div *ngIf="!loanDetails.summary">
<h3> {{"labels.heading.Loan Purpose" | translate }} </h3>
<h3> {{"labels.heading.Loan Purpose" | translate}} </h3>
<div class="container">
<div fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Loan Purpose" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Loan Purpose" | translate}}:</span>
<span fxFlex="50%" *ngIf="loanDetails.loanPurposeName">
{{ loanDetails.loanPurposeName }}
</span>
<span fxFlex="50%" *ngIf="!loanDetails.loanPurposeName">
{{"labels.inputs.Not Provided" | translate }}
{{"labels.inputs.Not Provided" | translate}}
</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Proposed Amount" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Proposed Amount" | translate}}:</span>
<span fxFlex="50%">{{ loanDetails.proposedPrincipal | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</div>
<div fxFlexFill *ngIf="showApprovedAmountBasedOnStatus()">
<span fxFlex="50%">{{"labels.inputs.Approved Amount" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Approved Amount" | translate}}:</span>
<span fxFlex="50%">{{ loanDetails.approvedPrincipal | currency:currencyCode:'symbol-narrow':'1.2-2' }}</span>
</div>
<div fxFlexFill *ngIf="showDisbursedAmountBasedOnStatus()">
<span fxFlex="50%">{{"labels.inputs.Disburse Amount" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Disburse Amount" | translate}}:</span>
<span fxFlex="50%">{{ loanDetails.principal | currency:currencyCode:'symbol-narrow':'1.2-2' }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{"labels.inputs.Arrears By" | translate }}:</span>
<span fxFlex="50%">{{"labels.inputs.Not Provided" | translate }}</span>
<span fxFlex="50%">{{"labels.inputs.Arrears By" | translate}}:</span>
<span fxFlex="50%">{{"labels.inputs.Not Provided" | translate}}</span>
</div>
</div>
@@ -9,36 +9,34 @@
<div fxLayout="column">
<mat-form-field>
<mat-label>{{"labels.inputs.Collateral Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Collateral Type" | translate}}</mat-label>
<mat-select required formControlName="collateralTypeId">
<mat-option *ngFor="let collateral of dataObject.allowedCollateralTypes" [value]="collateral.id">
{{ collateral.name }}</mat-option>
</mat-select>
<mat-error *ngIf="collateralForm.controls.collateralTypeId.hasError('required')">
{{"labels.inputs.Collateral type" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Collateral Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Value" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Value" | translate}}</mat-label>
<input matInput required formControlName="value">
<mat-error *ngIf="collateralForm.controls.value.hasError('required')">
{{"labels.inputs.Value" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Value" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Description" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Description" | translate}}</mat-label>
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../loan-collateral']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../loan-collateral']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!collateralForm.valid"
*mifosxHasPermission="'CREATE_COLLATERAL'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CREATE_COLLATERAL'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -8,52 +8,52 @@
<div fxLayout="column">
<mat-form-field>
<mat-label>{{"labels.inputs.Charge" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Charge" | translate}}</mat-label>
<mat-select required formControlName="chargeId">
<mat-option *ngFor="let loanCharge of loanChargeOptions" [value]="loanCharge.id">
{{ loanCharge.name + ' (' + loanCharge?.currency.name + ')' }}
</mat-option>
</mat-select>
<mat-error *ngIf="loanChargeForm.controls.chargeId.hasError('required')">
{{"labels.inputs.Charge" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Charge" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
<input type="number" required matInput formControlName="amount" />
<mat-error *ngIf="loanChargeForm.controls.amount.hasError('required')">
{{"labels.inputs.Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Charge Calculation" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Charge Calculation" | translate}}</mat-label>
<input matInput formControlName="chargeCalculation" />
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Charge Time" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Charge Time" | translate}}</mat-label>
<input matInput formControlName="chargeTime" />
</mat-form-field>
<mat-form-field *ngIf="loanChargeForm.controls['dueDate']" (click)="dueDatePicker.open()">
<mat-label>{{"labels.inputs.Due On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Due On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="dueDatePicker" required
formControlName="dueDate">
<mat-datepicker-toggle matSuffix [for]="dueDatePicker"></mat-datepicker-toggle>
<mat-datepicker #dueDatePicker></mat-datepicker>
<mat-error *ngIf="loanChargeForm.controls.dueDate.hasError('required')">
{{"labels.inputs.Due Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Due Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
</div>
<mat-card-actions fxLayoutGap="5px" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!loanChargeForm.valid"
*mifosxHasPermission="'CREATE_LOANCHARGE'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CREATE_LOANCHARGE'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,22 +9,22 @@
<div fxLayout="column">
<mat-form-field appearance="fill">
<mat-label>{{"labels.inputs.Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
<span matTextSuffix class="m-l-10">{{ loanDetailsData.currency.code }}</span>
<span fxFlex="auto"></span>
<input type="number" matInput required class="right-input" formControlName="amount">
<mat-error *ngIf="adjustLoanChargeForm.controls.amount.hasError('required')">
{{"labels.inputs.Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypes" [value]="paymentType.id">
{{ paymentType.name }}
@@ -36,7 +36,7 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
@@ -44,42 +44,42 @@
<ng-container *ngIf="showPaymentDetails">
<mat-form-field>
<mat-label> {{"labels.inputs.Account" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Account" | translate}} #</mat-label>
<input matInput formControlName="accountNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Cheque" | translate}} #</mat-label>
<input matInput formControlName="checkNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Routing Code" | translate}}</mat-label>
<input matInput formControlName="routingCode">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reciept" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Reciept" | translate}} #</mat-label>
<input matInput formControlName="receiptNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Bank" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Bank" | translate}} #</mat-label>
<input matInput formControlName="bankNumber">
</mat-form-field>
</ng-container>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../..']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../..']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!adjustLoanChargeForm.valid"
*mifosxHasPermission="'ADJUSTMENT_LOANCHARGE'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'ADJUSTMENT_LOANCHARGE'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,18 +9,18 @@
<div fxLayout="column">
<mat-form-field (click)="approvedDatePicker.open()">
<mat-label>{{"labels.inputs.Approved On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Approved On" | translate}}</mat-label>
<input matInput [min]="minDate" [matDatepicker]="approvedDatePicker" required
formControlName="approvedOnDate">
<mat-datepicker-toggle matSuffix [for]="approvedDatePicker"></mat-datepicker-toggle>
<mat-datepicker #approvedDatePicker></mat-datepicker>
<mat-error *ngIf="approveLoanForm.controls.approvedOnDate.hasError('required')">
{{"labels.inputs.Approved Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Approved Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field (click)="disbursementDatePicker.open()">
<mat-label>{{"labels.inputs.Expected disbursement on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Expected disbursement on" | translate}}</mat-label>
<input matInput [min]="minDate" [matDatepicker]="disbursementDatePicker"
formControlName="expectedDisbursementDate">
<mat-datepicker-toggle matSuffix [for]="disbursementDatePicker"></mat-datepicker-toggle>
@@ -28,29 +28,29 @@
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Approved Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Approved Amount" | translate}}</mat-label>
<input matInput type="number" formControlName="approvedLoanAmount">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput type="number" required formControlName="approvedLoanAmount">
<mat-error *ngIf="approveLoanForm.controls.approvedLoanAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!approveLoanForm.valid"
*mifosxHasPermission="'APPROVE_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'APPROVE_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,43 +9,43 @@
<div fxLayout="column">
<mat-form-field (click)="settlementDatePicker.open()">
<mat-label>{{"labels.inputs.Settlement Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Settlement Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="settlementDatePicker" required
formControlName="settlementDate">
<mat-datepicker-toggle matSuffix [for]="settlementDatePicker"></mat-datepicker-toggle>
<mat-datepicker #settlementDatePicker></mat-datepicker>
<mat-error *ngIf="saleLoanForm.controls.settlementDate.hasError('required')">
{{"labels.inputs.Settlement Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Settlement Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="!isBuyBack()">
<mat-label>{{"labels.inputs.Purchase Price Ratio" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Purchase Price Ratio" | translate}}</mat-label>
<input type="number" matInput required formControlName="purchasePriceRatio">
<mat-error *ngIf="saleLoanForm.controls.purchasePriceRatio.hasError('required')">
{{"labels.inputs.Purchase Price Ratio" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Purchase Price Ratio" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="!isBuyBack()">
<mat-label>{{"labels.inputs.Owner External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Owner External Id" | translate}}</mat-label>
<input matInput formControlName="ownerExternalId">
<mat-error *ngIf="saleLoanForm.controls.ownerExternalId.hasError('required')">
{{"labels.inputs.Owner External Id" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Owner External Id" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transfer External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transfer External Id" | translate}}</mat-label>
<input matInput formControlName="transferExternalId">
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!saleLoanForm.valid"
*mifosxHasPermission="'SALE_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'SALE_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,34 +9,34 @@
<div fxLayout="column">
<mat-form-field>
<mat-label> {{"labels.inputs.To Loan Officer" | translate }}</mat-label>
<mat-label> {{"labels.inputs.To Loan Officer" | translate}}</mat-label>
<mat-select required formControlName="toLoanOfficerId">
<mat-option *ngFor="let loanOfficer of loanOfficers" [value]="loanOfficer.id">
{{ loanOfficer.displayName }}
</mat-option>
</mat-select>
<mat-error *ngIf="assignOfficerForm.controls.toLoanOfficerId.hasError('required')">
{{"labels.inputs.Loan Officer" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Loan Officer" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field (click)="assignOnDatePicker.open()">
<mat-label>{{"labels.inputs.Assignment Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Assignment Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="assignOnDatePicker" required
formControlName="assignmentDate">
<mat-datepicker-toggle matSuffix [for]="assignOnDatePicker"></mat-datepicker-toggle>
<mat-datepicker #assignOnDatePicker></mat-datepicker>
<mat-error *ngIf="assignOfficerForm.controls.assignmentDate.hasError('required')">
{{"labels.inputs.Assignment Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Assignment Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!assignOfficerForm.valid"
*mifosxHasPermission="'BULKREASSIGN_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'BULKREASSIGN_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,44 +9,44 @@
<div fxLayout="column">
<mat-form-field (click)="transactionDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionDatePicker></mat-datepicker>
<mat-error *ngIf="chargeoffLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reason for Charge-Off" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Reason for Charge-Off" | translate}}</mat-label>
<mat-select formControlName="chargeOffReasonId">
<mat-option *ngFor="let chargeOffReason of chargeOffReasonOptions" [value]="chargeOffReason.id">
{{ chargeOffReason.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="chargeoffLoanForm.controls.chargeOffReasonId.hasError('required')">
{{"labels.inputs.Reason for Charge-Off" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Reason for Charge-Off" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!chargeoffLoanForm.valid"
*mifosxHasPermission="'CHARGEOFF_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CHARGEOFF_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,27 +9,27 @@
<div fxLayout="column">
<mat-form-field (click)="closedDatePicker.open()">
<mat-label>{{"labels.inputs.Closed On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Closed On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="closedDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="closedDatePicker"></mat-datepicker-toggle>
<mat-datepicker #closedDatePicker></mat-datepicker>
<mat-error *ngIf="closeLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Closed Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Closed Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!closeLoanForm.valid"
*mifosxHasPermission="'CLOSEASRESCHEDULED_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CLOSEASRESCHEDULED_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,16 +9,16 @@
<div fxLayout="column">
<mat-checkbox labelPosition="before" formControlName="existingClient">
{{"labels.inputs.Existing Client" | translate }}
{{"labels.inputs.Existing Client" | translate}}
</mat-checkbox>
<ng-container *ngIf="!showClientDetailsForm">
<mat-form-field fxFlex="30%">
<mat-label>{{"labels.inputs.name" | translate }}</mat-label>
<mat-label>{{"labels.inputs.name" | translate}}</mat-label>
<input matInput formControlName="name" [matAutocomplete]="clientsAutocomplete">
<mat-error *ngIf="newGuarantorForm.controls.name.hasError('required')">
{{"labels.inputs.name" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.name" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
@@ -30,7 +30,7 @@
</mat-autocomplete>
<mat-form-field>
<mat-label>{{"labels.inputs.Relationship" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Relationship" | translate}}</mat-label>
<mat-select formControlName="clientRelationshipTypeId">
<mat-option *ngFor="let relationType of relationTypes" [value]="relationType.id">
{{ relationType.name }}
@@ -41,7 +41,7 @@
<ng-container *ngIf="accountOptions.length > 0">
<mat-form-field>
<mat-label>{{"labels.inputs.Account" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Account" | translate}}</mat-label>
<mat-select formControlName="savingsId">
<mat-option *ngFor="let accountOption of accountOptions" [value]="accountOption.id">
{{ accountOption.productName }} - {{ accountOption.accountNo }}
@@ -50,7 +50,7 @@
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
<input type="number" matInput required formControlName="amount">
</mat-form-field>
@@ -61,7 +61,7 @@
<ng-container *ngIf="showClientDetailsForm">
<mat-form-field>
<mat-label>{{"labels.inputs.Relationship" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Relationship" | translate}}</mat-label>
<mat-select formControlName="clientRelationshipTypeId">
<mat-option *ngFor="let relationType of relationTypes" [value]="relationType.id">
{{ relationType.name }}
@@ -70,55 +70,55 @@
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.First Name" | translate }}</mat-label>
<mat-label>{{"labels.inputs.First Name" | translate}}</mat-label>
<input matInput required formControlName="firstname">
<mat-error *ngIf="newGuarantorForm.controls.firstname.hasError('required')">
{{"labels.inputs.First Name" | translate }} {{ "labels.commons.is" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.First Name" | translate}} {{"labels.commons.is" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Last Name" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Last Name" | translate}}</mat-label>
<input matInput required formControlName="lastname">
<mat-error *ngIf="newGuarantorForm.controls.lastname.hasError('required')">
{{"labels.inputs.Last Name" | translate }} {{ "labels.commons.is" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Last Name" | translate}} {{"labels.commons.is" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field (click)="dobDatePicker.open()">
<mat-label>{{"labels.inputs.Date Of Birth" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Date Of Birth" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="dobDatePicker" formControlName="dob">
<mat-datepicker-toggle matSuffix [for]="dobDatePicker"></mat-datepicker-toggle>
<mat-datepicker #dobDatePicker></mat-datepicker>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Address Line" | translate }} 1</mat-label>
<mat-label>{{"labels.inputs.Address Line" | translate}} 1</mat-label>
<input matInput formControlName="addressLine1">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Address Line" | translate }} 2</mat-label>
<mat-label>{{"labels.inputs.Address Line" | translate}} 2</mat-label>
<input matInput formControlName="addressLine2">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.City" | translate }}</mat-label>
<mat-label>{{"labels.inputs.City" | translate}}</mat-label>
<input matInput formControlName="city">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Zip" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Zip" | translate}}</mat-label>
<input matInput formControlName="zip">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Mobile" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Mobile" | translate}}</mat-label>
<input type="number" matInput formControlName="mobileNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Residence Phone" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Residence Phone" | translate}} #</mat-label>
<input type="number" matInput formControlName="housePhoneNumber">
</mat-form-field>
@@ -127,9 +127,9 @@
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!newGuarantorForm.valid"
*mifosxHasPermission="'CREATE_GUARANTOR'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CREATE_GUARANTOR'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -139,18 +139,18 @@
<ng-container *ngIf="!(newGuarantorForm.controls.name === undefined)">
<div class="mat-table">
<div class="mat-header-row">
<div class="mat-header-cell">{{"labels.inputs.Client Details" | translate }}</div>
<div class="mat-header-cell">{{"labels.inputs.Client Details" | translate}}</div>
</div>
<div class="mat-row">
<div class="mat-cell">{{"labels.inputs.name" | translate }}</div>
<div class="mat-cell">{{"labels.inputs.name" | translate}}</div>
<div class="mat-cell">{{newGuarantorForm.controls.name.value.displayName}}</div>
</div>
<div class="mat-row">
<div class="mat-cell">{{"labels.inputs.Id" | translate }}</div>
<div class="mat-cell">{{"labels.inputs.Id" | translate}}</div>
<div class="mat-cell">{{newGuarantorForm.controls.name.value.id}}</div>
</div>
<div class="mat-row">
<div class="mat-cell">{{"labels.inputs.Office" | translate }}</div>
<div class="mat-cell">{{"labels.inputs.Office" | translate}}</div>
<div class="mat-cell">{{newGuarantorForm.controls.name.value.officeName}}</div>
</div>
</div>
@@ -9,40 +9,40 @@
<div fxLayout="column">
<mat-form-field (click)="disbursementDatePicker.open()">
<mat-label>{{"labels.inputs.Disbursement On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Disbursement On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="disbursementDatePicker" required
formControlName="actualDisbursementDate">
<mat-datepicker-toggle matSuffix [for]="disbursementDatePicker"></mat-datepicker-toggle>
<mat-datepicker #disbursementDatePicker></mat-datepicker>
<mat-error *ngIf="disbursementForm.controls.actualDisbursementDate.hasError('required')">
{{"labels.inputs.Disbursement Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Disbursement Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput type="number" required formControlName="transactionAmount">
<mat-error *ngIf="disbursementForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="dataObject.fixedEmiAmount">
<mat-label>{{"labels.inputs.Fixed EMI amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Fixed EMI amount" | translate}}</mat-label>
<input matInput type="number" formControlName="fixedEmiAmount">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!disbursementForm.valid"
*mifosxHasPermission="'DISBURSETOSAVINGS_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'DISBURSETOSAVINGS_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,31 +9,31 @@
<div fxLayout="column">
<mat-form-field (click)="actualDisbursementDatePicker.open()">
<mat-label>{{"labels.inputs.Disbursed On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Disbursed On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="actualDisbursementDatePicker" required
formControlName="actualDisbursementDate">
<mat-datepicker-toggle matSuffix [for]="actualDisbursementDatePicker"></mat-datepicker-toggle>
<mat-datepicker #actualDisbursementDatePicker></mat-datepicker>
<mat-error *ngIf="disbursementLoanForm.controls.actualDisbursementDate.hasError('required')">
{{"labels.inputs.Disbursed On Date" | translate }}<strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Disbursed On Date" | translate}}<strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount">
<mat-error *ngIf="disbursementLoanForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypes" [value]="paymentType.id">
{{ paymentType.name }}
@@ -45,7 +45,7 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
@@ -53,42 +53,42 @@
<ng-container *ngIf="showPaymentDetails">
<mat-form-field>
<mat-label>{{"labels.inputs.Account" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Account" | translate}} #</mat-label>
<input matInput formControlName="accountNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Cheque" | translate}} #</mat-label>
<input matInput formControlName="checkNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Routing Code" | translate}}</mat-label>
<input matInput formControlName="routingCode">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reciept" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Reciept" | translate}} #</mat-label>
<input matInput formControlName="receiptNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Bank" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Bank" | translate}} #</mat-label>
<input matInput formControlName="bankNumber">
</mat-form-field>
</ng-container>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!disbursementLoanForm.valid"
*mifosxHasPermission="'DISBURSE_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'DISBURSE_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -11,11 +11,11 @@
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" (click)="reset()">{{"labels.buttons.Reset" | translate }}</button>
<button type="button" color="primary" mat-raised-button (click)="applyPattern()">{{"labels.buttons.Pattern" | translate }}</button>
<button type="button" color="primary" mat-raised-button [disabled]="!wasChanged" (click)="validate()">{{"labels.buttons.Validate" | translate }}</button>
<button type="button" color="primary" mat-raised-button [disabled]="!wasValidated" (click)="submit()">{{"labels.buttons.Submit" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button type="button" (click)="reset()">{{"labels.buttons.Reset" | translate}}</button>
<button type="button" color="primary" mat-raised-button (click)="applyPattern()">{{"labels.buttons.Pattern" | translate}}</button>
<button type="button" color="primary" mat-raised-button [disabled]="!wasChanged" (click)="validate()">{{"labels.buttons.Validate" | translate}}</button>
<button type="button" color="primary" mat-raised-button [disabled]="!wasValidated" (click)="submit()">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,52 +9,52 @@
<div fxLayout="column">
<mat-form-field (click)="transactionsDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionsDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionsDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionsDatePicker></mat-datepicker>
<mat-error *ngIf="foreclosureForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Principal" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Principal" | translate}}</mat-label>
<input matInput formControlName="outstandingPrincipalPortion">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Interest" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Interest" | translate}}</mat-label>
<input matInput formControlName="outstandingInterestPortion">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Fee Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Fee Amount" | translate}}</mat-label>
<input matInput formControlName="outstandingFeeChargesPortion">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Penalty Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Penalty Amount" | translate}}</mat-label>
<input matInput required formControlName="outstandingPenaltyChargesPortion">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!foreclosureForm.valid"
*mifosxHasPermission="'FORECLOSURE_LOAN'">{{"labels.buttons.Foreclosure" | translate }}</button>
*mifosxHasPermission="'FORECLOSURE_LOAN'">{{"labels.buttons.Foreclosure" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,40 +9,40 @@
<div fxLayout="column">
<mat-form-field (click)="transactionDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionDatePicker></mat-datepicker>
<mat-error *ngIf="creditBalanceLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount">
<mat-error *ngIf="creditBalanceLoanForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!creditBalanceLoanForm.valid"
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,49 +9,49 @@
<div fxLayout="column">
<mat-form-field (click)="rescheduleDatePicker.open()">
<mat-label>{{"labels.inputs.Reschedule from Installment On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Reschedule from Installment On" | translate}}</mat-label>
<input matInput [min]="minDate" [matDatepicker]="rescheduleDatePicker" required
formControlName="rescheduleFromDate">
<mat-datepicker-toggle matSuffix [for]="rescheduleDatePicker"></mat-datepicker-toggle>
<mat-datepicker #rescheduleDatePicker></mat-datepicker>
<mat-error *ngIf="rescheduleLoanForm.controls.rescheduleFromDate.hasError('required')">
{{"labels.inputs.Reschedule Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Reschedule Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reason for Rescheduling" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Reason for Rescheduling" | translate}}</mat-label>
<mat-select formControlName="rescheduleReasonId">
<mat-option *ngFor="let rescheduleReasonCode of codes" [value]="rescheduleReasonCode.id">
{{ rescheduleReasonCode.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="rescheduleLoanForm.controls.rescheduleReasonId.hasError('required')">
{{"labels.inputs.Reason for Rescheduling" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Reason for Rescheduling" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field (click)="submittedDatePicker.open()">
<mat-label>{{"labels.inputs.Submitted On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Submitted On" | translate}}</mat-label>
<input matInput [min]="minDate" [matDatepicker]="submittedDatePicker" required
formControlName="submittedOnDate">
<mat-datepicker-toggle matSuffix [for]="submittedDatePicker"></mat-datepicker-toggle>
<mat-datepicker #submittedDatePicker></mat-datepicker>
<mat-error *ngIf="rescheduleLoanForm.controls.submittedOnDate.hasError('required')">
{{"labels.inputs.Submitted On Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Submitted On Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Comments" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Comments" | translate}}</mat-label>
<textarea matInput formControlName="rescheduleReasonComment"></textarea>
</mat-form-field>
<mat-checkbox [formControl]="changeRepaymentDate"> {{"labels.inputs.Change Repayment Date" | translate }} </mat-checkbox>
<mat-checkbox [formControl]="changeRepaymentDate"> {{"labels.inputs.Change Repayment Date" | translate}} </mat-checkbox>
<ng-container *ngIf="changeRepaymentDate.value" (click)="installmentrescheduledDatePicker.open()">
<mat-form-field>
<mat-label>{{"labels.inputs.Installment Rescheduled to" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Installment Rescheduled to" | translate}}</mat-label>
<input matInput [min]="minDate" [matDatepicker]="installmentrescheduledDatePicker"
formControlName="adjustedDueDate">
<mat-datepicker-toggle matSuffix [for]="installmentrescheduledDatePicker"></mat-datepicker-toggle>
@@ -59,33 +59,33 @@
</mat-form-field>
</ng-container>
<mat-checkbox [formControl]="introduceGracePeriods"> {{"labels.inputs.Introduce Mid-term grace periods" | translate }} </mat-checkbox>
<mat-checkbox [formControl]="introduceGracePeriods"> {{"labels.inputs.Introduce Mid-term grace periods" | translate}} </mat-checkbox>
<ng-container *ngIf="introduceGracePeriods.value">
<mat-form-field>
<mat-label>{{"labels.inputs.Principal Grace Periods" | translate }} </mat-label>
<mat-label>{{"labels.inputs.Principal Grace Periods" | translate}} </mat-label>
<input matInput formControlName="graceOnPrincipal">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Interest Grace Periods" | translate }} </mat-label>
<mat-label>{{"labels.inputs.Interest Grace Periods" | translate}} </mat-label>
<input matInput formControlName="graceOnInterest">
</mat-form-field>
</ng-container>
<mat-checkbox [formControl]="extendRepaymentPeriod"> {{"labels.inputs.Extend Repayment Period" | translate }} </mat-checkbox>
<mat-checkbox [formControl]="extendRepaymentPeriod"> {{"labels.inputs.Extend Repayment Period" | translate}} </mat-checkbox>
<ng-container *ngIf="extendRepaymentPeriod.value">
<mat-form-field>
<mat-label>{{"labels.inputs.Number Of new Repayments" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Number Of new Repayments" | translate}}</mat-label>
<input matInput formControlName="extraTerms">
</mat-form-field>
</ng-container>
<mat-checkbox [formControl]="adjustinterestrates"> {{"labels.inputs.Adjust interest rates for remainder of loan" | translate }} </mat-checkbox>
<mat-checkbox [formControl]="adjustinterestrates"> {{"labels.inputs.Adjust interest rates for remainder of loan" | translate}} </mat-checkbox>
<ng-container *ngIf="adjustinterestrates.value">
<mat-form-field>
<mat-label>{{"labels.inputs.New Interest Rate" | translate }}</mat-label>
<mat-label>{{"labels.inputs.New Interest Rate" | translate}}</mat-label>
<input matInput formControlName="newInterestRate">
</mat-form-field>
</ng-container>
@@ -93,9 +93,9 @@
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!rescheduleLoanForm.valid"
*mifosxHasPermission="'APPROVE_RESCHEDULELOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'APPROVE_RESCHEDULELOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,23 +9,23 @@
<div>
<mat-form-field fxFlex>
<mat-label>{{"labels.inputs.Loan Screen Reports" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Loan Screen Reports" | translate}}</mat-label>
<mat-select formControlName="templateId">
<mat-option *ngFor="let template of templatesData" [value]="template.id">
{{ template.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="loanScreenReportForm.controls.templateId.hasError('required')">
{{"labels.inputs.Screen Report" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Screen Report" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!loanScreenReportForm.valid">
<fa-icon icon="cogs" size="sm" class="m-r-10"></fa-icon>{{"labels.buttons.Generate Report" | translate }}
<fa-icon icon="cogs" size="sm" class="m-r-10"></fa-icon>{{"labels.buttons.Generate Report" | translate}}
</button>
</mat-card-actions>
@@ -44,12 +44,12 @@
<div fxLayoutAlign="end">
<button mat-stroked-button color="primary" [disabled]="!template" (click)="print()">
<fa-icon icon="file" class="m-r-10"></fa-icon>
{{"labels.buttons.Print" | translate }}
{{"labels.buttons.Print" | translate}}
</button>
</div>
<div #screenReport class="screen-report">
<p>{{"labels.text.Please select a screen report." | translate }}</p>
<p>{{"labels.text.Please select a screen report." | translate}}</p>
</div>
</mat-card>
@@ -9,27 +9,27 @@
<div fxLayout="column">
<mat-form-field (click)="closedDatePicker.open()">
<mat-label>{{"labels.inputs.Closed On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Closed On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="closedDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="closedDatePicker"></mat-datepicker-toggle>
<mat-datepicker #closedDatePicker></mat-datepicker>
<mat-error *ngIf="closeLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Closed Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Closed Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!closeLoanForm.valid"
*mifosxHasPermission="'CLOSE_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'CLOSE_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,19 +9,19 @@
<div fxLayout="column">
<mat-form-field (click)="transactionDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionDatePicker></mat-datepicker>
<mat-error *ngIf="repaymentLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
{{ 'Principal' | translate }}
{{ 'Principal' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -29,7 +29,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Interest' | translate }}
{{ 'Interest' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -37,7 +37,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Fees' | translate }}
{{ 'Fees' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -45,7 +45,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Penalties' | translate }}
{{ 'Penalties' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -54,22 +54,22 @@
</div>
<mat-form-field appearance="fill">
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<span matTextSuffix class="m-l-10">{{ dataObject.currency.code }}</span>
<span fxFlex="auto"></span>
<input type="number" matInput required class="right-input" formControlName="transactionAmount">
<mat-error *ngIf="repaymentLoanForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypes" [value]="paymentType.id">
{{ paymentType.name }}
@@ -81,7 +81,7 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
@@ -89,42 +89,42 @@
<ng-container *ngIf="showPaymentDetails">
<mat-form-field>
<mat-label> {{"labels.inputs.Account" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Account" | translate}} #</mat-label>
<input matInput formControlName="accountNumber">
</mat-form-field>
<mat-form-field>
<mat-label> {{"labels.inputs.Cheque" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Cheque" | translate}} #</mat-label>
<input matInput formControlName="checkNumber">
</mat-form-field>
<mat-form-field>
<mat-label> {{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label> {{"labels.inputs.Routing Code" | translate}}</mat-label>
<input matInput formControlName="routingCode">
</mat-form-field>
<mat-form-field>
<mat-label> {{"labels.inputs.Reciept" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Reciept" | translate}} #</mat-label>
<input matInput formControlName="receiptNumber">
</mat-form-field>
<mat-form-field>
<mat-label> {{"labels.inputs.Bank" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Bank" | translate}} #</mat-label>
<input matInput formControlName="bankNumber">
</mat-form-field>
</ng-container>
<mat-form-field>
<mat-label> {{"labels.inputs.Note" | translate }}</mat-label>
<mat-label> {{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!repaymentLoanForm.valid"
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,19 +9,19 @@
<div fxLayout="column">
<mat-form-field (click)="transactionDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionDatePicker></mat-datepicker>
<mat-error *ngIf="prepayLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
{{ 'Principal' | translate }}
{{ 'Principal' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -29,7 +29,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Interest' | translate }}
{{ 'Interest' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -37,7 +37,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Fees' | translate }}
{{ 'Fees' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -45,7 +45,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Penalties' | translate }}
{{ 'Penalties' | translate}}
</div>
<div fxFlex="50%" class="r-amount right-label">
@@ -54,22 +54,22 @@
</div>
<mat-form-field appearance="fill">
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<span matTextSuffix class="m-l-10">{{ prepayData.currency.code }}</span>
<span fxFlex="auto"></span>
<input type="number" matInput required class="right-input" formControlName="transactionAmount">
<mat-error *ngIf="prepayLoanForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypes" [value]="paymentType.id">
{{ paymentType.name }}
@@ -81,7 +81,7 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
@@ -89,42 +89,42 @@
<ng-container *ngIf="showPaymentDetails">
<mat-form-field>
<mat-label> {{"labels.inputs.Account" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Account" | translate}} #</mat-label>
<input matInput formControlName="accountNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Cheque" | translate}} #</mat-label>
<input matInput formControlName="checkNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Routing Code" | translate}}</mat-label>
<input matInput formControlName="routingCode">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reciept" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Reciept" | translate}} #</mat-label>
<input matInput formControlName="receiptNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Bank" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Bank" | translate}} #</mat-label>
<input matInput formControlName="bankNumber">
</mat-form-field>
</ng-container>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!prepayLoanForm.valid"
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,26 +9,26 @@
<div fxLayout="column">
<mat-form-field (click)="transactionDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="transactionDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="transactionDatePicker"></mat-datepicker-toggle>
<mat-datepicker #transactionDatePicker></mat-datepicker>
<mat-error *ngIf="recoveryRepaymentLoanForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount">
<mat-error *ngIf="recoveryRepaymentLoanForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypes" [value]="paymentType.id">
{{ paymentType.name }}
@@ -40,7 +40,7 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
@@ -48,42 +48,42 @@
<ng-container *ngIf="showPaymentDetails">
<mat-form-field>
<mat-label> {{"labels.inputs.Account" | translate }} #</mat-label>
<mat-label> {{"labels.inputs.Account" | translate}} #</mat-label>
<input matInput formControlName="accountNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Cheque" | translate}} #</mat-label>
<input matInput formControlName="checkNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Routing Code" | translate}}</mat-label>
<input matInput formControlName="routingCode">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Reciept" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Reciept" | translate}} #</mat-label>
<input matInput formControlName="receiptNumber">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Bank" | translate }} #</mat-label>
<mat-label>{{"labels.inputs.Bank" | translate}} #</mat-label>
<input matInput formControlName="bankNumber">
</mat-form-field>
</ng-container>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!recoveryRepaymentLoanForm.valid"
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'REPAYMENT_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,27 +9,27 @@
<div fxLayout="column">
<mat-form-field (click)="rejectedDatePicker.open()">
<mat-label>{{"labels.inputs.Rejected On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Rejected On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="rejectedDatePicker" required
formControlName="rejectedOnDate">
<mat-datepicker-toggle matSuffix [for]="rejectedDatePicker"></mat-datepicker-toggle>
<mat-datepicker #rejectedDatePicker></mat-datepicker>
<mat-error *ngIf="rejectLoanForm.controls.rejectedOnDate.hasError('required')">
{{"labels.inputs.Rejected Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Rejected Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!rejectLoanForm.valid"
*mifosxHasPermission="'REJECT_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'REJECT_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -7,14 +7,14 @@
<div fxLayout="column">
<mat-form-field fxFlex>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput [formControl]="note"></textarea>
</mat-form-field>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" (click)="submit()"
*mifosxHasPermission="'APPROVALUNDO_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'APPROVALUNDO_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</div>
@@ -7,16 +7,16 @@
<div fxLayout="column">
<mat-form-field fxFlex>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput required [formControl]="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" (click)="submit()"
*mifosxHasPermission="'DISBURSALUNDO_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'DISBURSALUNDO_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -8,23 +8,23 @@
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Disbursement Date" | translate }}</td>
<td>{{"labels.inputs.Disbursement Date" | translate}}</td>
<td>{{dataObject.timeline.actualDisbursementDate}}<span
*ngIf="!dataObject.timeline.actualDisbursementDate">{{"labels.inputs.Not Available" | translate }}</span></td>
*ngIf="!dataObject.timeline.actualDisbursementDate">{{"labels.inputs.Not Available" | translate}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Currency" | translate }}</td>
<td>{{"labels.inputs.Currency" | translate}}</td>
<td>{{dataObject.currency.name}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Loan Officer" | translate }}</td>
<td>{{dataObject.loanOfficerName}} <span *ngIf="!dataObject.loanOfficerName">{{"labels.inputs.Unassigned" | translate }}</span>
<td>{{"labels.inputs.Loan Officer" | translate}}</td>
<td>{{dataObject.loanOfficerName}} <span *ngIf="!dataObject.loanOfficerName">{{"labels.inputs.Unassigned" | translate}}</span>
<span *ngIf="dataObject.loanOfficerName">
<fa-icon icon="times"></fa-icon>
</span></td>
</tr>
<tr>
<td>{{"labels.inputs.External Id" | translate }}</td>
<td>{{"labels.inputs.External Id" | translate}}</td>
<td>
<mifosx-external-identifier externalId="{{dataObject.externalId}}"></mifosx-external-identifier>
</td>
@@ -37,27 +37,27 @@
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Loan Purpose" | translate }}</td>
<td>{{"labels.inputs.Loan Purpose" | translate}}</td>
<td>
{{dataObject.loanPurposeName}} <span *ngIf="!dataObject.loanPurposeName"> {{"labels.inputs.Not Provided" | translate }} </span>
{{dataObject.loanPurposeName}} <span *ngIf="!dataObject.loanPurposeName"> {{"labels.inputs.Not Provided" | translate}} </span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Approved Amount" | translate }}</td>
<td>{{"labels.inputs.Approved Amount" | translate}}</td>
<td>
<span>{{dataObject.approvedPrincipal | formatNumber}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Disburse Amount" | translate }}</td>
<td>{{"labels.inputs.Disburse Amount" | translate}}</td>
<td>
<span>{{dataObject.principal | formatNumber}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Arrears By" | translate }}</td>
<td>{{"labels.inputs.Arrears By" | translate}}</td>
<td>{{dataObject.summary.totalOverdue | formatNumber}}
<span *ngIf="dataObject.summary.totalOverdue < 0">{{"labels.inputs.Not Provided" | translate }}</span>
<span *ngIf="dataObject.summary.totalOverdue < 0">{{"labels.inputs.Not Provided" | translate}}</span>
</td>
</tr>
</tbody>
@@ -71,7 +71,7 @@
<div class="heading-content">
<div fxLayout="column" fxFlex="50%">
<div class="heading-name">
<h3>{{"labels.heading.Guarantors Details" | translate }}</h3>
<h3>{{"labels.heading.Guarantors Details" | translate}}</h3>
</div>
</div>
<div fxLayout="column" fxFlex="50%">
@@ -85,7 +85,7 @@
<table fxFlexFill mat-table
[dataSource]="guarantorDetails|accountsFilter:'guarantor':showDeletedGuarantorsAccounts">
<ng-container matColumnDef="fullname">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.name" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
{{guarantor.firstname}} &nbsp; {{guarantor.lastname}}
@@ -94,7 +94,7 @@
</ng-container>
<ng-container matColumnDef="relationship">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Relationship" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Relationship" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
{{guarantor.clientRelationshipType.name}}
@@ -103,7 +103,7 @@
</ng-container>
<ng-container matColumnDef="guarantortype">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Guarantor Type" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Guarantor Type" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
{{guarantor.guarantorType.value}}
@@ -112,7 +112,7 @@
</ng-container>
<ng-container matColumnDef="depositAccount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Deposit Account" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Deposit Account" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
@@ -121,7 +121,7 @@
</ng-container>
<ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
@@ -130,7 +130,7 @@
</ng-container>
<ng-container matColumnDef="remainingAmount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Remaining Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Remaining Amount" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
@@ -139,21 +139,21 @@
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate}} </th>
<td mat-cell *matCellDef="let guarantor">
<span *ngIf="!guarantor.guarantorFundingDetails">
<span *ngIf="guarantor.status">
{{"labels.inputs.Active" | translate }}
{{"labels.inputs.Active" | translate}}
</span>
<span *ngIf="!guarantor.status">
{{"labels.inputs.Deleted" | translate }}
{{"labels.inputs.Deleted" | translate}}
</span>
</span>
</td>
</ng-container>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Action" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Action" | translate}} </th>
<td mat-cell *matCellDef="let guarantor; let id = index">
<span *ngIf="!guarantor.guarantorFundingDetails">
<button mat-raised-button class="account-action-button" color="primary"
@@ -9,35 +9,35 @@
<div fxLayout="column">
<mat-form-field (click)="interestDatePicker.open()">
<mat-label>{{"labels.inputs.Interest waived on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Interest waived on" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="interestDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="interestDatePicker"></mat-datepicker-toggle>
<mat-datepicker #interestDatePicker></mat-datepicker>
<mat-error *ngIf="loanInterestForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Interest Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Interest Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount">
<mat-error *ngIf="loanInterestForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!loanInterestForm.valid"
*mifosxHasPermission="'WAIVEINTERESTPORTION_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'WAIVEINTERESTPORTION_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,27 +9,27 @@
<div fxLayout="column">
<mat-form-field (click)="withdrawnOnDatePicker.open()">
<mat-label>{{"labels.inputs.Withdrawn On" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Withdrawn On" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="withdrawnOnDatePicker" required
formControlName="withdrawnOnDate">
<mat-datepicker-toggle matSuffix [for]="withdrawnOnDatePicker"></mat-datepicker-toggle>
<mat-datepicker #withdrawnOnDatePicker></mat-datepicker>
<mat-error *ngIf="withdrawnByClientLoanForm.controls.withdrawnOnDate.hasError('required')">
{{"labels.inputs.Withdrawn On Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Withdrawn On Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!withdrawnByClientLoanForm.valid"
*mifosxHasPermission="'WITHDRAW_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'WITHDRAW_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -9,23 +9,23 @@
<div fxLayout="column">
<mat-form-field (click)="writeOffDatePicker.open()">
<mat-label>{{"labels.inputs.Write off on" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Write off on" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="writeOffDatePicker" required
formControlName="transactionDate">
<mat-datepicker-toggle matSuffix [for]="writeOffDatePicker"></mat-datepicker-toggle>
<mat-datepicker #writeOffDatePicker></mat-datepicker>
<mat-error *ngIf="writeOffForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Write Off Date" | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{"labels.inputs.Write Off Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
<input matInput formControlName="amount">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Note" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Note" | translate}}</mat-label>
<textarea matInput formControlName="note" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
@@ -34,9 +34,9 @@
</form>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../../general']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" (click)="submit()"
*mifosxHasPermission="'WRITEOFF_LOAN'">{{"labels.buttons.Submit" | translate }}</button>
*mifosxHasPermission="'WRITEOFF_LOAN'">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -1,9 +1,12 @@
<div class="container">
<div class="tab-container mat-typography">
<div fxLayout="row" fxLayoutAlign="start center">
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px" class="action-buttons">
<button mat-raised-button color="primary" [routerLink]="['../actions/Add Collateral']">
Add Collateral
</button>
<h3 fxFlex="90%">{{"labels.inputs.Loan Collateral Details" | translate}}</h3>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px" class="action-buttons">
<button mat-raised-button color="primary" [routerLink]="['../actions/Add Collateral']">
{{"labels.buttons.Add Collateral" | translate}}
</button>
</div>
</div>
<div fxLayout="row" fxLayoutGap="32px" *ngIf="loanCollaterals?.length > 0" class="performance-history-container">
@@ -11,13 +14,13 @@
<tbody>
<tr>
<td fxFlex="25%">
<b>Number of Collaterals :</b>
<b>{{"labels.inputs.Number of Collaterals" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{loanCollaterals?.length | formatNumber}}
</td>
<td fxFlex="25%">
<b>Total Amount :</b>
<b>{{"labels.inputs.Total Amount" | translate}} :</b>
</td>
<td fxFlex="25%" class="left">
{{totalAmount | formatNumber}}
@@ -30,27 +33,27 @@
<table mat-table *ngIf="loanCollaterals?.length > 0" [dataSource]="loanCollaterals">
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.ID" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.ID" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.id }} </td>
</ng-container>
<ng-container matColumnDef="currency">
<th mat-header-cell *matHeaderCellDef> Currency </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Currency" | translate}}</th>
<td mat-cell *matCellDef="let ele"> {{ ele.currency.code }} </td>
</ng-container>
<ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Description" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Description" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.description }} </td>
</ng-container>
<ng-container matColumnDef="total">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Value" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Value" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.total }} </td>
</ng-container>
<ng-container matColumnDef="totalCollateral">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Collateral Value" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Total Collateral Value" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.totalCollateral }} </td>
</ng-container>
@@ -1,8 +1,15 @@
table {
width: 100%;
margin: 3% 0%;
width: 100%;
margin-top: 3%;
.document-action-button {
min-width: 26px;
padding: 0 6px;
margin: 4px;
line-height: 25px;
}
}
.container {
padding-bottom: 2%;
.tab-container {
padding: 1%;
margin: 1%;
}
@@ -1,11 +1,11 @@
<div class="container">
<h3>{{"labels.heading.Loan Delinquency Tags" | translate }}</h3>
<h3>{{"labels.heading.Loan Delinquency Tags" | translate}}</h3>
<table mat-table [dataSource]="loanDelinquencyTags" *ngIf="loanDelinquencyTags.length>0">
<ng-container matColumnDef="classification">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Delinquency Classification" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Delinquency Classification" | translate}} </th>
<td mat-cell *matCellDef="let item"> {{ item.delinquencyRange.classification }}
<span *ngIf="item.delinquencyRange.maximumAgeDays">( {{ item.delinquencyRange.minimumAgeDays }} - {{ item.delinquencyRange.maximumAgeDays }} )</span>
<span *ngIf="!item.delinquencyRange.maximumAgeDays">( {{ item.delinquencyRange.minimumAgeDays }} )</span>
@@ -13,19 +13,19 @@
</ng-container>
<ng-container matColumnDef="addedOn">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Added On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Added On" | translate}} </th>
<td mat-cell *matCellDef="let item">
<span *ngIf="item.addedOnDate">
{{ item.addedOnDate | dateFormat }}
{{ item.addedOnDate | dateFormat }}
</span>
</td>
</ng-container>
<ng-container matColumnDef="liftedOn">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Lifted On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Lifted On" | translate}} </th>
<td mat-cell *matCellDef="let item">
<span *ngIf="item.liftedOnDate">
{{ item.liftedOnDate | dateFormat }}
{{ item.liftedOnDate | dateFormat }}
</span>
</td>
</ng-container>
@@ -1,32 +1,32 @@
<div class="container">
<div fxFlexFill>
<span fxFlex="40%">{{"labels.inputs.Maximum allowed outstanding balance" | translate }}:</span>
<span fxFlex="40%">{{"labels.inputs.Maximum allowed outstanding balance" | translate}}:</span>
<span fxFlex="60%">{{ loanDetails.maxOutstandingLoanBalance | formatNumber }}</span>
</div>
<h3>{{"labels.heading.Loan Tranche Details" | translate }}</h3>
<h3>{{"labels.heading.Loan Tranche Details" | translate}}</h3>
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="flex-end" fxLayoutGap="2%">
<button mat-raised-button color="primary" *ngIf="showAddTrancheButtons()"
(click)="addDisbursementDataEntry()">
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{"labels.buttons.Add" | translate }}
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{"labels.buttons.Add" | translate}}
</button>
<button mat-raised-button color="primary" *ngIf="!pristine"
(click)="editDisbursementData()">
{{"labels.buttons.Apply Changes" | translate }}
{{"labels.buttons.Apply Changes" | translate}}
</button>
</div>
<table mat-table [dataSource]="disbursementDataSource" *ngIf="disbursementDataSource.length > 0">
<ng-container matColumnDef="expected disbursement on">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Expected Disbursement On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Expected Disbursement On" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.expectedDisbursementDate | dateFormat}} </td>
</ng-container>
<ng-container matColumnDef="disbursed on">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Disbursed On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Disbursed On" | translate}} </th>
<td mat-cell *matCellDef="let ele">
<span *ngIf="ele.actualDisbursementDate">
{{ ele.actualDisbursementDate | dateFormat }}
@@ -35,23 +35,23 @@
</ng-container>
<ng-container matColumnDef="principal">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Principal" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Principal" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.principal }} </td>
</ng-container>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell *matCellDef="let ele; let rowIndex = index">
<span *ngIf="ele.actualDisbursementDate">
<i class="fa fa-check "></i>
</span>
<button type="button" mat-icon-button color="primary"
(click)="editDisbursementDataEntry(rowIndex)" matTooltip="{{ 'tooltips.Edit' | translate }}"
(click)="editDisbursementDataEntry(rowIndex)" matTooltip="{{ 'tooltips.Edit' | translate}}"
matTooltipPosition="left" *ngIf="!ele.actualDisbursementDate && showActionsTrancheButtons()">
<fa-icon icon="edit"></fa-icon>
</button>
<button type="button" mat-icon-button color="warn"
(click)="removeDisbursementDataEntry(rowIndex)" matTooltip="{{ 'tooltips.Delete' | translate }}"
(click)="removeDisbursementDataEntry(rowIndex)" matTooltip="{{ 'tooltips.Delete' | translate}}"
matTooltipPosition="left" *ngIf="!ele.actualDisbursementDate && showActionsTrancheButtons()">
<fa-icon icon="trash"></fa-icon>
</button>
@@ -64,17 +64,17 @@
<div *ngIf="loanDetails.emiAmountVariations.length > 0">
<h3>{{"labels.heading.Installment Amount Variations" | translate }}: </h3>
<h3>{{"labels.heading.Installment Amount Variations" | translate}}: </h3>
<table mat-table [dataSource]="loanDetails.emiAmountVariations">
<ng-container matColumnDef="emi amount variation from">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Applicable From Date" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Applicable From Date" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.termVariationApplicableFrom | dateFormat}} </td>
</ng-container>
<ng-container matColumnDef="fixed emi amount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Installment Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Installment Amount" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.termValue }} </td>
</ng-container>
@@ -6,8 +6,8 @@
<div class="profile-image-container">
<div>
<mifosx-svg-icon [iconClass]="" iconFile="account_placeholder"
iconName="LOAN_ACCOUNT" iconWidth="210" matTooltip="{{ 'tooltips.Loan Account' | translate }}">
<mifosx-svg-icon [iconClass]="" iconFile="account_placeholder" iconName="LOAN_ACCOUNT" iconWidth="210"
matTooltip="{{ 'tooltips.Loan Account' | translate}}">
</mifosx-svg-icon>
</div>
</div>
@@ -18,42 +18,50 @@
<div fxFlex="60%">
<h3>
<i class="fa fa-stop" matTooltip="{{ loanDetailsData.status.value }}"
<i class="fa fa-stop" matTooltip="{{'labels.status.' + loanDetailsData.status.value | translate}}"
[ngClass]="loanDetailsData.inArrears?'status-active-overdue':( iconLoanStatusColor() | statusLookup)"></i>
{{"labels.heading.Loan Product" | translate }}: {{loanDetailsData.loanProductName}} <mifosx-account-number accountNo="{{loanDetailsData.accountNo}}"></mifosx-account-number>
{{'labels.heading.Loan Product' | translate}}: {{loanDetailsData.loanProductName}}
<mifosx-account-number accountNo="{{loanDetailsData.accountNo}}"></mifosx-account-number>
</h3>
<span class="loans-overview">
{{entityType}} {{"labels.inputs.name" | translate }}: {{loanDetailsData.clientName ||
{{'labels.text.' + entityType | translate}} {{"labels.inputs.name" | translate}}: {{loanDetailsData.clientName ||
loanDetailsData.groupName}}<span class="m-l-10">({{loanDetailsData.clientAccountNo}})</span><br />
</span>
<div *ngIf="loanDisplayArrearsDelinquency != 1">
<span class="loans-overview" *ngIf="loanDetailsData.delinquencyRange">
{{"labels.inputs.Loan Account Classification" | translate }} : {{loanDetailsData?.delinquencyRange.classification}}<br />
{{"labels.inputs.Loan Account Classification" | translate}} :
{{loanDetailsData?.delinquencyRange.classification}}<br />
</span>
<span class="loans-overview"
*ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.pastDueDays > 0">
{{"labels.inputs.Past Due Days" | translate }} : {{loanDetailsData?.delinquent.pastDueDays | formatNumber }}<br />
{{"labels.inputs.Past Due Days" | translate}} : {{loanDetailsData?.delinquent.pastDueDays |
formatNumber }}<br />
</span>
<span class="loans-overview" *ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.delinquentDays > 0
&& loanDetailsData.delinquent.pastDueDays != loanDetailsData.delinquent.delinquentDays">
{{"labels.inputs.Delinquent Days" | translate }} : {{loanDetailsData?.delinquent.delinquentDays | formatNumber }}
{{"labels.inputs.Delinquent Days" | translate}} : {{loanDetailsData?.delinquent.delinquentDays |
formatNumber }}
</span>
</div>
</div>
<div *ngIf="loanDetailsData.summary" class="loans-overview mat-typography" fxFlex="40%">
<h3> {{"labels.heading.Loan Account OverView" | translate }} </h3>
<span>{{"labels.inputs.Current Balance" | translate }}: {{loanDetailsData.currency.displaySymbol}}
<h3> {{"labels.heading.Loan Account OverView" | translate}} </h3>
<span>{{"labels.inputs.Current Balance" | translate}}: {{loanDetailsData.currency.displaySymbol}}
{{loanDetailsData.summary.totalOutstanding | formatNumber}}</span><br>
<div *ngIf="loanDisplayArrearsDelinquency < 2">
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears By" | translate }}: {{loanDetailsData.summary.totalOverdue | currency:currencyCode:'symbol-narrow':'1.2-2' }}
<span *ngIf="!(loanDetailsData.summary.totalOverdue>=0)">{{"labels.inputs.Not Provided" | translate }}</span>
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears By" | translate}}:
{{loanDetailsData.summary.totalOverdue | currency:currencyCode:'symbol-narrow':'1.2-2' }}
<span *ngIf="!(loanDetailsData.summary.totalOverdue>=0)">{{"labels.inputs.Not Provided" | translate
}}</span>
</span><br>
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears Since" | translate }}: {{loanDetailsData.summary.overdueSinceDate |
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears Since" | translate}}:
{{loanDetailsData.summary.overdueSinceDate |
dateFormat}}
</span>
<span *ngIf="loanDetailsData.totalOverpaid && loanDetailsData.totalOverpaid > 0">
{{"labels.inputs.Overpaid By" | translate }}: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.totalOverpaid | formatNumber }}
{{"labels.inputs.Overpaid By" | translate}}: {{loanDetailsData.currency.displaySymbol}}
{{loanDetailsData.totalOverpaid | formatNumber }}
</span>
</div>
</div>
@@ -79,26 +87,26 @@
<mat-icon matListIcon>
<fa-icon icon="{{item.icon}}" size="sm"></fa-icon>
</mat-icon>
<span> {{item.name}} </span>
<span>{{'labels.menus.' + item.name | translate}}</span>
</button>
</ng-container>
<ng-container *ngIf="buttonConfig.optionsPayment.length" class="loan-span">
<button mat-menu-item [matMenuTriggerFor]="Payments">{{"labels.buttons.Payments" | translate }}</button>
<button mat-menu-item [matMenuTriggerFor]="Payments">{{"labels.menus.Payments" | translate}}</button>
<mat-menu #Payments="matMenu">
<span *ngFor="let item of buttonConfig.optionsPayment">
<button mat-menu-item *mifosxHasPermission="item.taskPermissionName"
(click)="loanAction(item.name)">{{item.name}}</button>
(click)="loanAction(item.name)">{{'labels.menus.' + item.name | translate}}</button>
</span>
</mat-menu>
</ng-container>
<ng-container *ngIf="buttonConfig.options.length" class="loan-span">
<button mat-menu-item [matMenuTriggerFor]="More">{{"labels.buttons.More" | translate }}</button>
<button mat-menu-item [matMenuTriggerFor]="More">{{"labels.menus.More" | translate}}</button>
<mat-menu #More="matMenu">
<span *ngFor="let item of buttonConfig.options">
<button mat-menu-item *mifosxHasPermission="item.taskPermissionName"
(click)="loanAction(item.name)">{{item.name}}</button>
(click)="loanAction(item.name)">{{'labels.menus.' + item.name | translate}}</button>
</span>
</mat-menu>
</ng-container>
@@ -112,88 +120,88 @@
<nav mat-tab-nav-bar class="navigation-tabs">
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
[active]="general.isActive">
{{"labels.inputs.General" | translate }}
{{"labels.inputs.General" | translate}}
</a>
<a mat-tab-link [routerLink]="['./accountdetail']" routerLinkActive #accountdetail="routerLinkActive"
[active]="accountdetail.isActive">
{{"labels.inputs.Account Details" | translate }}
{{"labels.inputs.Account Details" | translate}}
</a>
<ng-container *ngIf="loanDetailsData.originalSchedule">
<a mat-tab-link [routerLink]="['./original-schedule']" routerLinkActive #originalSchedule="routerLinkActive"
[active]="originalSchedule.isActive">
{{"labels.inputs.Original Schedule" | translate }}
{{"labels.inputs.Original Schedule" | translate}}
</a>
</ng-container>
<a mat-tab-link [routerLink]="['./repayment-schedule']" routerLinkActive #repaymentSchedule="routerLinkActive"
[active]="repaymentSchedule.isActive">
{{"labels.inputs.Repayment Schedule" | translate }}
{{"labels.inputs.Repayment Schedule" | translate}}
</a>
<ng-container *ngIf="loanDetailsData.transactions">
<a mat-tab-link [routerLink]="['./transactions']" routerLinkActive #transactions="routerLinkActive"
[active]="transactions.isActive">
{{"labels.inputs.Transactions" | translate }}
{{"labels.inputs.Transactions" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.status.active">
<a mat-tab-link [routerLink]="['./delinquencytags']" routerLinkActive #delinquencytags="routerLinkActive"
[active]="delinquencytags.isActive">
{{"labels.inputs.Delinquency Tags" | translate }}
{{"labels.inputs.Delinquency Tags" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.collateral">
<a mat-tab-link [routerLink]="['./loan-collateral']" routerLinkActive #loanCollateralDetails="routerLinkActive"
[active]="loanCollateralDetails.isActive">
{{"labels.inputs.Loan Collateral Details" | translate }}
{{"labels.inputs.Loan Collateral Details" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.multiDisburseLoan">
<a mat-tab-link [routerLink]="['./loan-tranche-details']" routerLinkActive
#loanTrancheDetails="routerLinkActive" [active]="loanTrancheDetails.isActive">
{{"labels.inputs.Loan Tranche Details" | translate }}
{{"labels.inputs.Loan Tranche Details" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.overdueCharges.length > 0">
<a mat-tab-link [routerLink]="['./overdue-charges']" routerLinkActive #overduecharges="routerLinkActive"
[active]="overduecharges.isActive">
{{"labels.inputs.Overdue Charges" | translate }}
{{"labels.inputs.Overdue Charges" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.isLoanProductLinkedToFloatingRate">
<a mat-tab-link [routerLink]="['./floating-interest-rates']" routerLinkActive
#floatingInterestRates="routerLinkActive" [active]="floatingInterestRates.isActive">
{{"labels.inputs.Floating Interest Rates" | translate }}
{{"labels.inputs.Floating Interest Rates" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.charges">
<a mat-tab-link [routerLink]="['./charges']" routerLinkActive #charges="routerLinkActive"
[active]="charges.isActive">
{{"labels.inputs.Charges" | translate }}
{{"labels.inputs.Charges" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.status.active">
<a mat-tab-link [routerLink]="['./loan-reschedules']" routerLinkActive #loanReschedules="routerLinkActive"
[active]="loanReschedules.isActive">
{{"labels.inputs.Loan Reschedules" | translate }}
{{"labels.inputs.Loan Reschedules" | translate}}
</a>
</ng-container>
<a mat-tab-link [routerLink]="['./loan-documents']" routerLinkActive #loanDocuments="routerLinkActive"
[active]="loanDocuments.isActive">
{{"labels.inputs.Loan Documents" | translate }}
{{"labels.inputs.Loan Documents" | translate}}
</a>
<a mat-tab-link *mifosxHasPermission="'READ_LOANNOTE'" [routerLink]="['./notes']" routerLinkActive
#notes="routerLinkActive" [active]="notes.isActive">
{{"labels.inputs.Notes" | translate }}
{{"labels.inputs.Notes" | translate}}
</a>
<ng-container *ngIf="loanDetailsData.clientId">
<a mat-tab-link [routerLink]="['./standing-instruction']" routerLinkActive
#standingInstruction="routerLinkActive" [active]="standingInstruction.isActive">
{{"labels.inputs.Standing Instruction" | translate }}
{{"labels.inputs.Standing Instruction" | translate}}
</a>
</ng-container>
<ng-container *ngIf="loanDetailsData.status.active">
<a mat-tab-link [routerLink]="['./external-asset-owner']" routerLinkActive #externalAssetOwner="routerLinkActive"
[active]="externalAssetOwner.isActive">
{{"labels.inputs.External Asset Owner" | translate }}
<a mat-tab-link [routerLink]="['./external-asset-owner']" routerLinkActive
#externalAssetOwner="routerLinkActive" [active]="externalAssetOwner.isActive">
{{"labels.inputs.External Asset Owner" | translate}}
</a>
</ng-container>
<ng-container *ngFor="let loanDatatable of loanDatatables">
@@ -3,43 +3,43 @@
<table mat-table [dataSource]="originalScheduleDetails.periods" matSort>
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Date" | translate }} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.dueDate | dateFormat}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{"labels.inputs.Total" | translate }}</b> </td>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Date" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.dueDate | dateFormat}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{"labels.inputs.Total" | translate}}</b> </td>
</ng-container>
<ng-container matColumnDef="principalDue">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Principal Due" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Principal Due" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.principalDue | formatNumber }} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{ originalScheduleDetails.totalPrincipalExpected | formatNumber }} </b> </td>
</ng-container>
<ng-container matColumnDef="balanceOfLoan">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Balance Of Loan" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Balance Of Loan" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.principalLoanBalanceOutstanding | formatNumber }} </td>
<td mat-footer-cell *matFooterCellDef> &nbsp; </td>
</ng-container>
<ng-container matColumnDef="interest">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Interest" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Interest" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.interestOriginalDue | formatNumber}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{ originalScheduleDetails.totalInterestCharged | formatNumber }} </b> </td>
</ng-container>
<ng-container matColumnDef="fees">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Fees" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Fees" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.feeChargesDue | formatNumber}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{ originalScheduleDetails.totalFeeChargesCharged | formatNumber }} </b> </td>
</ng-container>
<ng-container matColumnDef="penalties">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Penalties" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Penalties" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.penaltyChargesDue | formatNumber}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{ originalScheduleDetails.totalPenaltyChargesCharged | formatNumber }} </b> </td>
</ng-container>
<ng-container matColumnDef="outstanding">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Outstanding" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Outstanding" | translate}} </th>
<td mat-cell *matCellDef="let ele"> {{ ele.totalOutstandingForPeriod | formatNumber}} </td>
<td mat-footer-cell *matFooterCellDef> <b> {{ originalScheduleDetails.totalRepaymentExpected | formatNumber }} </b> </td>
</ng-container>
@@ -51,15 +51,15 @@
<!-- Header row second group -->
<ng-container matColumnDef="header-amount">
<th mat-header-cell *matHeaderCellDef [attr.colspan]="2"> {{"labels.inputs.Loan Amount and Balance" | translate }} </th>
<th mat-header-cell *matHeaderCellDef [attr.colspan]="2"> {{"labels.inputs.Loan Amount and Balance" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-total-cost">
<th mat-header-cell *matHeaderCellDef [attr.colspan]="3"> {{"labels.inputs.Total Cost of Loan" | translate }} </th>
<th mat-header-cell *matHeaderCellDef [attr.colspan]="3"> {{"labels.inputs.Total Cost of Loan" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-installment-totals">
<th mat-header-cell *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Installment Totals" | translate }} </th>
<th mat-header-cell *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Installment Totals" | translate}} </th>
</ng-container>
<tr mat-header-row *matHeaderRowDef="['header', 'header-amount', 'header-total-cost', 'header-installment-totals']"></tr>
@@ -3,22 +3,22 @@
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Name" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"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 mat-sort-header> {{"labels.inputs.Type" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"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 mat-sort-header> {{"labels.inputs.Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"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 mat-sort-header> {{"labels.inputs.Collected On" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Collected On" | translate}} </th>
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
</ng-container>
@@ -9,20 +9,20 @@
</ng-container>
<ng-container matColumnDef="days">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Days" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Days" | translate}} </th>
<td mat-cell class="center" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.daysInPeriod }} </td>
<td mat-footer-cell class="center" *matFooterCellDef> <b> Total</b> </td>
</ng-container>
<ng-container matColumnDef="date">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Date" | translate }} </th>
<td mat-cell class="m-r-5" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.dueDate | dateFormat}} </td>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Date" | translate}} </th>
<td mat-cell class="m-r-5" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.dueDate | dateFormat}} </td>
<td mat-footer-cell *matFooterCellDef> </td>
</ng-container>
<ng-container matColumnDef="paiddate">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Paid Date" | translate }} </th>
<td mat-cell class="center" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.obligationsMetOnDate | dateFormat}} </td>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Paid Date" | translate}} </th>
<td mat-cell class="center" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.obligationsMetOnDate | dateFormat}} </td>
<td mat-footer-cell *matFooterCellDef> </td>
</ng-container>
@@ -35,62 +35,62 @@
</ng-container>
<ng-container matColumnDef="balanceOfLoan">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Balance Of Loan" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Balance Of Loan" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.principalLoanBalanceOutstanding | formatNumber }} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> &nbsp; </td>
</ng-container>
<ng-container matColumnDef="principalDue">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Principal Due" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Principal Due" | translate}} </th>
<td mat-cell class="check r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.principalDue | formatNumber }} </td>
<td mat-footer-cell class="check r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalPrincipalExpected | currency:currencyCode:'symbol-narrow':'1.2-2' }}</b> </td>
</ng-container>
<ng-container matColumnDef="interest">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Interest" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Interest" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.interestOriginalDue | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalInterestCharged | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="fees">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Fees" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Fees" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.feeChargesDue | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalFeeChargesCharged | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="penalties">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Penalties" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Penalties" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.penaltyChargesDue | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalPenaltyChargesCharged | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="due">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Due" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Due" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.totalDueForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalRepaymentExpected | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="paid">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Paid" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Paid" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.totalPaidForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalRepayment | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="inadvance">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.In advance" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.In advance" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.totalPaidInAdvanceForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalPaidInAdvance | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="late">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Late" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Late" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.totalPaidLateForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalPaidLate | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container *ngIf="isWaived">
<ng-container matColumnDef="waived">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Waived" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Waived" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele" [ngClass]="installmentStyle(ele)"> {{ ele.totalWaivedForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalWaived | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
@@ -105,7 +105,7 @@
</ng-container>
<ng-container matColumnDef="outstanding">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Outstanding" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Outstanding" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.totalOutstandingForPeriod | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalOutstanding | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
@@ -115,15 +115,15 @@
</ng-container>
<ng-container matColumnDef="header-amount">
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="2"> {{"labels.inputs.Loan Amount and Balance" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="2"> {{"labels.inputs.Loan Amount and Balance" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-total-cost">
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="3"> {{"labels.inputs.Total Cost of Loan" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="3"> {{"labels.inputs.Total Cost of Loan" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-installment-totals">
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="6"> {{"labels.inputs.Installment Totals" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef [attr.colspan]="6"> {{"labels.inputs.Installment Totals" | translate}} </th>
</ng-container>
<tr mat-header-row *matHeaderRowDef="['header', 'header-amount', 'header-total-cost', 'header-installment-totals']"></tr>
@@ -145,37 +145,37 @@
</ng-container>
<ng-container matColumnDef="date">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Date" | translate }} </th>
<td mat-cell class="m-r-10" *matCellDef="let ele"> {{ ele.dueDate | dateFormat}} </td>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Date" | translate}} </th>
<td mat-cell class="m-r-10" *matCellDef="let ele"> {{ ele.dueDate | dateFormat}} </td>
<td mat-footer-cell *matFooterCellDef> </td>
</ng-container>
<ng-container matColumnDef="balanceOfLoan">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Balance Of Loan" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Balance Of Loan" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.principalLoanBalanceOutstanding | formatNumber }} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> &nbsp; </td>
</ng-container>
<ng-container matColumnDef="principalDue">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Principal Due" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Principal Due" | translate}} </th>
<td mat-cell class="check r-amount" *matCellDef="let ele"> {{ ele.principalDue | formatNumber }} </td>
<td mat-footer-cell class="check r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalPrincipalExpected | currency:currencyCode:'symbol-narrow':'1.2-2' }}</b> </td>
</ng-container>
<ng-container matColumnDef="interest">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Interest" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Interest" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.interestOriginalDue | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalInterestCharged | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="fees">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Fees" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Fees" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele"> {{ ele.feeChargesDue | formatNumber}} </td>
<td mat-footer-cell class="r-amount" *matFooterCellDef> <b> {{ repaymentScheduleDetails.totalFeeChargesCharged | currency:currencyCode:'symbol-narrow':'1.2-2' }} </b> </td>
</ng-container>
<ng-container matColumnDef="due">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Installment Amount" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Installment Amount" | translate}} </th>
<td mat-cell class="r-amount" *matCellDef="let ele">
<span *ngIf="!ele.changed">
{{ ele.totalDueForPeriod | formatNumber}}
@@ -188,9 +188,9 @@
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell class="center" *matCellDef="let ele">
<button *ngIf="ele.period" type="button" color="primary" mat-icon-button matTooltip="{{ 'tooltips.Edit' | translate }}" matTooltipPosition="above" (click)="editPeriod(ele)">
<button *ngIf="ele.period" type="button" color="primary" mat-icon-button matTooltip="{{ 'tooltips.Edit' | translate}}" matTooltipPosition="above" (click)="editPeriod(ele)">
<fa-icon icon="edit" size="lg"></fa-icon>
</button>
</td>
@@ -2,7 +2,7 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px" class="action-buttons">
<button mat-raised-button color="primary" [routerLink]="['../actions/Reschedule']">
{{"labels.buttons.Reschedule" | translate }}
{{"labels.buttons.Reschedule" | translate}}
</button>
</div>
@@ -15,40 +15,40 @@
<!-- Status Column -->
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Status" | translate}} </th>
<td mat-cell *matCellDef="let item">
<div [ngClass]="item.statusEnum.code | statusLookup">
<fa-icon icon="stop"></fa-icon>
<span class="m-l-10 status">
{{ item.statusEnum.value | translate }}
{{ item.statusEnum.value | translate}}
</span>
</div>
</td>
</ng-container>
<ng-container matColumnDef="rescheduleFromDate">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Date" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Date" | translate}} </th>
<td mat-cell *matCellDef="let item">
{{ item.rescheduleFromDate | dateFormat }}
</td>
</ng-container>
<ng-container matColumnDef="reason">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Reason" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Reason" | translate}} </th>
<td mat-cell *matCellDef="let item">
{{ item.rescheduleReasonCodeValue.name }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell *matCellDef="let item">
<span *ngIf="item.statusEnum.pendingApproval">
<button class="action-button" mat-raised-button color="warn" matTooltip="{{ 'tooltips.Reject Reschedule' | translate }}" matTooltipPosition="left"
<button class="action-button" mat-raised-button color="warn" matTooltip="{{ 'tooltips.Reject Reschedule' | translate}}" matTooltipPosition="left"
(click)="manageRequest(item, 'Reject')">
<fa-icon icon="trash"></fa-icon>
</button>
<button class="action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Approve Reschedule' | translate }}" matTooltipPosition="right"
<button class="action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Approve Reschedule' | translate}}" matTooltipPosition="right"
(click)="manageRequest(item, 'Approve')">
<fa-icon icon="check"></fa-icon>
</button>
@@ -1,7 +1,7 @@
<div class="tab-container mat-typography">
<div class="m-b-10">
<h3>{{"labels.heading.All Standing Instructions" | translate }}</h3>
<h3>{{"labels.heading.All Standing Instructions" | translate}}</h3>
</div>
<div class="mat-elevation-z1 m-b-25">
@@ -9,58 +9,58 @@
<table mat-table #instructionsTable [dataSource]="dataSource">
<ng-container matColumnDef="client">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Client" | translate}} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.fromClient.displayName}}-{{instruction.fromClient.id}}
</td>
</ng-container>
<ng-container matColumnDef="fromAccount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Account" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.From Account" | translate}} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.fromAccount.accountNo}}
({{instruction.fromAccountType.value}})</td>
</ng-container>
<ng-container matColumnDef="beneficiary">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Beneficiary" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Beneficiary" | translate}} </th>
<td mat-cell *matCellDef="let instruction">
<span *ngIf="instruction.fromClient.id != instruction.toClient.id"> {{instruction.toClient.displayName}} </span>
<span *ngIf="instruction.fromClient.id == instruction.toClient.id">{{"labels.inputs.Own Account" | translate }}</span>
<span *ngIf="instruction.fromClient.id == instruction.toClient.id">{{"labels.inputs.Own Account" | translate}}</span>
</td>
</ng-container>
<ng-container matColumnDef="toAccount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.To Account" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.To Account" | translate}} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.toAccount.accountNo}}
({{instruction.toAccountType.value}})</td>
</ng-container>
<ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate}} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.instructionType.value}}/{{instruction.amount}}</td>
</ng-container>
<ng-container matColumnDef="validity">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Validity" | translate }} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.validFrom | dateFormat}} to {{instruction.validTill | dateFormat}}
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Validity" | translate}} </th>
<td mat-cell *matCellDef="let instruction">{{instruction.validFrom | dateFormat}} to {{instruction.validTill | dateFormat}}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell *matCellDef="let instruction">
<span *ngIf="instruction.status.value!=='Deleted'">
<button class="account-action-button" mat-raised-button color="primary"
matTooltip="{{ 'tooltips.Edit Standing Instruction' | translate }}" *mifosxHasPermission="'UPDATE_STANDINGINSTRUCTION'">
matTooltip="{{ 'tooltips.Edit Standing Instruction' | translate}}" *mifosxHasPermission="'UPDATE_STANDINGINSTRUCTION'">
<i class="fa fa-edit"></i>
</button>
</span>
<span *ngIf="instruction.status.value!=='Deleted'">
<button class="account-action-button" mat-raised-button color="warn"
matTooltip="{{ 'tooltips.Delete Standing Instruction' | translate }}" *mifosxHasPermission="'DELETE_STANDINGINSTRUCTION'" (click)="deleteStandingInstruction(instruction.id)">
matTooltip="{{ 'tooltips.Delete Standing Instruction' | translate}}" *mifosxHasPermission="'DELETE_STANDINGINSTRUCTION'" (click)="deleteStandingInstruction(instruction.id)">
<i class="fa fa-times"></i>
</button>
</span>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Standing Instruction' | translate }}"
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Standing Instruction' | translate}}"
*mifosxHasPermission="'READ_STANDINGINSTRUCTION'">
<i class="fa fa-eye"></i>
</button>
@@ -2,55 +2,55 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px" class="transaction-buttons" *ngIf="checkStatus()">
<mat-checkbox [formControl]="hideAccrualsParam" (click)="hideAccruals()" class="accruals">
{{"labels.inputs.Hide Accruals" | translate }}</mat-checkbox>
{{"labels.inputs.Hide Accruals" | translate}}</mat-checkbox>
<button mat-raised-button color="primary" class="transaction-button" [routerLink]="['export']">
{{"labels.buttons.Export" | translate }}
{{"labels.buttons.Export" | translate}}
</button>
<button mat-raised-button color="primary" class="transaction-button">
{{"labels.buttons.View Journal Entries" | translate }}
{{"labels.buttons.View Journal Entries" | translate}}
</button>
</div>
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Id" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Id" | translate}} </th>
<td mat-cell *matCellDef="let transaction" [ngClass]="loanTransactionColor(transaction)"> {{ transaction.id }}
</td>
</ng-container>
<ng-container matColumnDef="office">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Office" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Office" | translate}} </th>
<td mat-cell *matCellDef="let transaction" [ngClass]="loanTransactionColor(transaction)"> {{
transaction.officeName }} </td>
</ng-container>
<ng-container matColumnDef="externalId">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.External Id" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.External Id" | translate}} </th>
<td mat-cell *matCellDef="let transaction" [ngClass]="loanTransactionColor(transaction)">
<mifosx-external-identifier externalId="{{transaction.externalId}}"></mifosx-external-identifier>
</td>
</ng-container>
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Transaction Date" | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Transaction Date" | translate}} </th>
<td mat-cell *matCellDef="let transaction" [ngClass]="loanTransactionColor(transaction)"> {{ transaction.date | dateFormat }} </td>
</ng-container>
<ng-container matColumnDef="transactionType">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transaction Type" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transaction Type" | translate}} </th>
<td mat-cell *matCellDef="let transaction" [ngClass]="loanTransactionColor(transaction)"> {{
transaction.type.value }} </td>
</ng-container>
<ng-container matColumnDef="amount">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Amount" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Amount" | translate}} </th>
<td mat-cell class="r-amount td-min-space" *matCellDef="let transaction"
[ngClass]="loanTransactionColor(transaction)"> {{ transaction.amount | formatNumber }} </td>
</ng-container>
<ng-container matColumnDef="principal">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Breakdown" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Breakdown" | translate}} </th>
<td mat-cell class="r-amount td-min-space" *matCellDef="let transaction"
[ngClass]="loanTransactionColor(transaction)"> {{ transaction.principalPortion | formatNumber }} </td>
</ng-container>
@@ -74,23 +74,23 @@
</ng-container>
<ng-container matColumnDef="loanBalance">
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Loan Balance" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef> {{"labels.inputs.Loan Balance" | translate}} </th>
<td mat-cell class="r-amount td-min-space" *matCellDef="let transaction"
[ngClass]="loanTransactionColor(transaction)"> {{ transaction.outstandingLoanBalance | formatNumber }} </td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<th mat-header-cell class="center" *matHeaderCellDef> {{"labels.inputs.Actions" | translate}} </th>
<td mat-cell *matCellDef="let transaction" class="center td-min-space">
<button class="account-action-button" *ngIf="allowUndoTransaction(transaction)" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Undo Transaction' | translate }}"
<button class="account-action-button" *ngIf="allowUndoTransaction(transaction)" mat-raised-button color="primary" matTooltip="{{ 'tooltips.Undo Transaction' | translate}}"
matTooltipPosition="left" (click)="undoTransaction(transaction, $event)">
<i class="fa fa-undo"></i>
</button>
<button class="account-action-button" *ngIf="!transaction.manuallyReversed" mat-raised-button color="primary"
(click)="routeEdit($event)" [routerLink]="[transaction.id, 'reciept']" matTooltip="{{ 'tooltips.View Receipts' | translate }}">
(click)="routeEdit($event)" [routerLink]="[transaction.id, 'reciept']" matTooltip="{{ 'tooltips.View Receipts' | translate}}">
<i class="fa fa-file-text"></i>
</button>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Journal Entries' | translate }}"
<button class="account-action-button" mat-raised-button color="primary" matTooltip="{{ 'tooltips.View Journal Entries' | translate}}"
matTooltipPosition="left" (click)="routeEdit($event)"
[routerLink]="['/','journal-entry', 'view', 'L'+transaction.id ]">
<i class="fa fa-arrow-circle-right"></i>
@@ -104,19 +104,19 @@
</ng-container>
<ng-container matColumnDef="header-principal">
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Principal" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Principal" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-interest">
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Interest" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Interest" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-fees">
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Fees" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Fees" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-penalties">
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Penalties" | translate }} </th>
<th mat-header-cell class="r-amount" *matHeaderCellDef [attr.colspan]="1"> {{"labels.inputs.Penalties" | translate}} </th>
</ng-container>
<ng-container matColumnDef="header-action">
@@ -7,31 +7,31 @@
<mat-card-content fxLayout="column">
<mat-form-field (click)="dueDatePicker.open()">
<mat-label>{{"labels.inputs.Transaction Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="dueDatePicker"
formControlName="transactionDate" required>
<mat-datepicker-toggle matSuffix [for]="dueDatePicker"></mat-datepicker-toggle>
<mat-datepicker #dueDatePicker></mat-datepicker>
<mat-error *ngIf="editTransactionForm.controls.transactionDate.hasError('required')">
{{"labels.inputs.Transaction Date" | translate }} {{ "labels.commons.is" | translate }} <strong> {{ "labels.commons.required" | translate }} </strong>
{{"labels.inputs.Transaction Date" | translate}} {{"labels.commons.is" | translate}} <strong> {{"labels.commons.required" | translate}} </strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input type="number" formControlName="transactionAmount" required matInput />
<mat-error *ngIf="editTransactionForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" | translate }} <strong> {{ "labels.commons.required" | translate }} </strong>
{{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong> {{"labels.commons.required" | translate}} </strong>
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.External Id" | translate }}</mat-label>
<mat-label>{{"labels.inputs.External Id" | translate}}</mat-label>
<input matInput formControlName="externalId">
</mat-form-field>
<mat-form-field>
<mat-label>{{"labels.inputs.Payment Type" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Payment Type" | translate}}</mat-label>
<mat-select formControlName="paymentTypeId">
<mat-option *ngFor="let paymentType of paymentTypeOptions" [value]="paymentType.id">
{{ paymentType.name }}
@@ -43,40 +43,40 @@
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<mat-slide-toggle>
<div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate }}</span>
<span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</div>
</mat-slide-toggle>
</span>
</div>
<mat-form-field *ngIf="editTransactionForm.controls['accountNumber']">
<mat-label>{{"labels.inputs.Account Number" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Account Number" | translate}}</mat-label>
<input type="number" formControlName="accountNumber" matInput />
</mat-form-field>
<mat-form-field *ngIf="editTransactionForm.controls['checkNumber']">
<mat-label>{{"labels.inputs.Cheque" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Cheque" | translate}}</mat-label>
<input type="number" formControlName="checkNumber" matInput />
</mat-form-field>
<mat-form-field *ngIf="editTransactionForm.controls['routingCode']">
<mat-label>{{"labels.inputs.Routing Code" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Routing Code" | translate}}</mat-label>
<input formControlName="routingCode" matInput />
</mat-form-field>
<mat-form-field *ngIf="editTransactionForm.controls['receiptNumber']">
<mat-label>{{"labels.inputs.Receipt Number" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Receipt Number" | translate}}</mat-label>
<input formControlName="receiptNumber" matInput />
</mat-form-field>
<mat-form-field *ngIf="editTransactionForm.controls['bankNumber']">
<mat-label>{{"labels.inputs.Bank" | translate }}</mat-label>
<mat-label>{{"labels.inputs.Bank" | translate}}</mat-label>
<input formControlName="bankNumber" matInput />
</mat-form-field>
<mat-card-actions fxLayoutGap="5px" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center">
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate }}</button>
<button mat-raised-button color="primary" [disabled]="!editTransactionForm.valid">{{"labels.buttons.Submit" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!editTransactionForm.valid">{{"labels.buttons.Submit" | translate}}</button>
</mat-card-actions>
</mat-card-content>
@@ -3,31 +3,31 @@
<div fxLayout="row" fxLayoutGap="3%" fxLayoutAlign="center">
<mat-form-field fxFlex="30%" (click)="fromDatePicker.open()">
<mat-label>{{"labels.inputs.From Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.From Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="fromDatePicker" required formControlName="fromDate">
<mat-datepicker-toggle matSuffix [for]="fromDatePicker"></mat-datepicker-toggle>
<mat-datepicker #fromDatePicker></mat-datepicker>
<mat-error>
{{"labels.inputs.From date" | translate }} {{ "labels.commons.is" | translate }} <strong> {{ "labels.commons.required" | translate }} </strong>
{{"labels.inputs.From date" | translate}} {{"labels.commons.is" | translate}} <strong> {{"labels.commons.required" | translate}} </strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="30%" (click)="toDatePicker.open()">
<mat-label>{{"labels.inputs.To Date" | translate }}</mat-label>
<mat-label>{{"labels.inputs.To Date" | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="toDatePicker" required formControlName="toDate">
<mat-datepicker-toggle matSuffix [for]="toDatePicker"></mat-datepicker-toggle>
<mat-datepicker #toDatePicker></mat-datepicker>
<mat-error>
{{"labels.inputs.To date" | translate }} {{ "labels.commons.is" | translate }} <strong> {{ "labels.commons.required" | translate }} </strong>
{{"labels.inputs.To date" | translate}} {{"labels.commons.is" | translate}} <strong> {{"labels.commons.required" | translate}} </strong>
</mat-error>
</mat-form-field>
</div>
<div class="generate-button" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5%">
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!transactionsReportForm.valid">
<fa-icon icon="cogs" class="m-r-10"></fa-icon>{{"labels.buttons.Generate Report" | translate }} &nbsp;</button>
<fa-icon icon="cogs" class="m-r-10"></fa-icon>{{"labels.buttons.Generate Report" | translate}} &nbsp;</button>
</div>
</form>
@@ -2,7 +2,7 @@
<div class="back-button">
<button type="button" color="primary" mat-raised-button [routerLink]="['../../../general']">
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>{{"labels.buttons.Back" | translate }}</button>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>{{"labels.buttons.Back" | translate}}</button>
</div>
<iframe [src]="pentahoUrl" frameborder="0" width=100% height="600px;"></iframe>
@@ -2,16 +2,16 @@
*ngIf="!(transactionData.type.contra)">
<span *mifosxHasPermission="'ADJUST_LOAN'">
<button mat-raised-button color="primary" [routerLink]="'edit'" [disabled]="!allowEdition">
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'Edit' | translate }}
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'Edit' | translate}}
</button>
<button mat-raised-button color="warn" (click)="undoTransaction()" [disabled]="!allowUndo">
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'Undo' | translate }}
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'Undo' | translate}}
</button>
</span>
<span *mifosxHasPermission="'CHARGEBACK_LOAN'">
<button mat-raised-button color="warn" [disabled]="!allowChargeback" (click)="chargebackTransaction()">
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'Chargeback' | translate }}
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'Chargeback' | translate}}
</button>
</span>
</div>
@@ -27,7 +27,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Transaction Id' | translate }}
{{ 'Transaction Id' | translate}}
</div>
<div fxFlex="50%">
@@ -35,7 +35,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="transactionData.toLoanTransactionRelation">
{{ 'Repayment Transaction' | translate }}
{{ 'Repayment Transaction' | translate}}
</div>
<div fxFlex="50%" *ngIf="transactionData.toLoanTransactionRelation">
@@ -45,7 +45,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Type' | translate }}
{{ 'Type' | translate}}
</div>
<div fxFlex="50%">
@@ -53,7 +53,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Transaction Date' | translate }}
{{ 'Transaction Date' | translate}}
</div>
<div fxFlex="50%">
@@ -61,7 +61,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Currency' | translate }}
{{ 'Currency' | translate}}
</div>
<div fxFlex="50%">
@@ -69,7 +69,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'Amount' | translate }}
{{ 'Amount' | translate}}
</div>
<div fxFlex="50%">
@@ -77,7 +77,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="transactionData.externalId">
{{ 'External Id' | translate }}
{{ 'External Id' | translate}}
</div>
<div fxFlex="50%" *ngIf="transactionData.externalId">
@@ -87,19 +87,19 @@
<mat-divider *ngIf="existTransactionRelations" [inset]="true"></mat-divider>
<div fxFlex="100%" class="mat-body-strong" *ngIf="existTransactionRelations">
{{ 'Linked Transactions' | translate }}
{{ 'Linked Transactions' | translate}}
<br>
<table mat-table [dataSource]="transactionRelations">
<ng-container matColumnDef="relationType">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Relation Type" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Relation Type" | translate}} </th>
<td mat-cell *matCellDef="let transactionRel" [matTooltip]="transactionRel.paymentType">
{{ transactionRel.relationType | translate }}
{{ transactionRel.relationType | translate}}
</td>
</ng-container>
<ng-container matColumnDef="toTransaction">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transaction" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Transaction" | translate}} </th>
<td mat-cell *matCellDef="let transactionRel">
<a [href]="loanTransactionRelatedLink(transactionRel.toLoanTransaction)">
{{ transactionRel.toLoanTransaction }}
@@ -108,7 +108,7 @@
</ng-container>
<ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Amount" | translate}} </th>
<td mat-cell *matCellDef="let transactionRel">
{{ transactionRel.amount | currency }} {{ transactionData.currency.code }}
</td>
@@ -124,7 +124,7 @@
</div>
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{ 'Back' | translate }}</button>
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{ 'Back' | translate}}</button>
</div>
</mat-card-content>
@@ -2,26 +2,26 @@
fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<button mat-raised-button color="primary" *mifosxHasPermission="'WAIVE_SAVINGSACCOUNTCHARGE'" (click)="editCharge()">
<fa-icon icon="flag" class="m-r-10"></fa-icon>
{{"labels.buttons.Edit" | translate }}
{{"labels.buttons.Edit" | translate}}
</button>
<span *ngIf="allowPayCharge">
<button mat-raised-button color="accent" *mifosxHasPermission="'PAY_SAVINGSACCOUNTCHARGE'" (click)="payCharge()">
<fa-icon icon="dollar-sign" class="m-r-10"></fa-icon>
{{"labels.buttons.Pay" | translate }}
{{"labels.buttons.Pay" | translate}}
</button>
</span>
<span *ngIf="allowWaive">
<button mat-raised-button color="primary" *mifosxHasPermission="'WAIVE_SAVINGSACCOUNTCHARGE'"
(click)="waiveCharge()">
<fa-icon icon="flag" class="m-r-10"></fa-icon>
{{"labels.buttons.Waive" | translate }}
{{"labels.buttons.Waive" | translate}}
</button>
</span>
<span>
<button mat-raised-button color="accent" *mifosxHasPermission="'ADJUSTMENT_LOANCHARGE'"
(click)="adjustmentCharge()">
<fa-icon icon="pen" class="m-r-10"></fa-icon>
{{"labels.buttons.Adjustment" | translate }}
{{"labels.buttons.Adjustment" | translate}}
</button>
</span>
</div>
@@ -30,11 +30,11 @@
fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<button mat-raised-button color="primary" *mifosxHasPermission="'UPDATE_SAVINGSACCOUNTCHARGE'" (click)="editCharge()">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{"labels.buttons.Edit" | translate }}
{{"labels.buttons.Edit" | translate}}
</button>
<button mat-raised-button color="warn" *mifosxHasPermission="'DELETE_SAVINGSACCOUNTCHARGE'" (click)="deleteCharge()">
<fa-icon icon="trash" class="m-r-10"></fa-icon>
{{"labels.buttons.Delete" | translate }}
{{"labels.buttons.Delete" | translate}}
</button>
</div>
@@ -49,7 +49,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.name" | translate }}
{{"labels.inputs.name" | translate}}
</div>
<div fxFlex="50%">
@@ -57,7 +57,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Charge Type" | translate }}
{{"labels.inputs.Charge Type" | translate}}
</div>
<div fxFlex="50%">
@@ -65,7 +65,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Currency" | translate }}
{{"labels.inputs.Currency" | translate}}
</div>
<div fxFlex="50%">
@@ -73,7 +73,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Payment due at" | translate }}
{{"labels.inputs.Payment due at" | translate}}
</div>
<div fxFlex="50%">
@@ -81,7 +81,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Payment due as of" | translate }}
{{"labels.inputs.Payment due as of" | translate}}
</div>
<div fxFlex="50%">
@@ -89,7 +89,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Calculation Type" | translate }}
{{"labels.inputs.Calculation Type" | translate}}
</div>
<div fxFlex="50%">
@@ -97,7 +97,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Due" | translate }}
{{"labels.inputs.Due" | translate}}
</div>
<div fxFlex="50%">
@@ -105,7 +105,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Paid" | translate }}
{{"labels.inputs.Paid" | translate}}
</div>
<div fxFlex="50%">
@@ -113,7 +113,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Waived" | translate }}
{{"labels.inputs.Waived" | translate}}
</div>
<div fxFlex="50%">
@@ -121,7 +121,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Outstanding" | translate }}
{{"labels.inputs.Outstanding" | translate}}
</div>
<div fxFlex="50%">
@@ -129,7 +129,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{"labels.inputs.Submitted On Date" | translate }}
{{"labels.inputs.Submitted On Date" | translate}}
</div>
<div fxFlex="50%">
@@ -139,7 +139,7 @@
</div>
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{"labels.buttons.Back" | translate }}</button>
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{"labels.buttons.Back" | translate}}</button>
</div>
</mat-card-content>
+8 -1
View File
@@ -78,6 +78,7 @@ import { ChargeOffComponent } from './loans-view/loan-account-actions/charge-off
import { AssetTransferLoanComponent } from './loans-view/loan-account-actions/asset-transfer-loan/asset-transfer-loan.component';
import { ExternalAssetOwnerTabComponent } from './loans-view/external-asset-owner-tab/external-asset-owner-tab.component';
import { ExternalAssetTransferComponent } from './loans-view/external-asset-owner-tab/external-asset-transfer/external-asset-transfer.component';
import { TranslateModule } from '@ngx-translate/core';
/**
* Loans Module
@@ -85,7 +86,13 @@ import { ExternalAssetTransferComponent } from './loans-view/external-asset-owne
* All components related to loan functions should be declared here.
*/
@NgModule({
imports: [SharedModule, LoansRoutingModule, DirectivesModule, PipesModule],
imports: [
SharedModule,
DirectivesModule,
LoansRoutingModule,
PipesModule,
TranslateModule
],
declarations: [
AddLoanChargeComponent,
LoansViewComponent,