Charges with translations
This commit is contained in:
committed by
Jose Alberto Hernandez
parent
8ac82cc6a6
commit
b380f7f630
@@ -27,17 +27,17 @@
|
||||
|
||||
<ng-container matColumnDef="chargeAppliesTo">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Applies To" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeAppliesTo.value }} </td>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeAppliesTo.value | translateCatalog }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Time" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value }} </td>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value | translateCatalog }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Calculation" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value }} </td>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value | translateCatalog }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<mat-select required formControlName="chargeAppliesTo">
|
||||
<mat-option *ngFor="let chargeAppliesTo of chargesTemplateData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id">
|
||||
{{ chargeAppliesTo.value }}
|
||||
{{ chargeAppliesTo.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeAppliesTo.hasError('required')">
|
||||
@@ -50,7 +50,7 @@
|
||||
<mat-label>{{"labels.inputs.Charge Time Type" | translate}}</mat-label>
|
||||
<mat-select required formControlName="chargeTimeType">
|
||||
<mat-option *ngFor="let chargeTimeType of chargeTimeTypeData" [value]="chargeTimeType.id">
|
||||
{{ chargeTimeType.value }}
|
||||
{{ chargeTimeType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeTimeType.hasError('required')">
|
||||
@@ -63,7 +63,7 @@
|
||||
<mat-select required formControlName="chargeCalculationType">
|
||||
<mat-option *ngFor="let chargeCalculationType of filteredChargeCalculationType()"
|
||||
[value]="chargeCalculationType.id">
|
||||
{{ chargeCalculationType.value }}
|
||||
{{ chargeCalculationType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeCalculationType.hasError('required')">
|
||||
@@ -76,7 +76,7 @@
|
||||
<mat-select required formControlName="chargePaymentMode">
|
||||
<mat-option *ngFor="let chargePaymentMode of chargesTemplateData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id">
|
||||
{{ chargePaymentMode.value }}
|
||||
{{ chargePaymentMode.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargePaymentMode.hasError('required')">
|
||||
@@ -110,7 +110,7 @@
|
||||
<mat-select required formControlName="feeFrequency">
|
||||
<mat-option *ngFor="let feeFrequency of chargesTemplateData.feeFrequencyOptions"
|
||||
[value]="feeFrequency.id">
|
||||
{{ feeFrequency.value }}
|
||||
{{ feeFrequency.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.feeFrequency.hasError('required')">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<mat-select required formControlName="chargeAppliesTo">
|
||||
<mat-option *ngFor="let chargeAppliesTo of chargeData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id">
|
||||
{{ chargeAppliesTo.value }}
|
||||
{{ chargeAppliesTo.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -47,7 +47,7 @@
|
||||
<mat-label>{{"labels.inputs.Charge Time Type" | translate}}</mat-label>
|
||||
<mat-select required formControlName="chargeTimeType">
|
||||
<mat-option *ngFor="let chargeTime of chargeTimeTypeOptions" [value]="chargeTime.id">
|
||||
{{ chargeTime.value }}
|
||||
{{ chargeTime.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeTimeType.hasError('required')">
|
||||
@@ -60,7 +60,7 @@
|
||||
<mat-label>{{"labels.inputs.Charge Calculation" | translate}}</mat-label>
|
||||
<mat-select required formControlName="chargeCalculationType">
|
||||
<mat-option *ngFor="let chargeCalculation of chargeCalculationTypeOptions" [value]="chargeCalculation.id">
|
||||
{{ chargeCalculation.value }}
|
||||
{{ chargeCalculation.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeCalculationType.hasError('required')">
|
||||
@@ -73,7 +73,7 @@
|
||||
<mat-select required formControlName="chargePaymentMode">
|
||||
<mat-option *ngFor="let chargePaymentMode of chargeData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id">
|
||||
{{ chargePaymentMode.value }}
|
||||
{{ chargePaymentMode.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargePaymentMode.hasError('required')">
|
||||
@@ -152,7 +152,7 @@
|
||||
<mat-label>{{"labels.inputs.Charge Frequency" | translate}}</mat-label>
|
||||
<mat-select required formControlName="feeFrequency">
|
||||
<mat-option *ngFor="let chargeFrequency of chargeData.feeFrequencyOptions" [value]="chargeFrequency.id">
|
||||
{{ chargeFrequency.value }}
|
||||
{{ chargeFrequency.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.feeFrequency.hasError('required')">
|
||||
|
||||
@@ -26,11 +26,19 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Type" | translate}}
|
||||
{{"labels.inputs.Charge Applies To" | translate}}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.penalty === true ? 'Penalty' : 'Charge' }}
|
||||
{{ chargeData.chargeAppliesTo.value | translateCatalog }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Penalty" | translate}}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.penalty === true | yesNo }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
@@ -46,7 +54,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.amount }}
|
||||
{{ chargeData.amount | formatNumber }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="minCap">
|
||||
@@ -70,15 +78,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeTimeType.value }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Applies To" | translate}}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeAppliesTo.value }}
|
||||
{{ chargeData.chargeTimeType.value | translateCatalog }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
@@ -86,7 +86,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeCalculationType.value }}
|
||||
{{ chargeData.chargeCalculationType.value | translateCatalog }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
@@ -94,7 +94,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargePaymentMode.value }}
|
||||
{{ chargeData.chargePaymentMode.value | translateCatalog }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
<div fxFlex="50%"
|
||||
*ngIf="chargeData.chargeTimeType.id == 9 && chargeData.feeFrequency && chargeData.feeFrequency">
|
||||
{{ chargeData.feeFrequency.value }}
|
||||
{{ chargeData.feeFrequency.value | translateCatalog }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="chargeData.chargeTimeType.id == 9 && chargeData.feeInterval">
|
||||
|
||||
+155
-156
@@ -1,79 +1,79 @@
|
||||
<div class="tab-container mat-typography" *ngIf="loanProduct">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Details</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Details' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Name:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Name' | translate}}:</span>
|
||||
<span fxFlex="53%"><b>{{ loanProduct.name }}</b></span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Short Name:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.fundId">
|
||||
<span fxFlex="47%">Fund Name:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Fund Name' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.fundName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Include in Customer Loan Counter:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Include in Customer Loan Counter' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.includeInBorrowerCycle | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.startDate">
|
||||
<span fxFlex="47%">Start Date:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Start Date' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.startDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.closeDate">
|
||||
<span fxFlex="47%">Close Date:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Close Date' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.closeDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.description">
|
||||
<span fxFlex="47%">Description:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Currency</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Currency:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.currency.code }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Currency:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.currency.displayLabel }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Decimal Places:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.currency.decimalPlaces }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Currency in multiples of:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.currency.inMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Installment in multiples of:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Installment in multiples of' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.installmentAmountInMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Terms</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Principal:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Principal' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.principal | formatNumber }}
|
||||
(Min {{ (loanProduct.minPrincipal ? loanProduct.minPrincipal : loanProduct.principal) | formatNumber }}
|
||||
: Max {{ (loanProduct.maxPrincipal ? loanProduct.maxPrincipal : loanProduct.principal) | formatNumber }})
|
||||
@@ -81,27 +81,26 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Allow Approved / Disbursed Amounts Over Applied:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Allow Approved / Disbursed Amounts Over Applied' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowApprovedDisbursedAmountsOverApplied | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.allowApprovedDisbursedAmountsOverApplied">
|
||||
<span fxFlex="47%">Over Applied Amount:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Over Applied Amount' | translate}}:</span>
|
||||
<span fxFlex="53%" *ngIf="loanProduct.overAppliedCalculationType === 'percentage'">{{ loanProduct.overAppliedNumber
|
||||
| formatNumber
|
||||
| formatNumber:0
|
||||
}} %</span>
|
||||
<span fxFlex="53%" *ngIf="loanProduct.overAppliedCalculationType === 'flat'">{{ loanProduct.overAppliedNumber |
|
||||
formatNumber }} {{
|
||||
loanProduct.currencyCode }}</span>
|
||||
formatNumber }} {{ loanProduct.currencyCode }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Installment day calculation from:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.repaymentStartDateType?.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Installment day calculation from' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.repaymentStartDateType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Number of Repayments:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Number of Repayments' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.numberOfRepayments + ' (Min: ' + (loanProduct.minNumberOfRepayments ?
|
||||
loanProduct.minNumberOfRepayments : loanProduct.numberOfRepayments) + ', Max: ' +
|
||||
(loanProduct.maxNumberOfRepayments ? loanProduct.maxNumberOfRepayments : loanProduct.numberOfRepayments) + ')'
|
||||
@@ -109,26 +108,26 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Linked to floating interest rates:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Linked to floating interest rates' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.isLinkedToFloatingInterestRates | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="!loanProduct.isLinkedToFloatingInterestRates">
|
||||
<span fxFlex="47%">Nominal interest rate:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Nominal interest rate' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRatePerPeriod + ' (Min: ' + (loanProduct.minInterestRatePerPeriod ?
|
||||
loanProduct.minInterestRatePerPeriod : loanProduct.interestRatePerPeriod) + ', Max: ' +
|
||||
(loanProduct.maxInterestRatePerPeriod ? loanProduct.maxInterestRatePerPeriod : loanProduct.interestRatePerPeriod)
|
||||
+ ')' + ' ' + loanProduct.interestRateFrequencyType?.value }}</span>
|
||||
+ ')'}} {{ loanProduct.interestRateFrequencyType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.isLinkedToFloatingInterestRates" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Floating Lending Interest Rate:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Floating Lending Interest Rate' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.floatingRateName }}</span>
|
||||
<span fxFlex="47%">Interest Rate Differential:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest Rate Differential' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRateDifferential }}</span>
|
||||
<span fxFlex="47%">Floating Interest Rate Calculation Allowed:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Floating Interest Rate Calculation Allowed' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.isFloatingInterestRateCalculationAllowed | yesNo }}</span>
|
||||
<span fxFlex="47%">Floating Interest Rate:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Floating Interest Rate' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.defaultDifferentialLendingRate + ' (Min: ' +
|
||||
(loanProduct.minDifferentialLendingRate ? loanProduct.minDifferentialLendingRate :
|
||||
loanProduct.defaultDifferentialLendingRate) + ', Max: ' + (loanProduct.maxDifferentialLendingRate ?
|
||||
@@ -136,48 +135,48 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Terms vary based on loan cycle:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Terms vary based on loan cycle' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.useBorrowerCycle | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.principalVariationsForBorrowerCycle?.length">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>Principal by loan cycle</h4>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Principal by loan cycle' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="loanProduct.principalVariationsForBorrowerCycle">
|
||||
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> Condition </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType.value }}
|
||||
{{ variation.valueConditionType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> Loan Cycle </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Loan Cycle' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Minimum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Minimum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
{{ variation.minValue | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Default </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Default' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
{{ variation.defaultValue | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Maximum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Maximum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
{{ variation.maxValue | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -190,41 +189,41 @@
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.numberOfRepaymentVariationsForBorrowerCycle?.length">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>Number of Repayments by loan cycle</h4>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Number of Repayments by loan cycle' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="loanProduct.numberOfRepaymentVariationsForBorrowerCycle">
|
||||
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> Condition </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType.value }}
|
||||
{{ variation.valueConditionType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> Loan Cycle </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Loan Cycle' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Minimum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Minimum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Default </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Default' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Maximum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Maximum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
@@ -239,41 +238,41 @@
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.interestRateVariationsForBorrowerCycle?.length">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>Nominal Interest Rate by loan cycle</h4>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Nominal Interest Rate by loan cycle' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="loanProduct.interestRateVariationsForBorrowerCycle">
|
||||
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> Condition </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType.value }}
|
||||
{{ variation.valueConditionType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> Loan Cycle </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Loan Cycle' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Minimum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Minimum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Default </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Default' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Maximum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Maximum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
@@ -287,70 +286,70 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Repay Every:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.repaymentEvery + ' ' + loanProduct.repaymentFrequencyType.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Repay Every' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.repaymentEvery }} {{ loanProduct.repaymentFrequencyType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.fixedLength">
|
||||
<span fxFlex="47%">Fixed Length:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.fixedLength + ' ' + loanProduct.repaymentFrequencyType.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Fixed Length' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.fixedLength }} {{ loanProduct.repaymentFrequencyType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.minimumDaysBetweenDisbursalAndFirstRepayment">
|
||||
<span fxFlex="47%">Minimum days between disbursal and first repayment date:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.minimumDaysBetweenDisbursalAndFirstRepayment }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Minimum days between disbursal and first repayment date' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.minimumDaysBetweenDisbursalAndFirstRepayment | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Settings</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.amortizationType?.value">
|
||||
<span fxFlex="47%">Amortization:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.amortizationType.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Amortization' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.amortizationType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Is Equal Amortization:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Is Equal Amortization' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.isEqualAmortization | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Interest Method:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestType?.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest Method' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Interest Calculation Period:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestCalculationPeriodType?.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest Calculation Period' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestCalculationPeriodType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.allowPartialPeriodInterestCalculation">
|
||||
<span fxFlex="47%">Allow Partial Interest Calculation with same as repayment:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Allow Partial Interest Calculation with same as repayment' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowPartialPeriodInterestCalculation | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Loan Schedule</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Loan Schedule' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Loan Schedule Type:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.loanScheduleType.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Loan Schedule Type' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.loanScheduleType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Repayment Strategy:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Repayment Strategy' | translate}}:</span>
|
||||
<span fxFlex="53%" class="repayment-strategy">{{ loanProduct.transactionProcessingStrategyName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation">
|
||||
<span fxFlex="47%">Loan Schedule Processing Type:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Loan Schedule Processing Type' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.loanScheduleProcessingType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation">
|
||||
<span fxFlex="47%">Advanced Payment Allocation Transactions:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Advanced Payment Allocation Transactions' | translate}}:</span>
|
||||
<span fxFlex="53%">
|
||||
<mat-accordion>
|
||||
<mifosx-view-advance-paymeny-allocation *ngFor="let paymentAllocation of paymentAllocations"
|
||||
@@ -362,7 +361,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation && creditAllocations.length > 0">
|
||||
<span fxFlex="47%">Advanced Credit Allocation Transactions:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Advanced Credit Allocation Transactions' | translate}}:</span>
|
||||
<span fxFlex="53%">
|
||||
<mat-accordion>
|
||||
<mifosx-view-advance-paymeny-allocation *ngFor="let creditAllocation of creditAllocations"
|
||||
@@ -373,133 +372,133 @@
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Down Payments</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Down Payments' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Enable Down Payments:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Enable Down Payments' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.enableDownPayment | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.enableDownPayment" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Disbursed Amount Percentage Down Payment (%):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Disbursed Amount Percentage Down Payment' | translate}} (%):</span>
|
||||
<span fxFlex="53%">{{ loanProduct.disbursedAmountPercentageForDownPayment }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.enableDownPayment" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Enable Auto Repayment for Down Payment:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Enable Auto Repayment for Down Payment' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.enableAutoRepaymentForDownPayment | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Moratorium</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Moratorium' | translate}}</h3>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.delinquencyBucket">
|
||||
<span fxFlex="47%">Delinquency Bucket:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Delinquency Bucket' | translate}}:</span>
|
||||
<span fxFlex="53%" *ngIf="loanProduct.delinquencyBucket.name">{{ loanProduct.delinquencyBucket.name }}</span>
|
||||
<span fxFlex="53%" *ngIf="!loanProduct.delinquencyBucket.name">{{ 'labels.inputs.Unassigned' | translate }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="!loanProduct.delinquencyBucket">
|
||||
<span fxFlex="47%">Delinquency Bucket:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Delinquency Bucket' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ 'labels.inputs.Unassigned' | translate }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Enable installment level Delinquency:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Enable installment level Delinquency' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.enableInstallmentLevelDelinquency | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.graceOnPrincipalPayment">
|
||||
<span fxFlex="47%">Grace on principal payment:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Grace on principal payment' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.graceOnPrincipalPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.graceOnInterestPayment">
|
||||
<span fxFlex="47%">Grace on interest payment:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Grace on interest payment' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.graceOnInterestPayment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.graceOnInterestCharged">
|
||||
<span fxFlex="47%">Interest free period:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest free period' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.graceOnInterestCharged }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.inArrearsTolerance">
|
||||
<span fxFlex="47%">Arrears tolerance:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Arrears tolerance' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.inArrearsTolerance }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Days in year:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.daysInYearType?.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Days in year' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.daysInYearType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Days in month:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.daysInMonthType?.value }}</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Days in month' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.daysInMonthType?.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Allow fixing of the installment amount:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Allow fixing of the installment amount' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.canDefineInstallmentAmount | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.graceOnArrearsAgeing">
|
||||
<span fxFlex="47%">Number of days a loan may be overdue before moving into arrears:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Number of days a loan may be overdue before moving into arrears' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.graceOnArrearsAgeing }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.overdueDaysForNPA">
|
||||
<span fxFlex="47%">Maximum number of days a loan may be overdue before becoming a NPA (non performing asset):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Maximum number of days a loan may be overdue before becoming a NPA (non performing asset)' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.overdueDaysForNPA }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Account moves out of NPA only after all arrears have been cleared:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Account moves out of NPA only after all arrears have been cleared' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.accountMovesOutOfNPAOnlyOnArrearsCompletion | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.principalThresholdForLastInstallment">
|
||||
<span fxFlex="47%">Principal Threshold (%) for Last Instalment:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Principal Threshold (%) for Last Instalment' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.principalThresholdForLastInstallment }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Variable Installments allowed:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Variable Installments allowed' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowVariableInstallments | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.allowVariableInstallments">
|
||||
<span fxFlex="47%">Variable Installments:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Variable Installments' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ '(Min: ' + loanProduct.minimumGap + ', Max: ' + (loanProduct.maximumGap ?
|
||||
loanProduct.maximumGap : loanProduct.minimumGap) + ')' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Allowed to be used for providing Topup Loans:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Allowed to be used for providing Topup Loans' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.canUseForTopup | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Interest Recalculation</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Interest Recalculation' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Recalculate Interest:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Recalculate Interest' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.isInterestRecalculationEnabled | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.isInterestRecalculationEnabled" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Pre-closure interest calculation rule:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Pre-closure interest calculation rule' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRecalculationData.preClosureInterestCalculationStrategy.value }}</span>
|
||||
<span fxFlex="47%">Advance payments adjustment type:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Advance payments adjustment type' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRecalculationData.rescheduleStrategyType.value }}</span>
|
||||
<span fxFlex="47%">Interest recalculation compounding on:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest recalculation compounding on' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRecalculationData.interestRecalculationCompoundingType.value }}</span>
|
||||
<div fxFlexFill *ngIf="loanProduct.interestRecalculationData.interestRecalculationCompoundingType.id !== 0"
|
||||
fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Frequency for compounding:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Frequency for compounding' | translate}}:</span>
|
||||
<span fxFlex="53%">
|
||||
{{ loanProduct.interestRecalculationData.recalculationCompoundingFrequencyType.value }}
|
||||
<span
|
||||
@@ -514,12 +513,12 @@
|
||||
</span>
|
||||
<div fxFlexFill *ngIf="loanProduct.interestRecalculationData.recalculationCompoundingFrequencyType.id !== 1"
|
||||
fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Frequency Interval for compounding:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Frequency Interval for compounding' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRecalculationData.recalculationCompoundingFrequencyInterval }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Frequency for recalculate Outstanding Principal:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Frequency for recalculate Outstanding Principal' | translate}}:</span>
|
||||
<span fxFlex="53%">
|
||||
{{ loanProduct.interestRecalculationData.recalculationRestFrequencyType.value }}
|
||||
<span
|
||||
@@ -535,7 +534,7 @@
|
||||
</div>
|
||||
<div fxFlexFill *ngIf="loanProduct.interestRecalculationData.recalculationRestFrequencyType.id !== 1"
|
||||
fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Frequency Interval for recalculation:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Frequency Interval for recalculation' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.interestRecalculationData.recalculationRestFrequencyInterval }}</span>
|
||||
<div fxFlexFill *ngIf="loanProduct.recalculationRestFrequencyDate">
|
||||
<span fxFlex="47%">Rest Frequency Date:</span>
|
||||
@@ -543,103 +542,103 @@
|
||||
</div>
|
||||
</div>
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Is Arrears recognization based on original schedule:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Is Arrears recognization based on original schedule' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.isArrearsBasedOnOriginalSchedule | yesNo }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Guarantee Requirements</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Guarantee Requirements' | translate}}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Place Guarantee Funds On-Hold:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Place Guarantee Funds On-Hold' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.holdGuaranteeFunds | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.holdGuaranteeFunds" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Mandatory Guarantee(%):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Mandatory Guarantee' | translate}} (%):</span>
|
||||
<span fxFlex="53%">{{ loanProduct.productGuaranteeData.mandatoryGuarantee }}</span>
|
||||
<div fxFlexFill *ngIf="loanProduct.productGuaranteeData.minimumGuaranteeFromOwnFunds">
|
||||
<span fxFlex="47%">Minimum Guarantee from Own Funds(%):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Minimum Guarantee from Own Funds' | translate}} (%):</span>
|
||||
<span fxFlex="53%">{{ loanProduct.productGuaranteeData.minimumGuaranteeFromOwnFunds }}</span>
|
||||
</div>
|
||||
<div fxFlexFill *ngIf="loanProduct.productGuaranteeData.minimumGuaranteeFromGuarantor">
|
||||
<span fxFlex="47%">Minimum Guarantee from Guarantor Funds(%):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Minimum Guarantee from Guarantor Funds' | translate}} (%):</span>
|
||||
<span fxFlex="53%">{{ loanProduct.productGuaranteeData.minimumGuaranteeFromGuarantor }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Loan Tranche Details</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Loan Tranche Details' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Enable Multiple Disbursals:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Enable Multiple Disbursals' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.multiDisburseLoan | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.multiDisburseLoan" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Maximum Tranche count:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Maximum Tranche count' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.maxTrancheCount }}</span>
|
||||
<div fxFlexFill *ngIf="loanProduct.outstandingLoanBalance">
|
||||
<span fxFlex="47%">Maximum allowed outstanding balance:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Maximum allowed outstanding balance' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.outstandingLoanBalance }}</span>
|
||||
</div>
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Disallow Expected Disbursements:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Disallow Expected Disbursements' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.disallowExpectedDisbursements | yesNo }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Event Settings</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Event Settings' | translate }}</h3>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Use the Global Configurations values to the Repayment Event (notifications):</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Use the Global Configurations values to the Repayment Event (notifications)' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ useDueForRepaymentsConfigurations | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.dueDaysForRepaymentEvent">
|
||||
<span fxFlex="47%">Due days for repayment event:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Due days for repayment event' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.dueDaysForRepaymentEvent | number }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.overDueDaysForRepaymentEvent">
|
||||
<span fxFlex="47%">OverDue days for repayment event:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.OverDue days for repayment event' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.overDueDaysForRepaymentEvent | number }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Configurable Terms and Settings</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Configurable Terms and Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Allow overriding select terms and settings in loan accounts:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Allow overriding select terms and settings in loan accounts' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeConfiguration | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.allowAttributeConfiguration" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="47%">Amortization:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Amortization' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.amortizationType | yesNo }}</span>
|
||||
<span fxFlex="47%">Interest method:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest method' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.interestType | yesNo }}</span>
|
||||
<span fxFlex="47%">Repayment strategy:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Repayment strategy' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.transactionProcessingStrategyCode | yesNo }}</span>
|
||||
<span fxFlex="47%">Interest calculation period:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Interest calculation period' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.interestCalculationPeriodType | yesNo }}</span>
|
||||
<span fxFlex="47%">Arrears tolerance:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Arrears tolerance' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.inArrearsTolerance | yesNo }}</span>
|
||||
<span fxFlex="47%">Repaid every:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Repaid every' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.repaymentEvery | yesNo }}</span>
|
||||
<span fxFlex="47%">Moratorium:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Moratorium' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.graceOnPrincipalAndInterestPayment | yesNo }}</span>
|
||||
<span fxFlex="47%">Number of days a loan may be overdue before moving into arrears:</span>
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Number of days a loan may be overdue before moving into arrears' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.allowAttributeOverrides.graceOnArrearsAgeing | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Charges</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
@@ -647,30 +646,30 @@
|
||||
[dataSource]="loanProduct.charges | chargesPenaltyFilter:false">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Name' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Charge Type' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
{{ charge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Amount' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Collected On' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
{{ charge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -679,37 +678,37 @@
|
||||
|
||||
</table>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Overdue Charges</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Overdue Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="loanProduct.charges | chargesPenaltyFilter:true">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> Name </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Name' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.name + ', ' + overdueCharge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> Type </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Charge Type' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeCalculationType.value }}
|
||||
{{ overdueCharge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> Amount </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Amount' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.amount }}
|
||||
{{ overdueCharge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> Collected On </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Collected On' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeTimeType.value }}
|
||||
{{ overdueCharge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -720,19 +719,19 @@
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>Accounting</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="47%">Type:</span>
|
||||
<span fxFlex="53%">{{ accountingRuleData[accountingRule() - 1] }}</span>
|
||||
<span fxFlex="47%">{{'labels.inputs.Type' | translate}}:</span>
|
||||
<span fxFlex="53%">{{ 'labels.accounting.' + getAccountingRuleName(accountingRuleData[accountingRule() - 1]) | translate }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="isAccountingEnabled()" fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlexFill class="mat-h4">Assets / Liabilities</h4>
|
||||
<h4 fxFlexFill class="mat-h4">{{'labels.heading.Assets' | translate}} / {{'labels.heading.Liabilities' | translate}}</h4>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<mifosx-gl-account-display fxFlex="100%"
|
||||
|
||||
+4
@@ -323,4 +323,8 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
|| this.loanProduct.penaltyToIncomeAccountMappings?.length > 0);
|
||||
}
|
||||
|
||||
getAccountingRuleName(value: string): string {
|
||||
return this.accounting.getAccountRuleName(value.toUpperCase());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-6
@@ -31,21 +31,21 @@
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
{{ charge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
{{ charge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -100,21 +100,21 @@
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeCalculationType.value }}
|
||||
{{ overdueCharge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.amount }}
|
||||
{{ overdueCharge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeTimeType.value }}
|
||||
{{ overdueCharge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@
|
||||
|
||||
<ng-container matColumnDef="allocationRule">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Allocation Rule' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentAllocation"> {{ paymentAllocation.value }} </td>
|
||||
<td mat-cell *matCellDef="let paymentAllocation"> {{ paymentAllocation.value | translateCatalog }} </td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
<ng-container matColumnDef="allocationRule">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Credit Allocation Rule' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let creditAllocation"> {{ creditAllocation.value }} </td>
|
||||
<td mat-cell *matCellDef="let creditAllocation"> {{ creditAllocation.value | translateCatalog }} </td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
@@ -65,7 +65,7 @@
|
||||
<mat-select [formControl]="futureInstallmentAllocationRule">
|
||||
<mat-option *ngFor="let futureInstallmentAllocationRule of advancedPaymentAllocation.futureInstallmentAllocationRules"
|
||||
[value]="futureInstallmentAllocationRule.code">
|
||||
{{ futureInstallmentAllocationRule.value | translate }}
|
||||
{{ futureInstallmentAllocationRule.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
+17
-17
@@ -18,7 +18,7 @@
|
||||
<mat-label>{{'labels.inputs.Interest Method' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestType" matTooltip="The Interest method value is input to calculating the payments amount for repayment of the loan. " required>
|
||||
<mat-option *ngFor="let interestType of interestTypeData" [value]="interestType.id">
|
||||
{{ interestType.value }}
|
||||
{{ interestType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -31,7 +31,7 @@
|
||||
<mat-select formControlName="interestCalculationPeriodType" matTooltip="Daily - Will Calculate the interest on DAILY basis ex: Month of February has 28days
|
||||
and it will calculate interest for 28days, SAME AS REPAYMENT PERIOD- it calculates for the month,that is, 30days." required>
|
||||
<mat-option *ngFor="let interestCalculationPeriodType of interestCalculationPeriodTypeData" [value]="interestCalculationPeriodType.id">
|
||||
{{ interestCalculationPeriodType.value }}
|
||||
{{ interestCalculationPeriodType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -58,7 +58,7 @@
|
||||
<mat-label>{{'labels.inputs.Loan Schedule Type' | translate}}</mat-label>
|
||||
<mat-select formControlName="loanScheduleType" required>
|
||||
<mat-option *ngFor="let loanScheduleType of loanScheduleTypeData" [value]="loanScheduleType.code">
|
||||
{{ loanScheduleType.value }}
|
||||
{{ loanScheduleType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -68,7 +68,7 @@
|
||||
<mat-select formControlName="transactionProcessingStrategyCode" matTooltip="The repayment strategy determines the sequence in which each of the components is paid."
|
||||
required [disabled]="advancedTransactionProcessingStrategyDisabled">
|
||||
<mat-option *ngFor="let transactionProcessingStrategy of transactionProcessingStrategyData" [value]="transactionProcessingStrategy.code">
|
||||
{{ transactionProcessingStrategy.name }}
|
||||
{{ transactionProcessingStrategy.name | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -80,7 +80,7 @@
|
||||
<mat-label>{{'labels.inputs.Loan Schedule Processing Type' | translate}}</mat-label>
|
||||
<mat-select formControlName="loanScheduleProcessingType" required>
|
||||
<mat-option *ngFor="let loanScheduleProcessingType of loanScheduleProcessingTypeData" [value]="loanScheduleProcessingType.code">
|
||||
{{ loanScheduleProcessingType.value }}
|
||||
{{ loanScheduleProcessingType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -189,7 +189,7 @@
|
||||
<mat-label>{{'labels.inputs.Days in year' | translate}}</mat-label>
|
||||
<mat-select matTooltip="The setting for number of days in year to use to calculate interest" formControlName="daysInYearType" required>
|
||||
<mat-option *ngFor="let daysInYearType of daysInYearTypeData" [value]="daysInYearType.id">
|
||||
{{ daysInYearType.value }}
|
||||
{{ daysInYearType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -201,7 +201,7 @@
|
||||
<mat-label>{{'labels.inputs.Days in month' | translate}}</mat-label>
|
||||
<mat-select matTooltip="Number of days in month." formControlName="daysInMonthType" required>
|
||||
<mat-option *ngFor="let daysInMonthType of daysInMonthTypeData" [value]="daysInMonthType.id">
|
||||
{{ daysInMonthType.value }}
|
||||
{{ daysInMonthType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -282,7 +282,7 @@
|
||||
<mat-label>{{'labels.inputs.Pre-closure interest calculation rule' | translate}}</mat-label>
|
||||
<mat-select formControlName="preClosureInterestCalculationStrategy" required>
|
||||
<mat-option *ngFor="let preClosureInterestCalculationStrategy of preClosureInterestCalculationStrategyData" [value]="preClosureInterestCalculationStrategy.id">
|
||||
{{ preClosureInterestCalculationStrategy.value }}
|
||||
{{ preClosureInterestCalculationStrategy.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -294,7 +294,7 @@
|
||||
<mat-label>{{'labels.inputs.Advance payments adjustment type' | translate}}</mat-label>
|
||||
<mat-select formControlName="rescheduleStrategyMethod" required>
|
||||
<mat-option *ngFor="let rescheduleStrategyType of rescheduleStrategyTypeData" [value]="rescheduleStrategyType.id">
|
||||
{{ rescheduleStrategyType.value }}
|
||||
{{ rescheduleStrategyType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -306,7 +306,7 @@
|
||||
<mat-label>{{'labels.inputs.Interest recalculation compounding on' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestRecalculationCompoundingMethod" required>
|
||||
<mat-option *ngFor="let interestRecalculationCompoundingType of interestRecalculationCompoundingTypeData" [value]="interestRecalculationCompoundingType.id">
|
||||
{{ interestRecalculationCompoundingType.value }}
|
||||
{{ interestRecalculationCompoundingType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -352,7 +352,7 @@
|
||||
<mat-form-field fxFlexFill>
|
||||
<mat-select formControlName="recalculationCompoundingFrequencyNthDayType">
|
||||
<mat-option *ngFor="let interestRecalculationNthDayType of interestRecalculationNthDayTypeData" [value]="interestRecalculationNthDayType.id">
|
||||
{{ interestRecalculationNthDayType.value }}
|
||||
{{ interestRecalculationNthDayType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -365,7 +365,7 @@
|
||||
<mat-form-field fxFlexFill>
|
||||
<mat-select formControlName="recalculationCompoundingFrequencyDayOfWeekType">
|
||||
<mat-option *ngFor="let interestRecalculationDayOfWeekType of interestRecalculationDayOfWeekTypeData" [value]="interestRecalculationDayOfWeekType.id">
|
||||
{{ interestRecalculationDayOfWeekType.value }}
|
||||
{{ interestRecalculationDayOfWeekType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -391,7 +391,7 @@
|
||||
<mat-label>{{'labels.inputs.Frequency for recalculate Outstanding Principal' | translate}}</mat-label>
|
||||
<mat-select formControlName="recalculationRestFrequencyType" required>
|
||||
<mat-option *ngFor="let interestRecalculationFrequencyType of interestRecalculationFrequencyTypeData" [value]="interestRecalculationFrequencyType.id">
|
||||
{{ interestRecalculationFrequencyType.value }}
|
||||
{{ interestRecalculationFrequencyType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -404,7 +404,7 @@
|
||||
<mat-form-field fxFlexFill>
|
||||
<mat-select formControlName="recalculationRestFrequencyNthDayType">
|
||||
<mat-option *ngFor="let interestRecalculationNthDayType of interestRecalculationNthDayTypeData" [value]="interestRecalculationNthDayType.id">
|
||||
{{ interestRecalculationNthDayType.value }}
|
||||
{{ interestRecalculationNthDayType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -417,7 +417,7 @@
|
||||
<mat-form-field fxFlexFill>
|
||||
<mat-select formControlName="recalculationRestFrequencyDayOfWeekType">
|
||||
<mat-option *ngFor="let interestRecalculationDayOfWeekType of interestRecalculationDayOfWeekTypeData" [value]="interestRecalculationDayOfWeekType.id">
|
||||
{{ interestRecalculationDayOfWeekType.value }}
|
||||
{{ interestRecalculationDayOfWeekType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -496,9 +496,9 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Configurable Terms and Settings' | translate}}</h3>
|
||||
<h3 fxFlex="43%" class="mat-h3">{{'labels.inputs.Configurable Terms and Settings' | translate}}</h3>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="allowAttributeConfiguration" class="margin-b">
|
||||
<mat-checkbox fxFlex="53%" labelPosition="before" formControlName="allowAttributeConfiguration" class="margin-b">
|
||||
{{'labels.inputs.Allow overriding select terms and settings in loan accounts' | translate}}
|
||||
</mat-checkbox>
|
||||
|
||||
|
||||
+16
-16
@@ -37,7 +37,7 @@
|
||||
<mat-label>{{'labels.inputs.Over Amount Calculation Type' | translate}}</mat-label>
|
||||
<mat-select formControlName="overAppliedCalculationType" required>
|
||||
<mat-option *ngFor="let overAppliedCalculationType of overAppliedCalculationTypeData" [value]="overAppliedCalculationType.id">
|
||||
{{ overAppliedCalculationType.value }}
|
||||
{{ overAppliedCalculationType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -127,7 +127,7 @@
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestRateFrequencyType" required [disabled]="isZeroInterest()">
|
||||
<mat-option *ngFor="let interestRateFrequencyType of interestRateFrequencyTypeData" [value]="interestRateFrequencyType.id">
|
||||
{{ interestRateFrequencyType.value }}
|
||||
{{ interestRateFrequencyType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -201,9 +201,9 @@
|
||||
|
||||
<div *ngIf="loanProductTermsForm.value.useBorrowerCycle" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="23%" class="mat-h4">{{'labels.inputs.Principal by loan cycle' | translate}}</h4>
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Principal by loan cycle' | translate}}</h4>
|
||||
|
||||
<div fxFlex="73%">
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('Principal', principalVariationsForBorrowerCycle)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
@@ -264,9 +264,9 @@
|
||||
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="23%" class="mat-h4">{{'labels.inputs.Number of repayments by loan cycle' | translate}}</h4>
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Number of repayments by loan cycle' | translate}}</h4>
|
||||
|
||||
<div fxFlex="73%">
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('NumberOfRepayments', numberOfRepaymentVariationsForBorrowerCycle)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
@@ -327,9 +327,9 @@
|
||||
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="23%" class="mat-h4">{{'labels.inputs.Nominal interest rate by loan cycle' | translate}}</h4>
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Nominal interest rate by loan cycle' | translate}}</h4>
|
||||
|
||||
<div fxFlex="73%">
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
@@ -339,42 +339,42 @@
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="interestRateVariationsForBorrowerCycle.value" *ngIf="interestRateVariationsForBorrowerCycle.value.length">
|
||||
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> Condition </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType | find:valueConditionTypeData:'id':'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> Loan Cycle </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Loan Cycle' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Minimum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Minimum' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Default </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Default' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> Maximum </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Maximum' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> Actions </th>
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let element; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="editVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle, i)">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
@@ -408,7 +408,7 @@
|
||||
<mat-label>{{'labels.inputs.Frequency Type' | translate}}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyType" required>
|
||||
<mat-option *ngFor="let repaymentFrequencyType of repaymentFrequencyTypeData" [value]="repaymentFrequencyType.id">
|
||||
{{ repaymentFrequencyType.value }}
|
||||
{{ repaymentFrequencyType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -423,7 +423,7 @@
|
||||
<mat-label>{{'labels.inputs.Fixed Length' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedLength">
|
||||
</mat-form-field>
|
||||
<span fxFlex="30%" *ngIf="allowFixedLength()" class="label-field">{{ loanProductTermsForm.value.repaymentFrequencyType | find:repaymentFrequencyTypeData:'id':'value' }}</span>
|
||||
<span fxFlex="30%" *ngIf="allowFixedLength()" class="label-field">{{ loanProductTermsForm.value.repaymentFrequencyType | find:repaymentFrequencyTypeData:'id':'value' | translateCatalog }}</span>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Minimum days between disbursal and first repayment date' | translate}}</mat-label>
|
||||
|
||||
+17
-11
@@ -1,7 +1,6 @@
|
||||
import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';
|
||||
import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormArray, UntypedFormControl } from '@angular/forms';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { TooltipPosition } from '@angular/material/tooltip';
|
||||
|
||||
import { FormDialogComponent } from 'app/shared/form-dialog/form-dialog.component';
|
||||
import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component';
|
||||
@@ -9,8 +8,8 @@ import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.co
|
||||
import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base';
|
||||
import { InputBase } from 'app/shared/form-dialog/formfield/model/input-base';
|
||||
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
|
||||
import { LoanProducts } from '../../loan-products';
|
||||
import { ProcessingStrategyService } from '../../services/processing-strategy.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'mifosx-loan-product-terms-step',
|
||||
@@ -38,7 +37,8 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
|
||||
constructor(private formBuilder: UntypedFormBuilder,
|
||||
private processingStrategyService: ProcessingStrategyService,
|
||||
private dialog: MatDialog) {
|
||||
private dialog: MatDialog,
|
||||
private translateService: TranslateService) {
|
||||
this.createLoanProductTermsForm();
|
||||
this.setConditionalControls();
|
||||
}
|
||||
@@ -255,9 +255,15 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
|
||||
getData(formType: string, values?: any) {
|
||||
switch (formType) {
|
||||
case 'Principal': return { title: 'Principal by loan cycle', formfields: this.getFormfields(values) };
|
||||
case 'NumberOfRepayments': return { title: 'Number of repayments by loan cycle', formfields: this.getFormfields(values) };
|
||||
case 'NominalInterestRate': return { title: 'Nominal interest rate by loan cycle', formfields: this.getFormfields(values) };
|
||||
case 'Principal': return {
|
||||
title: this.translateService.instant('labels.heading.Principal by loan cycle'), formfields: this.getFormfields(values)
|
||||
};
|
||||
case 'NumberOfRepayments': return {
|
||||
title: this.translateService.instant('labels.heading.Number of Repayments by loan cycle'), formfields: this.getFormfields(values)
|
||||
};
|
||||
case 'NominalInterestRate': return {
|
||||
title: this.translateService.instant('labels.heading.Nominal Interest Rate by loan cycle'), formfields: this.getFormfields(values)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,7 +271,7 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
const formfields: FormfieldBase[] = [
|
||||
new SelectBase({
|
||||
controlName: 'valueConditionType',
|
||||
label: 'Condition',
|
||||
label: this.translateService.instant('labels.inputs.Condition'),
|
||||
value: values ? values.valueConditionType : this.valueConditionTypeData[0].id,
|
||||
options: { label: 'value', value: 'id', data: this.valueConditionTypeData },
|
||||
required: true,
|
||||
@@ -273,7 +279,7 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
}),
|
||||
new InputBase({
|
||||
controlName: 'borrowerCycleNumber',
|
||||
label: 'Loan Cycle',
|
||||
label: this.translateService.instant('labels.inputs.Loan Cycle'),
|
||||
value: values ? values.borrowerCycleNumber : undefined,
|
||||
type: 'number',
|
||||
required: true,
|
||||
@@ -281,14 +287,14 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
}),
|
||||
new InputBase({
|
||||
controlName: 'minValue',
|
||||
label: 'Minimum',
|
||||
label: this.translateService.instant('labels.inputs.Minimum'),
|
||||
value: values ? values.minValue : undefined,
|
||||
type: 'number',
|
||||
order: 3
|
||||
}),
|
||||
new InputBase({
|
||||
controlName: 'defaultValue',
|
||||
label: 'Default',
|
||||
label: this.translateService.instant('labels.inputs.Default'),
|
||||
value: values ? values.defaultValue : undefined,
|
||||
type: 'number',
|
||||
required: true,
|
||||
@@ -296,7 +302,7 @@ export class LoanProductTermsStepComponent implements OnInit, OnChanges {
|
||||
}),
|
||||
new InputBase({
|
||||
controlName: 'maxValue',
|
||||
label: 'Maximum',
|
||||
label: this.translateService.instant('labels.inputs.Maximum'),
|
||||
value: values ? values.maxValue : undefined,
|
||||
type: 'number',
|
||||
order: 5
|
||||
|
||||
+3
-3
@@ -28,21 +28,21 @@
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
{{ charge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
{{ charge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
|
||||
+16
-16
@@ -48,22 +48,22 @@
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType | find:savingProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType | find:savingProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType | find:savingProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType | find:savingProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType | find:savingProductsTemplate.interestCalculationTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType | find:savingProductsTemplate.interestCalculationTypeOptions:'id':'value' | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType | find:savingProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType | find:savingProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Settings' | translate}}</h3>
|
||||
@@ -72,12 +72,12 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredOpeningBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Opening Balance' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.lockinPeriodFrequency + ' ' + (savingProduct.lockinPeriodFrequencyType | find:savingProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.lockinPeriodFrequency + ' ' + (savingProduct.lockinPeriodFrequencyType | find:savingProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minBalanceForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Balance Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -117,17 +117,17 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minOverdraftForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minOverdraftForInterestCalculation }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minOverdraftForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.nominalAnnualInterestRateOverdraft">
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft | formatNumber }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.overdraftLimit">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -162,21 +162,21 @@
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
{{ charge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
{{ charge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -187,11 +187,11 @@
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details
|
||||
<mifosx-view-savings-accounting-details fxFlex="100%"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
>
|
||||
|
||||
+1
-2
@@ -33,9 +33,8 @@ export class SavingProductPreviewStepComponent implements OnInit, OnChanges {
|
||||
}
|
||||
|
||||
setCurrentValues(): void {
|
||||
|
||||
this.accountingRule = this.accounting.getAccountingRuleFrom(this.savingProduct.accountingRule);
|
||||
if (this.isCashOrAccrualAccounting()) {
|
||||
this.accountingRule = this.accounting.getAccountingRuleFrom(this.savingProduct.accountingRule);
|
||||
|
||||
const assetAccountData = this.savingProductsTemplate.accountingMappingOptions.assetAccountOptions || [];
|
||||
const incomeAccountData = this.savingProductsTemplate.accountingMappingOptions.incomeAccountOptions || [];
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-select formControlName="lockinPeriodFrequencyType">
|
||||
<mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id">
|
||||
{{ lockinPeriodFrequencyType.value }}
|
||||
{{ lockinPeriodFrequencyType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
+4
-4
@@ -16,7 +16,7 @@
|
||||
<mat-label>{{'labels.inputs.Interest Compounding Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCompoundingPeriodType" matTooltip="The period at which interest rate is compounded" required>
|
||||
<mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id">
|
||||
{{ interestCompoundingPeriodType.value }}
|
||||
{{ interestCompoundingPeriodType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -28,7 +28,7 @@
|
||||
<mat-label>{{'labels.inputs.Interest Posting Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestPostingPeriodType" matTooltip="The period at which interest rate is posted or credited to a saving account" required>
|
||||
<mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id">
|
||||
{{ interestPostingPeriodType.value }}
|
||||
{{ interestPostingPeriodType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -40,7 +40,7 @@
|
||||
<mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationType" matTooltip="The method used to calculate interest" required>
|
||||
<mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id">
|
||||
{{ interestCalculationType.value }}
|
||||
{{ interestCalculationType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
@@ -52,7 +52,7 @@
|
||||
<mat-label>{{'labels.inputs.Days in Year' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationDaysInYearType" matTooltip="The setting for number of days in year to use to calculate interest" required>
|
||||
<mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id">
|
||||
{{ interestCalculationDaysInYearType.value }}
|
||||
{{ interestCalculationDaysInYearType.value | translateCatalog }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
|
||||
+12
-12
@@ -57,22 +57,22 @@
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType.value }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType.value }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType.value }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType.value }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType.value | translateCatalog }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredOpeningBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Opening Balance' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.lockinPeriodFrequency">
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minBalanceForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Balance Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -132,12 +132,12 @@
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.nominalAnnualInterestRateOverdraft">
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.overdraftLimit">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit }}</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -172,21 +172,21 @@
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
{{ charge.chargeCalculationType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
{{ charge.chargeTimeType.value | translateCatalog }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user