Fixed Deposit products with i18n

This commit is contained in:
Jose Alberto Hernandez
2024-04-20 16:47:03 -06:00
committed by Jose Alberto Hernandez
parent 6ef471d7c0
commit d846a8068f
25 changed files with 570 additions and 565 deletions
@@ -349,7 +349,7 @@
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
{{"labels.buttons.Previous" | translate }} {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button [routerLink]="['../']"> <button mat-raised-button [routerLink]="['../..']">
{{"labels.buttons.Cancel" | translate }} {{"labels.buttons.Cancel" | translate }}
</button> </button>
<button mat-raised-button color="primary" (click)="submit.emit()"> <button mat-raised-button color="primary" (click)="submit.emit()">
@@ -349,7 +349,7 @@
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
{{"labels.buttons.Previous" | translate }} {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button [routerLink]="['../']"> <button mat-raised-button [routerLink]="['../..']">
{{"labels.buttons.Cancel" | translate }} {{"labels.buttons.Cancel" | translate }}
</button> </button>
<button mat-raised-button color="primary" (click)="submit.emit()"> <button mat-raised-button color="primary" (click)="submit.emit()">
@@ -59,15 +59,6 @@
<h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4> <h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4>
<table> <table>
<tbody> <tbody>
<tr>
<td>{{"labels.inputs.External Id" | translate }}</td>
<td>
<span *ngIf="recurringDepositsAccountData.externalId">
<mifosx-external-identifier externalId="{{recurringDepositsAccountData.externalId}}" completed="true"></mifosx-external-identifier>
</span>
<span *ngIf="!recurringDepositsAccountData.externalId"> {{"labels.inputs.Not Available" | translate}} </span>
</td>
</tr>
<tr> <tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td> <td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td class="r-amount"> <td class="r-amount">
@@ -267,7 +267,7 @@
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
{{"labels.buttons.Previous" | translate}} {{"labels.buttons.Previous" | translate}}
</button> </button>
<button mat-raised-button [routerLink]="['../']"> <button mat-raised-button [routerLink]="['../..']">
{{"labels.buttons.Cancel" | translate}} {{"labels.buttons.Cancel" | translate}}
</button> </button>
<button mat-raised-button color="primary" (click)="submit.emit()"> <button mat-raised-button color="primary" (click)="submit.emit()">
@@ -24,7 +24,7 @@
<mat-step [stepControl]="fixedDepositProductDetailsForm"> <mat-step [stepControl]="fixedDepositProductDetailsForm">
<ng-template matStepLabel>DETAILS</ng-template> <ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-details-step></mifosx-fixed-deposit-product-details-step> <mifosx-fixed-deposit-product-details-step></mifosx-fixed-deposit-product-details-step>
@@ -32,7 +32,7 @@
<mat-step [stepControl]="fixedDepositProductCurrencyForm"> <mat-step [stepControl]="fixedDepositProductCurrencyForm">
<ng-template matStepLabel>CURRENCY</ng-template> <ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
<mifosx-fixed-deposit-product-currency-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-currency-step> <mifosx-fixed-deposit-product-currency-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-currency-step>
@@ -40,7 +40,7 @@
<mat-step [stepControl]="fixedDepositProductTermsForm"> <mat-step [stepControl]="fixedDepositProductTermsForm">
<ng-template matStepLabel>TERMS</ng-template> <ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-terms-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-terms-step> <mifosx-fixed-deposit-product-terms-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-terms-step>
@@ -48,7 +48,7 @@
<mat-step [stepControl]="fixedDepositProductSettingsForm"> <mat-step [stepControl]="fixedDepositProductSettingsForm">
<ng-template matStepLabel>SETTINGS</ng-template> <ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-settings-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-settings-step> <mifosx-fixed-deposit-product-settings-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-settings-step>
@@ -56,7 +56,7 @@
<mat-step [stepControl]="fixedDepositProductInterestRateChartForm"> <mat-step [stepControl]="fixedDepositProductInterestRateChartForm">
<ng-template matStepLabel>INTEREST RATE CHART</ng-template> <ng-template matStepLabel>{{'labels.inputs.INTEREST RATE CHART' | translate}}</ng-template>
<mifosx-fixed-deposit-product-interest-rate-chart-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-interest-rate-chart-step> <mifosx-fixed-deposit-product-interest-rate-chart-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"></mifosx-fixed-deposit-product-interest-rate-chart-step>
@@ -64,7 +64,7 @@
<mat-step> <mat-step>
<ng-template matStepLabel>CHARGES</ng-template> <ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
<mifosx-fixed-deposit-product-charges-step <mifosx-fixed-deposit-product-charges-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
@@ -76,7 +76,7 @@
<mat-step [stepControl]="fixedDepositProductAccountingForm"> <mat-step [stepControl]="fixedDepositProductAccountingForm">
<ng-template matStepLabel>ACCOUNTING</ng-template> <ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
<mifosx-fixed-deposit-product-accounting-step <mifosx-fixed-deposit-product-accounting-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
@@ -89,7 +89,7 @@
<mat-step state="preview" *ngIf="fixedDepositProductFormValid" completed> <mat-step state="preview" *ngIf="fixedDepositProductFormValid" completed>
<ng-template matStepLabel>PREVIEW</ng-template> <ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
<mifosx-fixed-deposit-product-preview-step <mifosx-fixed-deposit-product-preview-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
@@ -24,7 +24,7 @@
<mat-step [stepControl]="fixedDepositProductDetailsForm"> <mat-step [stepControl]="fixedDepositProductDetailsForm">
<ng-template matStepLabel>DETAILS</ng-template> <ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-details-step <mifosx-fixed-deposit-product-details-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"> [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
@@ -34,7 +34,7 @@
<mat-step [stepControl]="fixedDepositProductCurrencyForm"> <mat-step [stepControl]="fixedDepositProductCurrencyForm">
<ng-template matStepLabel>CURRENCY</ng-template> <ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
<mifosx-fixed-deposit-product-currency-step <mifosx-fixed-deposit-product-currency-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"> [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
@@ -44,7 +44,7 @@
<mat-step [stepControl]="fixedDepositProductTermsForm"> <mat-step [stepControl]="fixedDepositProductTermsForm">
<ng-template matStepLabel>TERMS</ng-template> <ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-terms-step <mifosx-fixed-deposit-product-terms-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"> [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
@@ -54,7 +54,7 @@
<mat-step [stepControl]="fixedDepositProductSettingsForm"> <mat-step [stepControl]="fixedDepositProductSettingsForm">
<ng-template matStepLabel>SETTINGS</ng-template> <ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
<mifosx-fixed-deposit-product-settings-step <mifosx-fixed-deposit-product-settings-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"> [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
@@ -64,7 +64,7 @@
<mat-step [stepControl]="fixedDepositProductInterestRateChartForm"> <mat-step [stepControl]="fixedDepositProductInterestRateChartForm">
<ng-template matStepLabel>INTEREST RATE CHART</ng-template> <ng-template matStepLabel>{{'labels.inputs.INTEREST RATE CHART' | translate}}</ng-template>
<mifosx-fixed-deposit-product-interest-rate-chart-step <mifosx-fixed-deposit-product-interest-rate-chart-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"> [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
@@ -74,7 +74,7 @@
<mat-step> <mat-step>
<ng-template matStepLabel>CHARGES</ng-template> <ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
<mifosx-fixed-deposit-product-charges-step <mifosx-fixed-deposit-product-charges-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
@@ -85,7 +85,7 @@
<mat-step [stepControl]="fixedDepositProductAccountingForm"> <mat-step [stepControl]="fixedDepositProductAccountingForm">
<ng-template matStepLabel>ACCOUNTING</ng-template> <ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
<mifosx-fixed-deposit-product-accounting-step <mifosx-fixed-deposit-product-accounting-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [accountingRuleData]="accountingRuleData" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [accountingRuleData]="accountingRuleData"
@@ -96,7 +96,7 @@
<mat-step state="preview" *ngIf="fixedDepositProductFormValidAndNotPrinstine" completed> <mat-step state="preview" *ngIf="fixedDepositProductFormValidAndNotPrinstine" completed>
<ng-template matStepLabel>PREVIEW</ng-template> <ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
<mifosx-fixed-deposit-product-preview-step <mifosx-fixed-deposit-product-preview-step
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
@@ -2,9 +2,10 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-radio-group fxFlex="98%" fxLayout="row" fxLayoutGap="5%" fxLayout.lt-md="column" formControlName="accountingRule"> <mat-radio-group fxFlex="98%" fxLayout="row" fxLayoutGap="5%" fxLayout.lt-md="column"
formControlName="accountingRule">
<mat-radio-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1"> <mat-radio-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
{{ accountingRule }} {{ 'labels.accounting.' + accountingRule | translate }}
</mat-radio-button> </mat-radio-button>
</mat-radio-group> </mat-radio-group>
@@ -16,26 +17,17 @@
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.savingsReferenceAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.savingsReferenceAccountId"
[glAccountList]="assetAccountData" [glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Saving reference'">
[required]="true"
[inputLabel]="'Saving reference'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()" <mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
[inputFormControl]="fixedDepositProductAccountingForm.controls.feesReceivableAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.feesReceivableAccountId"
[glAccountList]="assetAccountData" [glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Fees Receivable'">
[required]="true"
[inputLabel]="'Fees Receivable'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()" <mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
[inputFormControl]="fixedDepositProductAccountingForm.controls.penaltiesReceivableAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.penaltiesReceivableAccountId"
[glAccountList]="assetAccountData" [glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Penalties Receivable'">
[required]="true"
[inputLabel]="'Penalties Receivable'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
@@ -44,26 +36,17 @@
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.savingsControlAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.savingsControlAccountId"
[glAccountList]="liabilityAccountData" [glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Saving control'">
[required]="true"
[inputLabel]="'Saving control'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.transfersInSuspenseAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.transfersInSuspenseAccountId"
[glAccountList]="liabilityAccountData" [glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Savings transfers in suspense'">
[required]="true"
[inputLabel]="'Savings transfers in suspense'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()" <mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
[inputFormControl]="fixedDepositProductAccountingForm.controls.interestPayableAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.interestPayableAccountId"
[glAccountList]="liabilityAccountData" [glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Interest Payable'">
[required]="true"
[inputLabel]="'Interest Payable'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
@@ -72,10 +55,7 @@
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.interestOnSavingsAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.interestOnSavingsAccountId"
[glAccountList]="expenseAccountData" [glAccountList]="expenseAccountData" [required]="true" [inputLabel]="'Interest on savings'">
[required]="true"
[inputLabel]="'Interest on savings'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
@@ -84,168 +64,180 @@
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromFeeAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromFeeAccountId"
[glAccountList]="incomeAccountData" [glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from fees'">
[required]="true"
[inputLabel]="'Income from fees'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mifosx-gl-account-selector fxFlex="48%" <mifosx-gl-account-selector fxFlex="48%"
[inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromPenaltyAccountId" [inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromPenaltyAccountId"
[glAccountList]="incomeAccountData" [glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from penalties'">
[required]="true"
[inputLabel]="'Income from penalties'"
>
</mifosx-gl-account-selector> </mifosx-gl-account-selector>
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<h3 fxFlex="23%" class="mat-h3">Advanced Accounting Rules</h3> <h3 fxFlex="23%" class="mat-h3">{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules"></mat-checkbox> <mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules"></mat-checkbox>
<div *ngIf="fixedDepositProductAccountingForm.value.advancedAccountingRules" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div *ngIf="fixedDepositProductAccountingForm.value.advancedAccountingRules" fxFlexFill fxLayout="row wrap"
fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="33%" class="mat-h4">Configure Fund Sources for Payment Channels</h4> <div fxFlex="100%" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Configure Fund Sources for Payment Channels' | translate}}
</h4>
<div fxFlex="63%"> <div fxFlex="33%">
<button type="button" mat-raised-button color="primary" (click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)"> <button type="button" mat-raised-button color="primary"
<fa-icon icon="plus" class="m-r-10"></fa-icon> (click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)">
Add <fa-icon icon="plus" class="m-r-10"></fa-icon>
</button> {{'labels.buttons.Add' | translate}}
</button>
</div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="paymentChannelToFundSourceMappings.value"
*ngIf="paymentChannelToFundSourceMappings.value.length !== 0">
<ng-container matColumnDef="paymentTypeId">
<th mat-header-cell *matHeaderCellDef> Payment Type </th>
<td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.paymentTypeId | find:paymentTypeData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="fundSourceAccountId">
<th mat-header-cell *matHeaderCellDef> Fund Source </th>
<td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.fundSourceAccountId | find:assetAccountData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let paymentFundSource; let i = index">
<button mat-icon-button color="primary"
(click)="edit('PaymentFundSource', paymentChannelToFundSourceMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(paymentChannelToFundSourceMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
</table>
</div>
<div fxFlex="100%" *ngIf="existCharges()">
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Map Fees to Specific Income Accounts' | translate}}</h4>
<div fxFlex="33%">
<button type="button" mat-raised-button color="primary"
(click)="add('FeesIncome', feeToIncomeAccountMappings)">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{'labels.buttons.Add' | translate}}
</button>
</div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value"
*ngIf="feeToIncomeAccountMappings.value.length !== 0">
<ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Fees </th>
<td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th>
<td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let feesIncome; let i = index">
<button mat-icon-button color="primary" (click)="edit('FeesIncome', feeToIncomeAccountMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(feeToIncomeAccountMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
</table>
</div> </div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="paymentChannelToFundSourceMappings.value" *ngIf="paymentChannelToFundSourceMappings.value.length !== 0"> <div fxFlex="100%" *ngIf="existCharges()">
<ng-container matColumnDef="paymentTypeId"> <h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Map Penalties to Specific Income Accounts' | translate}}
<th mat-header-cell *matHeaderCellDef> Payment Type </th> </h4>
<td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.paymentTypeId | find:paymentTypeData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="fundSourceAccountId"> <div fxFlex="33%">
<th mat-header-cell *matHeaderCellDef> Fund Source </th> <button type="button" mat-raised-button color="primary"
<td mat-cell *matCellDef="let paymentFundSource"> (click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
{{ paymentFundSource.fundSourceAccountId | find:assetAccountData:'id':'name' }} <fa-icon icon="plus" class="m-r-10"></fa-icon>
</td> {{'labels.buttons.Add' | translate}}
</ng-container> </button>
</div>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let paymentFundSource; let i = index">
<button mat-icon-button color="primary" (click)="edit('PaymentFundSource', paymentChannelToFundSourceMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(paymentChannelToFundSourceMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr> <table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value"
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr> *ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
</table> <ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Penalty </th>
<td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
</td>
</ng-container>
<h4 fxFlex="33%" class="mat-h4">Map Fees to Specific Income Accounts</h4> <ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th>
<td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
<button mat-icon-button color="primary"
(click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(penaltyToIncomeAccountMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
</table>
<div fxFlex="63%">
<button type="button" mat-raised-button color="primary" (click)="add('FeesIncome', feeToIncomeAccountMappings)">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
Add
</button>
</div> </div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value" *ngIf="feeToIncomeAccountMappings.value.length !== 0">
<ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Fees </th>
<td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th>
<td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let feesIncome; let i = index">
<button mat-icon-button color="primary" (click)="edit('FeesIncome', feeToIncomeAccountMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(feeToIncomeAccountMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
</table>
<h4 fxFlex="33%" class="mat-h4">Map Penalties to Specific Income Accounts</h4>
<div fxFlex="63%">
<button type="button" mat-raised-button color="primary" (click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
Add
</button>
</div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value" *ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
<ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Penalty </th>
<td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th>
<td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
<button mat-icon-button color="primary" (click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
<fa-icon icon="edit"></fa-icon>
</button>
<button mat-icon-button color="warn" (click)="delete(penaltyToIncomeAccountMappings, i)">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
</table>
</div> </div>
</div> </div>
</div> </div>
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext [disabled]="!fixedDepositProductFormValid"> <button mat-raised-button matStepperNext [disabled]="!fixedDepositProductFormValid">
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -119,6 +119,10 @@ export class FixedDepositProductAccountingStepComponent implements OnInit {
}); });
} }
existCharges(): boolean {
return (this.chargeData.length > 0);
}
setConditionalControls() { setConditionalControls() {
this.fixedDepositProductAccountingForm.get('accountingRule').valueChanges this.fixedDepositProductAccountingForm.get('accountingRule').valueChanges
.subscribe((accountingRule: any) => { .subscribe((accountingRule: any) => {
@@ -1,7 +1,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Charge</mat-label> <mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
<mat-select #charge> <mat-select #charge>
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" [value]="charge"> <mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" [value]="charge">
{{ charge.name }} {{ charge.name }}
@@ -12,42 +12,42 @@
<div fxFlex="48%" fxFlexAlign="center"> <div fxFlex="48%" fxFlexAlign="center">
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value"> <button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add {{'labels.buttons.Add' | translate}}
</button> </button>
</div> </div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0"> <table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0">
<ng-container matColumnDef="name"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.name + ', ' + charge.currency.displaySymbol }} {{ charge.name + ', ' + charge.currency.displaySymbol }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeCalculationType"> <ng-container matColumnDef="chargeCalculationType">
<th mat-header-cell *matHeaderCellDef> Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeCalculationType.value }} {{ charge.chargeCalculationType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.amount }} {{ charge.amount | formatNumber }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeTimeType"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeTimeType.value }} {{ charge.chargeTimeType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="action"> <ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> Actions </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
<button mat-icon-button color="warn" (click)="deleteCharge(charge)"> <button mat-icon-button color="warn" (click)="deleteCharge(charge)">
<fa-icon icon="trash"></fa-icon> <fa-icon icon="trash"></fa-icon>
@@ -65,10 +65,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -3,30 +3,30 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Currency</mat-label> <mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
<mat-select formControlName="currencyCode" required> <mat-select formControlName="currencyCode" required>
<mat-option *ngFor="let currency of currencyData" [value]="currency.code"> <mat-option *ngFor="let currency of currencyData" [value]="currency.code">
{{ currency.name }} {{ currency.name }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Currency is <strong>required</strong> {{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Decimal Places</mat-label> <mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
<input type="number" matInput formControlName="digitsAfterDecimal" required> <input type="number" matInput formControlName="digitsAfterDecimal" required>
<mat-error> <mat-error>
Decimal Places is <strong>required</strong> {{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Currency in multiples of</mat-label> <mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
<input type="number" matInput formControlName="inMultiplesOf"> <input type="number" matInput formControlName="inMultiplesOf">
<mat-error> <mat-error>
Currency in multiples of is <strong>required</strong> {{'labels.inputs.Currency in multiples of' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
@@ -35,10 +35,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -3,26 +3,26 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Product Name</mat-label> <mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
<input matInput formControlName="name" required> <input matInput formControlName="name" required>
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.name.hasError('required')"> <mat-error *ngIf="fixedDepositProductDetailsForm.controls.name.hasError('required')">
Product Name is <strong>required</strong> {{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Short Name</mat-label> <mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
<input matInput formControlName="shortName" maxlength="4" required> <input matInput formControlName="shortName" maxlength="4" required>
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.shortName.hasError('required')"> <mat-error *ngIf="fixedDepositProductDetailsForm.controls.shortName.hasError('required')">
Short Name is <strong>required</strong> {{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="98%"> <mat-form-field fxFlex="98%">
<mat-label>Description</mat-label> <mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
<textarea matInput formControlName="description" required></textarea> <textarea matInput formControlName="description" required></textarea>
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.description.hasError('required')"> <mat-error *ngIf="fixedDepositProductDetailsForm.controls.description.hasError('required')">
Description is <strong>required</strong> {{'labels.inputs.Description' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
@@ -31,10 +31,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious disabled> <button mat-raised-button matStepperPrevious disabled>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -2,14 +2,14 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="13%" class="mat-h3">Interest Rate Chart<i class='fas fa-question' <h4 fxFlex="83%" class="mat-h3">{{ 'labels.inputs.Interest Rate Chart' | translate}} <i class='fas fa-question'
matTooltip="The interest rate chart provides the information required to calculate the interest payable on a fixed deposit account based on the fixed deposit product."></i> matTooltip="The interest rate chart provides the information required to calculate the interest payable on a fixed deposit account based on the fixed deposit product."></i>
</h4> </h4>
<div fxFlex="83%" fxLayout="row" fxLayoutAlign="start center"> <div fxFlex="13%" fxLayout="row" fxLayoutAlign="start center">
<button type="button" mat-raised-button color="primary" (click)="addChart()"> <button type="button" mat-raised-button color="primary" (click)="addChart()">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add {{'labels.buttons.Add' | translate}}
</button> </button>
</div> </div>
@@ -28,52 +28,55 @@
</div> </div>
<mat-form-field fxFlex="32%"> <mat-form-field fxFlex="32%">
<mat-label>Name</mat-label> <mat-label>{{ 'labels.inputs.Name' | translate}}</mat-label>
<input matInput formControlName="name" required> <input matInput formControlName="name" required>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%" (click)="validFromDatePicker.open()"> <mat-form-field fxFlex="31%" (click)="validFromDatePicker.open()">
<mat-label>Valid from Date</mat-label> <mat-label>{{ 'labels.inputs.From Date' | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="validFromDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="validFromDatePicker"
formControlName="fromDate" required> formControlName="fromDate" required>
<mat-datepicker-toggle matSuffix [for]="validFromDatePicker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="validFromDatePicker"></mat-datepicker-toggle>
<mat-datepicker #validFromDatePicker></mat-datepicker> <mat-datepicker #validFromDatePicker></mat-datepicker>
<mat-error> <mat-error>
Valid from Date is <strong>required</strong> Valid from Date {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%" (click)="endDatePicker.open()"> <mat-form-field fxFlex="31%" (click)="endDatePicker.open()">
<mat-label>End Date</mat-label> <mat-label>{{ 'labels.inputs.End Date' | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate"> <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate">
<mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
<mat-datepicker #endDatePicker></mat-datepicker> <mat-datepicker #endDatePicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="65%"> <mat-form-field fxFlex="65%">
<mat-label>Description</mat-label> <mat-label>{{ 'labels.inputs.Description' | translate}}</mat-label>
<textarea matInput formControlName="description" required></textarea> <textarea matInput formControlName="description" required></textarea>
</mat-form-field> </mat-form-field>
<div fxFlex="31%" fxLayout="row" fxLayoutAlign="space-between center"> <div fxFlex="31%" fxLayout="row" fxLayoutAlign="space-between center">
<mat-checkbox labelPosition="before" formControlName="isPrimaryGroupingByAmount"> <mat-checkbox labelPosition="before" formControlName="isPrimaryGroupingByAmount">
Is primary grouping by amount? {{ 'labels.inputs.Is primary grouping by amount?' | translate}}
</mat-checkbox> </mat-checkbox>
</div>
<div fxFlex="100%" class="center">
<button type="button" mat-raised-button color="primary" (click)="addChartSlab(chart.controls.chartSlabs)"> <button type="button" mat-raised-button color="primary" (click)="addChartSlab(chart.controls.chartSlabs)">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add Slab {{ 'labels.buttons.Add Slab' | translate}}
</button> </button>
</div> </div>
<div fxFlex="100%" *ngIf="chart.value.chartSlabs.length === 0"> <div fxFlex="100%" *ngIf="chart.value.chartSlabs.length === 0">
<h3 class="mat-h3">It is required to add at least one Slab</h3> <h3 class="mat-h3">{{ 'labels.heading.It is required to add at least one Slab' | translate}}</h3>
</div> </div>
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chart.value.chartSlabs" <table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chart.value.chartSlabs"
*ngIf="chart.value.chartSlabs.length !== 0" multiTemplateDataRows> *ngIf="chart.value.chartSlabs.length !== 0" multiTemplateDataRows>
<ng-container matColumnDef="period"> <ng-container matColumnDef="period">
<th mat-header-cell *matHeaderCellDef> Period </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Period' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType | {{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType |
find:periodTypeData:'id':'value') }} find:periodTypeData:'id':'value') }}
@@ -81,28 +84,28 @@
</ng-container> </ng-container>
<ng-container matColumnDef="amountRange"> <ng-container matColumnDef="amountRange">
<th mat-header-cell *matHeaderCellDef> Amount Range </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Amount Range' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }} {{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="annualInterestRate"> <ng-container matColumnDef="annualInterestRate">
<th mat-header-cell *matHeaderCellDef> Interest </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.annualInterestRate }} % {{ chartSlab.annualInterestRate }} %
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="description"> <ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef> Description </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Description' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.description }} {{ chartSlab.description }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="actions"> <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 chartSlab; let chartSlabIndex = dataIndex"> <td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
<button mat-icon-button color="primary" <button mat-icon-button color="primary"
(click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)"> (click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)">
@@ -115,11 +118,11 @@
(click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex"> (click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex">
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex"> <span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
<fa-icon icon="eye" class="m-r-10"></fa-icon> <fa-icon icon="eye" class="m-r-10"></fa-icon>
View Incentives {{ 'labels.buttons.View Incentives' | translate}}
</span> </span>
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex"> <span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon> <fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
Hide Incentives {{ 'labels.buttons.Hide Incentives' | translate}}
</span> </span>
</button> </button>
</td> </td>
@@ -134,15 +137,15 @@
<mat-card fxLayout="row wrap" fxFlexFill> <mat-card fxLayout="row wrap" fxFlexFill>
<h4 class="mat-h4" fxFlex="13%"> <h4 class="mat-h4" fxFlex="63%">
Incentives {{ 'labels.heading.Incentives' | translate}}
</h4> </h4>
<div fxFlex="83%"> <div fxFlex="13%">
<button mat-raised-button color="primary" <button mat-raised-button color="primary"
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))"> (click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add {{ 'labels.buttons.Add' | translate}}
</button> </button>
</div> </div>
@@ -150,28 +153,28 @@
*ngIf="chartSlab.incentives.length"> *ngIf="chartSlab.incentives.length">
<ng-container matColumnDef="entityType"> <ng-container matColumnDef="entityType">
<th mat-header-cell *matHeaderCellDef> Entity Type </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Entity Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.entityType | find:entityTypeData:'id':'value' }} {{ incentive.entityType | find:entityTypeData:'id':'value' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="attributeName"> <ng-container matColumnDef="attributeName">
<th mat-header-cell *matHeaderCellDef> Attribute Name </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Name' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.attributeName | find:attributeNameData:'id':'value' }} {{ incentive.attributeName | find:attributeNameData:'id':'value' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="conditionType"> <ng-container matColumnDef="conditionType">
<th mat-header-cell *matHeaderCellDef> Condition Type </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.conditionType | find:conditionTypeData:'id':'value' }} {{ incentive.conditionType | find:conditionTypeData:'id':'value' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="attributeValue"> <ng-container matColumnDef="attributeValue">
<th mat-header-cell *matHeaderCellDef> Attribute Value </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Value' | translate}} </th>
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName"> <td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
<span *ngSwitchCase="2">{{ incentive.attributeValue | find:genderData:'id':'name' }}</span> <span *ngSwitchCase="2">{{ incentive.attributeValue | find:genderData:'id':'name' }}</span>
<span *ngSwitchCase="3">{{ incentive.attributeValue }}</span> <span *ngSwitchCase="3">{{ incentive.attributeValue }}</span>
@@ -182,21 +185,21 @@
</ng-container> </ng-container>
<ng-container matColumnDef="incentiveType"> <ng-container matColumnDef="incentiveType">
<th mat-header-cell *matHeaderCellDef> Incentive Type </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Incentive Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.incentiveType | find:incentiveTypeData:'id':'value'}} {{ incentive.incentiveType | find:incentiveTypeData:'id':'value'}}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef> Interest </th> <th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.amount }} {{ incentive.amount }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="actions"> <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 incentive; let incentiveIndex = index"> <td mat-cell *matCellDef="let incentive; let incentiveIndex = index">
<button mat-icon-button color="primary" <button mat-icon-button color="primary"
(click)="editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)"> (click)="editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)">
@@ -234,10 +237,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -18,6 +18,7 @@ import { InputBase } from 'app/shared/form-dialog/formfield/model/input-base';
/** Custom Services */ /** Custom Services */
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'mifosx-fixed-deposit-product-interest-rate-chart-step', selector: 'mifosx-fixed-deposit-product-interest-rate-chart-step',
@@ -67,7 +68,8 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
constructor(private formBuilder: UntypedFormBuilder, constructor(private formBuilder: UntypedFormBuilder,
public dialog: MatDialog, public dialog: MatDialog,
private dateUtils: Dates, private dateUtils: Dates,
private settingsService: SettingsService) { private settingsService: SettingsService,
private translateService: TranslateService) {
this.createFixedDepositProductInterestRateChartForm(); this.createFixedDepositProductInterestRateChartForm();
} }
@@ -314,7 +316,7 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
getData(formType: string, values?: any) { getData(formType: string, values?: any) {
switch (formType) { switch (formType) {
case 'Slab': return { title: 'Slab', formfields: this.getSlabFormfields(values) }; case 'Slab': return { title: this.translateService.instant('labels.inputs.Slab'), formfields: this.getSlabFormfields(values) };
case 'Incentive': return { values, chartTemplate: this.fixedDepositProductsTemplate.chartTemplate }; case 'Incentive': return { values, chartTemplate: this.fixedDepositProductsTemplate.chartTemplate };
} }
} }
@@ -323,7 +325,7 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
const formfields: FormfieldBase[] = [ const formfields: FormfieldBase[] = [
new SelectBase({ new SelectBase({
controlName: 'periodType', controlName: 'periodType',
label: 'Period Type', label: this.translateService.instant('labels.inputs.Period Type'),
value: values ? values.periodType : this.periodTypeData[0].id, value: values ? values.periodType : this.periodTypeData[0].id,
options: { label: 'value', value: 'id', data: this.periodTypeData }, options: { label: 'value', value: 'id', data: this.periodTypeData },
required: true, required: true,
@@ -331,7 +333,7 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
}), }),
new InputBase({ new InputBase({
controlName: 'fromPeriod', controlName: 'fromPeriod',
label: 'Period From', label: this.translateService.instant('labels.inputs.Period From'),
value: values ? values.fromPeriod : undefined, value: values ? values.fromPeriod : undefined,
type: 'number', type: 'number',
required: true, required: true,
@@ -339,28 +341,28 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
}), }),
new InputBase({ new InputBase({
controlName: 'toPeriod', controlName: 'toPeriod',
label: 'Period To', label: this.translateService.instant('labels.inputs.Period To'),
value: values ? values.toPeriod : undefined, value: values ? values.toPeriod : undefined,
type: 'number', type: 'number',
order: 3 order: 3
}), }),
new InputBase({ new InputBase({
controlName: 'amountRangeFrom', controlName: 'amountRangeFrom',
label: 'Amount Range From', label: this.translateService.instant('labels.inputs.Amount Range From'),
value: values ? values.amountRangeFrom : undefined, value: values ? values.amountRangeFrom : undefined,
type: 'number', type: 'number',
order: 4 order: 4
}), }),
new InputBase({ new InputBase({
controlName: 'amountRangeTo', controlName: 'amountRangeTo',
label: 'Amount Range To', label: this.translateService.instant('labels.inputs.Amount Range To'),
value: values ? values.amountRangeTo : undefined, value: values ? values.amountRangeTo : undefined,
type: 'number', type: 'number',
order: 5 order: 5
}), }),
new InputBase({ new InputBase({
controlName: 'annualInterestRate', controlName: 'annualInterestRate',
label: 'Interest', label: this.translateService.instant('labels.inputs.Interest'),
value: values ? values.annualInterestRate : undefined, value: values ? values.annualInterestRate : undefined,
type: 'number', type: 'number',
required: true, required: true,
@@ -368,7 +370,7 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
}), }),
new InputBase({ new InputBase({
controlName: 'description', controlName: 'description',
label: 'Description', label: this.translateService.instant('labels.inputs.Description'),
value: values ? values.description : undefined, value: values ? values.description : undefined,
required: true, required: true,
order: 7 order: 7
@@ -380,13 +382,19 @@ export class FixedDepositProductInterestRateChartStepComponent implements OnInit
get fixedDepositProductInterestRateChart() { get fixedDepositProductInterestRateChart() {
// TODO: Update once language and date settings are setup // TODO: Update once language and date settings are setup
const locale = this.settingsService.language.code; const locale = this.settingsService.language.code;
const dateFormat = this.settingsService.dateFormat; const dateFormat = 'YYYY-MM-DD';
const fixedDepositProductInterestRateChart = this.fixedDepositProductInterestRateChartForm.value; const fixedDepositProductInterestRateChart = this.fixedDepositProductInterestRateChartForm.value;
for (const chart of fixedDepositProductInterestRateChart.charts) { for (const chart of fixedDepositProductInterestRateChart.charts) {
chart.dateFormat = dateFormat;
chart.locale = locale; chart.locale = locale;
chart.fromDate = this.dateUtils.formatDate(chart.fromDate, dateFormat) || ''; chart.dateFormat = 'yyyy-MM-dd';
chart.endDate = this.dateUtils.formatDate(chart.endDate, dateFormat) || ''; if (chart.fromDate instanceof Date) {
chart.fromDate = this.dateUtils.formatDateAsString(chart.fromDate, dateFormat);
}
if (chart.endDate) {
if (chart.endDate instanceof Date) {
chart.endDate = this.dateUtils.formatDateAsString(chart.endDate, dateFormat);
}
}
if (chart.endDate === '') { if (chart.endDate === '') {
delete chart.endDate; delete chart.endDate;
} }
@@ -4,46 +4,46 @@
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<h3 class="mat-h3" fxFlexFill>Details</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Short Name:</span> <span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.shortName }}</span> <span fxFlex="60%">{{ fixedDepositProduct.shortName }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProduct.description"> <div fxFlexFill *ngIf="fixedDepositProduct.description">
<span fxFlex="40%">Description:</span> <span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.description }}</span> <span fxFlex="60%">{{ fixedDepositProduct.description }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Currency</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Currency:</span> <span fxFlex="40%">{{'labels.inputs.Currency' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.currencyCode | <span fxFlex="60%">{{ fixedDepositProduct.currencyCode |
find:fixedDepositProductsTemplate.currencyOptions:'code':'name' }}</span> find:fixedDepositProductsTemplate.currencyOptions:'code':'name' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Decimal Places:</span> <span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.digitsAfterDecimal }}</span> <span fxFlex="60%">{{ fixedDepositProduct.digitsAfterDecimal }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Currency in multiples of:</span> <span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOf }}</span> <span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOf }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Terms</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Deposit Amount:</span> <span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.depositAmount + ' (Min: ' + (fixedDepositProduct.minDepositAmount ? <span fxFlex="60%">{{ fixedDepositProduct.depositAmount + ' (Min: ' + (fixedDepositProduct.minDepositAmount ?
fixedDepositProduct.minDepositAmount : fixedDepositProduct.depositAmount) + ', Max: ' + fixedDepositProduct.minDepositAmount : fixedDepositProduct.depositAmount) + ', Max: ' +
(fixedDepositProduct.maxDepositAmount ? fixedDepositProduct.maxDepositAmount : fixedDepositProduct.depositAmount) (fixedDepositProduct.maxDepositAmount ? fixedDepositProduct.maxDepositAmount : fixedDepositProduct.depositAmount)
@@ -51,85 +51,85 @@
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Compounding Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.interestCompoundingPeriodType | <span fxFlex="60%">{{ fixedDepositProduct.interestCompoundingPeriodType |
find:fixedDepositProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span> find:fixedDepositProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Posting Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.interestPostingPeriodType | <span fxFlex="60%">{{ fixedDepositProduct.interestPostingPeriodType |
find:fixedDepositProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span> find:fixedDepositProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Calculated using:</span> <span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.interestCalculationType | <span fxFlex="60%">{{ fixedDepositProduct.interestCalculationType |
find:fixedDepositProductsTemplate.interestCalculationTypeOptions:'id':'value' }}</span> find:fixedDepositProductsTemplate.interestCalculationTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Days in Year:</span> <span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.interestCalculationDaysInYearType | <span fxFlex="60%">{{ fixedDepositProduct.interestCalculationDaysInYearType |
find:fixedDepositProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span> find:fixedDepositProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Settings</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill *ngIf="fixedDepositProduct.lockinPeriodFrequency"> <div fxFlexFill *ngIf="fixedDepositProduct.lockinPeriodFrequency">
<span fxFlex="40%">Lock-in Period:</span> <span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.lockinPeriodFrequency + ' ' + <span fxFlex="60%">{{ fixedDepositProduct.lockinPeriodFrequency + ' ' +
(fixedDepositProduct.lockinPeriodFrequencyType | (fixedDepositProduct.lockinPeriodFrequencyType |
find:fixedDepositProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span> find:fixedDepositProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Minimum Deposit Term:</span> <span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.minDepositTerm + ' ' + (fixedDepositProduct.minDepositTermTypeId | <span fxFlex="60%">{{ fixedDepositProduct.minDepositTerm + ' ' + (fixedDepositProduct.minDepositTermTypeId |
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span> find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProduct.inMultiplesOfDepositTerm"> <div fxFlexFill *ngIf="fixedDepositProduct.inMultiplesOfDepositTerm">
<span fxFlex="40%">And thereafter, in Multiples of:</span> <span fxFlex="40%">{{'labels.inputs.And thereafter, in Multiples of' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOfDepositTerm + ' ' + <span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOfDepositTerm + ' ' +
(fixedDepositProduct.inMultiplesOfDepositTermTypeId | (fixedDepositProduct.inMultiplesOfDepositTermTypeId |
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span> find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProduct.maxDepositTerm"> <div fxFlexFill *ngIf="fixedDepositProduct.maxDepositTerm">
<span fxFlex="40%">Maximum Deposit Term:</span> <span fxFlex="40%">{{'labels.inputs.Maximum Deposit Term' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.maxDepositTerm + ' ' + (fixedDepositProduct.maxDepositTermTypeId | <span fxFlex="60%">{{ fixedDepositProduct.maxDepositTerm + ' ' + (fixedDepositProduct.maxDepositTermTypeId |
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span> find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
</div> </div>
<!-- For Pre-mature closure --> <!-- For Pre-mature closure -->
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Apply Penal Interest (less):</span> <span fxFlex="40%">{{'labels.inputs.Apply Penal Interest (less)' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalApplicable | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalApplicable | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProduct.preClosurePenalApplicable"> <div fxFlexFill *ngIf="fixedDepositProduct.preClosurePenalApplicable">
<span fxFlex="40%">Penal Interest (%):</span> <span fxFlex="40%">{{'labels.inputs.Penal Interest' | translate}} (%):</span>
<span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalInterest + '% (' + <span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalInterest + '% (' +
(fixedDepositProduct.preClosurePenalInterestOnTypeId | (fixedDepositProduct.preClosurePenalInterestOnTypeId |
find:fixedDepositProductsTemplate.preClosurePenalInterestOnTypeOptions:'id':'value') + ')' }}</span> find:fixedDepositProductsTemplate.preClosurePenalInterestOnTypeOptions:'id':'value') + ')' }}</span>
</div> </div>
<!-- --> <!-- -->
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Withhold Tax is Applicable:</span> <span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.withHoldTax | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProduct.withHoldTax | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProduct.withHoldTax"> <div fxFlexFill *ngIf="fixedDepositProduct.withHoldTax">
<span fxFlex="40%">Tax Group:</span> <span fxFlex="40%">{{'labels.inputs.Tax Group' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.taxGroupId | find:fixedDepositProductsTemplate.taxGroupOptions:'id':'name' <span fxFlex="60%">{{ fixedDepositProduct.taxGroupId | find:fixedDepositProductsTemplate.taxGroupOptions:'id':'name'
}}</span> }}</span>
</div> </div>
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" *ngIf="fixedDepositProduct.charts.length !== 0"> <div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" *ngIf="fixedDepositProduct.charts.length !== 0">
<h3 class="mat-h3" fxFlexFill>Interest Rate Charts</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Charts' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
@@ -137,27 +137,27 @@
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<div fxFlexFill *ngIf="chart.name"> <div fxFlexFill *ngIf="chart.name">
<span fxFlex="40%">Name:</span> <span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
<span fxFlex="60%">{{ chart.name }}</span> <span fxFlex="60%">{{ chart.name }}</span>
</div> </div>
<div fxFlexFill *ngIf="chart.description"> <div fxFlexFill *ngIf="chart.description">
<span fxFlex="40%">Description:</span> <span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
<span fxFlex="60%">{{ chart.description }}</span> <span fxFlex="60%">{{ chart.description }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Valid from Date:</span> <span fxFlex="40%">{{'labels.inputs.From Date' | translate}}:</span>
<span fxFlex="60%">{{ chart.fromDate | dateFormat }}</span> <span fxFlex="60%">{{ chart.fromDate | dateFormat }}</span>
</div> </div>
<div fxFlexFill *ngIf="chart.endDate"> <div fxFlexFill *ngIf="chart.endDate">
<span fxFlex="40%">End Date:</span> <span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
<span fxFlex="60%">{{ chart.endDate | dateFormat }}</span> <span fxFlex="60%">{{ chart.endDate | dateFormat }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Primary Grouping by Amount:</span> <span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProduct.isPrimaryGroupingByAmount | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProduct.isPrimaryGroupingByAmount | yesNo }}</span>
</div> </div>
@@ -165,7 +165,7 @@
*ngIf="chart.chartSlabs.length !== 0" multiTemplateDataRows> *ngIf="chart.chartSlabs.length !== 0" multiTemplateDataRows>
<ng-container matColumnDef="period"> <ng-container matColumnDef="period">
<th mat-header-cell *matHeaderCellDef> Period </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType | {{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType |
find:fixedDepositProductsTemplate.chartTemplate.periodTypes:'id':'value') }} find:fixedDepositProductsTemplate.chartTemplate.periodTypes:'id':'value') }}
@@ -173,39 +173,39 @@
</ng-container> </ng-container>
<ng-container matColumnDef="amountRange"> <ng-container matColumnDef="amountRange">
<th mat-header-cell *matHeaderCellDef> Amount Range </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }} {{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="annualInterestRate"> <ng-container matColumnDef="annualInterestRate">
<th mat-header-cell *matHeaderCellDef> Interest </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.annualInterestRate }} {{ chartSlab.annualInterestRate }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="description"> <ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef> Description </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.description }} {{ chartSlab.description }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="actions"> <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 chartSlab; let chartSlabIndex = dataIndex"> <td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
<button mat-button color="primary" <button mat-button color="primary"
(click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex" (click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex"
[disabled]="chartSlab.incentives.length === 0"> [disabled]="chartSlab.incentives.length === 0">
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex"> <span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
<fa-icon icon="eye" class="m-r-10"></fa-icon> <fa-icon icon="eye" class="m-r-10"></fa-icon>
View Incentives {{'labels.buttons.View Incentives' | translate}}
</span> </span>
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex"> <span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon> <fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
Hide Incentives {{'labels.buttons.Hide Incentives' | translate}}
</span> </span>
</button> </button>
</td> </td>
@@ -219,13 +219,13 @@
<mat-card fxLayout="row wrap" fxFlexFill> <mat-card fxLayout="row wrap" fxFlexFill>
<h4 class="mat-h4" fxFlex="23%"> <h4 class="mat-h4" fxFlex="23%">
Incentives {{'labels.heading.Incentives' | translate}}
</h4> </h4>
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives"> <table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
<ng-container matColumnDef="entityType"> <ng-container matColumnDef="entityType">
<th mat-header-cell *matHeaderCellDef> Entity Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.entityType | {{ incentive.entityType |
find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
@@ -233,7 +233,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="attributeName"> <ng-container matColumnDef="attributeName">
<th mat-header-cell *matHeaderCellDef> Attribute Name </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.attributeName | {{ incentive.attributeName |
find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
@@ -241,7 +241,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="conditionType"> <ng-container matColumnDef="conditionType">
<th mat-header-cell *matHeaderCellDef> Condition Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.conditionType | {{ incentive.conditionType |
find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
@@ -249,7 +249,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="attributeValue"> <ng-container matColumnDef="attributeValue">
<th mat-header-cell *matHeaderCellDef> Attribute Value </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName"> <td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
<span *ngSwitchCase="2">{{ incentive.attributeValue | <span *ngSwitchCase="2">{{ incentive.attributeValue |
find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span> find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
@@ -263,7 +263,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="incentiveType"> <ng-container matColumnDef="incentiveType">
<th mat-header-cell *matHeaderCellDef> Incentive Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.incentiveType | {{ incentive.incentiveType |
find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}} find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
@@ -271,9 +271,9 @@
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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 incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.amount }} {{ incentive.amount | formatNumber}}
</td> </td>
</ng-container> </ng-container>
@@ -301,35 +301,35 @@
<div fxFlexFill *ngIf="fixedDepositProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column"> <div fxFlexFill *ngIf="fixedDepositProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Charges</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Charges' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProduct.charges"> <table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProduct.charges">
<ng-container matColumnDef="name"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.name + ', ' + charge.currency.displaySymbol }} {{ charge.name + ', ' + charge.currency.displaySymbol }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeCalculationType"> <ng-container matColumnDef="chargeCalculationType">
<th mat-header-cell *matHeaderCellDef> Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeCalculationType.value }} {{ charge.chargeCalculationType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.amount }} {{ charge.amount }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeTimeType"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeTimeType.value }} {{ charge.chargeTimeType.value }}
</td> </td>
@@ -342,41 +342,39 @@
</div> </div>
<h3 class="mat-h3" fxFlexFill>Accounting</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<mifosx-view-savings-accounting-details *ngIf="!isNoneAccounting()" <mifosx-view-savings-accounting-details *ngIf="!isNoneAccounting()" [accountingRule]="accountingRule"
[accountingRule]="accountingRule" [accountingMappings]="accountingMappings">
[accountingMappings]="accountingMappings"
>
</mifosx-view-savings-accounting-details> </mifosx-view-savings-accounting-details>
<div <div
*ngIf="fixedDepositProduct.advancedAccountingRules && (fixedDepositProduct.paymentChannelToFundSourceMappings?.length || fixedDepositProduct.feeToIncomeAccountMappings?.length || fixedDepositProduct.penaltyToIncomeAccountMappings?.length)" *ngIf="fixedDepositProduct.advancedAccountingRules && (fixedDepositProduct.paymentChannelToFundSourceMappings?.length || fixedDepositProduct.feeToIncomeAccountMappings?.length || fixedDepositProduct.penaltyToIncomeAccountMappings?.length)"
fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column"> fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Advanced Accounting Rules</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div *ngIf="fixedDepositProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap" <div *ngIf="fixedDepositProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Fund Sources for Payment Channels</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fund Sources for Payment Channels' | translate}}</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProduct.paymentChannelToFundSourceMappings"> [dataSource]="fixedDepositProduct.paymentChannelToFundSourceMappings">
<ng-container matColumnDef="paymentTypeId"> <ng-container matColumnDef="paymentTypeId">
<th mat-header-cell *matHeaderCellDef> Payment Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
<td mat-cell *matCellDef="let paymentFundSource"> <td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.paymentTypeId | find:fixedDepositProductsTemplate.paymentTypeOptions:'id':'name' }} {{ paymentFundSource.paymentTypeId | find:fixedDepositProductsTemplate.paymentTypeOptions:'id':'name' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="fundSourceAccountId"> <ng-container matColumnDef="fundSourceAccountId">
<th mat-header-cell *matHeaderCellDef> Fund Source </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
<td mat-cell *matCellDef="let paymentFundSource"> <td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.fundSourceAccountId | {{ paymentFundSource.fundSourceAccountId |
find:fixedDepositProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }} find:fixedDepositProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }}
@@ -393,20 +391,20 @@
<div *ngIf="fixedDepositProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" <div *ngIf="fixedDepositProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Fees to Specific Income Accounts</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fees to Specific Income Accounts' | translate}}</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProduct.feeToIncomeAccountMappings"> [dataSource]="fixedDepositProduct.feeToIncomeAccountMappings">
<ng-container matColumnDef="chargeId"> <ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Fees </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
<td mat-cell *matCellDef="let feesIncome"> <td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.chargeId | find:fixedDepositProductsTemplate.chargeOptions:'id':'name' }} {{ feesIncome.chargeId | find:fixedDepositProductsTemplate.chargeOptions:'id':'name' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="incomeAccountId"> <ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
<td mat-cell *matCellDef="let feesIncome"> <td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.incomeAccountId | {{ feesIncome.incomeAccountId |
find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }} find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
@@ -423,20 +421,20 @@
<div *ngIf="fixedDepositProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" <div *ngIf="fixedDepositProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Penalties to Specific Income Accounts</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProduct.penaltyToIncomeAccountMappings"> [dataSource]="fixedDepositProduct.penaltyToIncomeAccountMappings">
<ng-container matColumnDef="chargeId"> <ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Penalty </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
<td mat-cell *matCellDef="let penaltyIncome"> <td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.chargeId | find:fixedDepositProductsTemplate.penaltyOptions:'id':'name' }} {{ penaltyIncome.chargeId | find:fixedDepositProductsTemplate.penaltyOptions:'id':'name' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="incomeAccountId"> <ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
<td mat-cell *matCellDef="let penaltyIncome"> <td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.incomeAccountId | {{ penaltyIncome.incomeAccountId |
find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }} find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
@@ -457,12 +455,12 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button [routerLink]="['../']"> <button mat-raised-button [routerLink]="['../']">
Cancel {{'labels.buttons.Cancel' | translate}}
</button> </button>
<button mat-raised-button color="primary" (click)="submit.emit()"> <button mat-raised-button color="primary" (click)="submit.emit()">
Submit {{'labels.buttons.Submit' | translate}}
</button> </button>
</div> </div>
@@ -2,15 +2,15 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="98%" class="mat-h4">Lock-in Period <i class='fas fa-question' matTooltip="A period of time during which a fixed deposit account based on this fixed deposit product will be locked-in after it is opened."></i></h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Lock-in Period' | translate}} <i class='fas fa-question' matTooltip="A period of time during which a fixed deposit account based on this fixed deposit product will be locked-in after it is opened."></i></h4>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency</mat-label> <mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
<input type="number" matInput formControlName="lockinPeriodFrequency"> <input type="number" matInput formControlName="lockinPeriodFrequency">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Type</mat-label> <mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
<mat-select formControlName="lockinPeriodFrequencyType"> <mat-select formControlName="lockinPeriodFrequencyType">
<mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id"> <mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id">
{{ lockinPeriodFrequencyType.value }} {{ lockinPeriodFrequencyType.value }}
@@ -18,37 +18,37 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<h4 fxFlex="98%" class="mat-h4">Minimum Deposit Term<i class='fas fa-question' matTooltip="The minimum length of time the funds must remain in the fixed deposit account to earn the full interest income."></i></h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Minimum Deposit Term' | translate}} <i class='fas fa-question' matTooltip="The minimum length of time the funds must remain in the fixed deposit account to earn the full interest income."></i></h4>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency</mat-label> <mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
<input type="number" matInput formControlName="minDepositTerm" required> <input type="number" matInput formControlName="minDepositTerm" required>
<mat-error> <mat-error>
Minimum Deposit Term Frequency is <strong>required</strong> {{'labels.inputs.Minimum Deposit Term Frequency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency Type</mat-label> <mat-label>{{'labels.inputs.Frequency Type' | translate}}</mat-label>
<mat-select formControlName="minDepositTermTypeId" required> <mat-select formControlName="minDepositTermTypeId" required>
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id"> <mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
{{ periodFrequencyType.value }} {{ periodFrequencyType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Minimum Deposit Term Frequency Type is <strong>required</strong> {{'labels.inputs.Minimum Deposit Term Frequency Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<h4 fxFlex="98%" class="mat-h4">And thereafter, in Multiples of <i class='fas fa-question-circle' matTooltip="After the minimum deposit term has passed, additional deposit durations may be specified."></i></h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.heading.And thereafter, in Multiples of' | translate}} <i class='fas fa-question-circle' matTooltip="After the minimum deposit term has passed, additional deposit durations may be specified."></i></h4>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency</mat-label> <mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
<input type="number" matInput formControlName="inMultiplesOfDepositTerm"> <input type="number" matInput formControlName="inMultiplesOfDepositTerm">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Type</mat-label> <mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
<mat-select formControlName="inMultiplesOfDepositTermTypeId"> <mat-select formControlName="inMultiplesOfDepositTermTypeId">
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id"> <mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
{{ periodFrequencyType.value }} {{ periodFrequencyType.value }}
@@ -56,15 +56,15 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<h4 fxFlex="98%" class="mat-h4">Maximum Deposit Term <i class='fas fa-question-circle' matTooltip="The maximum length of time funds may be deposited in a fixed deposit account based on this fixed deposit product."></i></h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Maximum Deposit Term' | translate}} <i class='fas fa-question-circle' matTooltip="The maximum length of time funds may be deposited in a fixed deposit account based on this fixed deposit product."></i></h4>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency</mat-label> <mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
<input type="number" matInput formControlName="maxDepositTerm"> <input type="number" matInput formControlName="maxDepositTerm">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Type</mat-label> <mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
<mat-select formControlName="maxDepositTermTypeId"> <mat-select formControlName="maxDepositTermTypeId">
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id"> <mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
{{ periodFrequencyType.value }} {{ periodFrequencyType.value }}
@@ -74,19 +74,19 @@
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<h4 fxFlex="23%" class="mat-h4">For Pre-mature closure <i class='fas fa-question-circle' matTooltip="This sections defines an interest penalty for pre-mature closure."></i></h4> <h4 fxFlex="23%" class="mat-h4">{{'labels.heading.For Pre-mature closure' | translate}} <i class='fas fa-question-circle' matTooltip="This sections defines an interest penalty for pre-mature closure."></i></h4>
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="preClosurePenalApplicable" class="margin-v"> <mat-checkbox fxFlex="73%" labelPosition="before" formControlName="preClosurePenalApplicable" class="margin-v">
Apply Penal Interest (less) {{'labels.inputs.Apply Penal Interest (less)' | translate}}
</mat-checkbox> </mat-checkbox>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Penal Interest (%)</mat-label> <mat-label>{{'labels.inputs.Penal Interest' | translate}} (%)</mat-label>
<input type="number" matInput formControlName="preClosurePenalInterest"> <input type="number" matInput formControlName="preClosurePenalInterest">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Period</mat-label> <mat-label>{{'labels.inputs.Period' | translate}}</mat-label>
<mat-select formControlName="preClosurePenalInterestOnTypeId"> <mat-select formControlName="preClosurePenalInterestOnTypeId">
<mat-option *ngFor="let preClosurePenalInterestOnType of preClosurePenalInterestOnTypeData" [value]="preClosurePenalInterestOnType.id"> <mat-option *ngFor="let preClosurePenalInterestOnType of preClosurePenalInterestOnTypeData" [value]="preClosurePenalInterestOnType.id">
{{ preClosurePenalInterestOnType.value }} {{ preClosurePenalInterestOnType.value }}
@@ -97,18 +97,18 @@
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withHoldTax" class="margin-v" matTooltip="An boolean flag to attach taxes to interest posting"> <mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withHoldTax" class="margin-v" matTooltip="An boolean flag to attach taxes to interest posting">
Is Withhold Tax Applicable? {{'labels.inputs.Is Withhold Tax Applicable' | translate}}
</mat-checkbox> </mat-checkbox>
<mat-form-field fxFlex="48%" *ngIf="fixedDepositProductSettingsForm.value.withHoldTax"> <mat-form-field fxFlex="48%" *ngIf="fixedDepositProductSettingsForm.value.withHoldTax">
<mat-label>Tax Group</mat-label> <mat-label>{{'labels.inputs.Tax Group' | translate}}</mat-label>
<mat-select formControlName="taxGroupId" required> <mat-select formControlName="taxGroupId" required>
<mat-option *ngFor="let taxGroup of taxGroupData" [value]="taxGroup.id"> <mat-option *ngFor="let taxGroup of taxGroupData" [value]="taxGroup.id">
{{ taxGroup.name }} {{ taxGroup.name }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Tax Group is <strong>required</strong> {{'labels.inputs.Tax Group' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
@@ -117,10 +117,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -2,23 +2,23 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h4 fxFlex="98%" class="mat-h4">Deposit Amount</h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Deposit Amount' | translate}}</h4>
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Minimum</mat-label> <mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
<input type="number" matInput formControlName="minDepositAmount" matTooltip="The minimum deposit amount required to open a fixed deposit account based on this fixed deposit product."> <input type="number" matInput formControlName="minDepositAmount" matTooltip="The minimum deposit amount required to open a fixed deposit account based on this fixed deposit product.">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Default</mat-label> <mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
<input type="number" matInput formControlName="depositAmount" matTooltip="The default deposit amount expected when a fixed deposit account based on this fixed deposit product is opened." required> <input type="number" matInput formControlName="depositAmount" matTooltip="The default deposit amount expected when a fixed deposit account based on this fixed deposit product is opened." required>
<mat-error> <mat-error>
Default Deposit Amount is <strong>required</strong> {{'labels.inputs.Default Deposit Amount' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Maximum</mat-label> <mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
<input type="number" matInput formControlName="maxDepositAmount" matTooltip="The maximum deposit amount allowed when a fixed deposit account based on this fixed deposit product is opened."> <input type="number" matInput formControlName="maxDepositAmount" matTooltip="The maximum deposit amount allowed when a fixed deposit account based on this fixed deposit product is opened.">
</mat-form-field> </mat-form-field>
@@ -26,50 +26,50 @@
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Compounding Period</mat-label> <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-select formControlName="interestCompoundingPeriodType" matTooltip="The period at which interest rate is compounded." required>
<mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id"> <mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id">
{{ interestCompoundingPeriodType.value }} {{ interestCompoundingPeriodType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Compounding Period is <strong>required</strong> {{'labels.inputs.Interest Compounding Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Posting Period</mat-label> <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 fixed deposit account based on this fixed deposit product." required> <mat-select formControlName="interestPostingPeriodType" matTooltip="The period at which interest rate is posted or credited to a fixed deposit account based on this fixed deposit product." required>
<mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id"> <mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id">
{{ interestPostingPeriodType.value }} {{ interestPostingPeriodType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Posting Period is <strong>required</strong> {{'labels.inputs.Interest Posting Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Calculated using</mat-label> <mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
<mat-select formControlName="interestCalculationType" matTooltip="The method used to calculate interest." required> <mat-select formControlName="interestCalculationType" matTooltip="The method used to calculate interest." required>
<mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id"> <mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id">
{{ interestCalculationType.value }} {{ interestCalculationType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Calculated using is <strong>required</strong> {{'labels.inputs.Interest Calculated using' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Days in Year</mat-label> <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-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"> <mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id">
{{ interestCalculationDaysInYearType.value }} {{ interestCalculationDaysInYearType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Days in Year is <strong>required</strong> {{'labels.inputs.Days in Year' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
@@ -78,10 +78,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{'labels.buttons.Previous' | translate}}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{'labels.buttons.Next' | translate}}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -2,7 +2,7 @@
<div #buttonCreateFixedProduct class="in-block"> <div #buttonCreateFixedProduct class="in-block">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_FIXEDDEPOSITPRODUCT'"> <button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_FIXEDDEPOSITPRODUCT'">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Create Fixed Deposit Product {{'labels.buttons.Create Fixed Deposit Product' | translate}}
</button> </button>
</div> </div>
</div> </div>
@@ -21,12 +21,12 @@
<table mat-table [dataSource]="dataSource" matSort> <table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="name"> <ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Name </th> <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
<td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.name }} </td> <td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.name }} </td>
</ng-container> </ng-container>
<ng-container matColumnDef="shortName"> <ng-container matColumnDef="shortName">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Short Name </th> <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Short Name' | translate}} </th>
<td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.shortName }} </td> <td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.shortName }} </td>
</ng-container> </ng-container>
@@ -45,26 +45,26 @@
<h2>Create fixed deposit product</h2> <h2>Create fixed deposit product</h2>
<p class="mw300">This option allows you to create new fixed deposit product.</p> <p class="mw300">This option allows you to create new fixed deposit product.</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">Close</button> <button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">Back</button> <button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">Next</button> <button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate}}</button>
</div> </div>
</ng-template> </ng-template>
<ng-template #templateFilter let-popover="popover"> <ng-template #templateFilter let-popover="popover">
<h4>Search bar to filter fixed deposit products.</h4> <h4>Search bar to filter fixed deposit products.</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">Close</button> <button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonCreateFixedProduct,buttonCreateFixedProduct , 'bottom', true)">Back</button> <button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonCreateFixedProduct,buttonCreateFixedProduct , 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFixedProductsTable,fixedProductsTable, 'top', true)">Next</button> <button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFixedProductsTable,fixedProductsTable, 'top', true)">{{'labels.buttons.Next' | translate}}</button>
</div> </div>
</ng-template> </ng-template>
<ng-template #templateFixedProductsTable let-popover="popover"> <ng-template #templateFixedProductsTable let-popover="popover">
<h4 class="mw300">List of fixed deposit products in the organization. For more details click: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629544/Fixed+Deposit+Products" target="_blank">Fixed Deposit Products</a></h4> <h4 class="mw300">List of fixed deposit products in the organization. For more details click: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629544/Fixed+Deposit+Products" target="_blank">{{'labels.inputs.Fixed Deposit Products' | translate}}</a></h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">Close</button> <button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">Back</button> <button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">Next</button> <button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
</div> </div>
</ng-template> </ng-template>
@@ -1,6 +1,7 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20"> <div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['../edit']" *mifosxHasPermission="'UPDATE_SAVINGSPRODUCT'"> <button mat-raised-button color="primary" [routerLink]="['../edit']" *mifosxHasPermission="'UPDATE_SAVINGSPRODUCT'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>Edit <fa-icon icon="edit" class="m-r-10"></fa-icon>
{{'labels.buttons.Edit' | translate}}
</button> </button>
</div> </div>
<div class="container"> <div class="container">
@@ -15,45 +16,45 @@
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<h3 class="mat-h3" fxFlexFill>Details</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Short Name:</span> <span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.shortName }}</span> <span fxFlex="60%">{{ fixedDepositProductData.shortName }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.description"> <div fxFlexFill *ngIf="fixedDepositProductData.description">
<span fxFlex="40%">Description:</span> <span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.description }}</span> <span fxFlex="60%">{{ fixedDepositProductData.description }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Currency</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Currency:</span> <span fxFlex="40%">{{'labels.heading.Currency' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.currency.name }}</span> <span fxFlex="60%">({{ fixedDepositProductData.currency.code }}) {{ fixedDepositProductData.currency.name }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Decimal Places:</span> <span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.currency.decimalPlaces }}</span> <span fxFlex="60%">{{ fixedDepositProductData.currency.decimalPlaces }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Currency in Multiples Of:</span> <span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.currency.inMultiplesOf | formatNumber}}</span> <span fxFlex="60%">{{ fixedDepositProductData.currency.inMultiplesOf | formatNumber}}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Terms</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Deposit Amount:</span> <span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.depositAmount + ' (Min: ' + <span fxFlex="60%">{{ fixedDepositProductData.depositAmount + ' (Min: ' +
(fixedDepositProductData.minDepositAmount ? fixedDepositProductData.minDepositAmount : (fixedDepositProductData.minDepositAmount ? fixedDepositProductData.minDepositAmount :
fixedDepositProductData.depositAmount) + ', Max: ' + (fixedDepositProductData.maxDepositAmount ? fixedDepositProductData.depositAmount) + ', Max: ' + (fixedDepositProductData.maxDepositAmount ?
@@ -61,38 +62,38 @@
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Compounding Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.interestCompoundingPeriodType.value }}</span> <span fxFlex="60%">{{ fixedDepositProductData.interestCompoundingPeriodType.value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Posting Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.interestPostingPeriodType.value }}</span> <span fxFlex="60%">{{ fixedDepositProductData.interestPostingPeriodType.value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Calculated Using:</span> <span fxFlex="40%">{{'labels.inputs.Interest Calculated Using' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.interestCalculationType.value }}</span> <span fxFlex="60%">{{ fixedDepositProductData.interestCalculationType.value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Days in Years:</span> <span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.interestCalculationDaysInYearType.value }}</span> <span fxFlex="60%">{{ fixedDepositProductData.interestCalculationDaysInYearType.value }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Settings</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill *ngIf="fixedDepositProductData.lockinPeriodFrequency"> <div fxFlexFill *ngIf="fixedDepositProductData.lockinPeriodFrequency">
<span fxFlex="40%">Lock-in Period:</span> <span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
<span fxFlex="60%"> <span fxFlex="60%">
{{ fixedDepositProductData.lockinPeriodFrequency }} {{ {{ fixedDepositProductData.lockinPeriodFrequency }} {{
fixedDepositProductData.lockinPeriodFrequencyType.value }}</span> fixedDepositProductData.lockinPeriodFrequencyType.value }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.minDepositTerm"> <div fxFlexFill *ngIf="fixedDepositProductData.minDepositTerm">
<span fxFlex="40%">Minimum Deposit Term:</span> <span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
<span fxFlex="60%" *ngIf="fixedDepositProductData.minDepositTerm !== undefined">{{ <span fxFlex="60%" *ngIf="fixedDepositProductData.minDepositTerm !== undefined">{{
fixedDepositProductData.minDepositTerm }} fixedDepositProductData.minDepositTerm }}
&nbsp; &nbsp;
@@ -100,7 +101,7 @@
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.maxDepositTerm"> <div fxFlexFill *ngIf="fixedDepositProductData.maxDepositTerm">
<span fxFlex="40%">Maximum Deposit Term:</span> <span fxFlex="40%">{{'labels.inputs.Maximum Deposit Term' | translate}}:</span>
<span fxFlex="60%" *ngIf="fixedDepositProductData.maxDepositTerm !== undefined">{{ <span fxFlex="60%" *ngIf="fixedDepositProductData.maxDepositTerm !== undefined">{{
fixedDepositProductData.maxDepositTerm }} fixedDepositProductData.maxDepositTerm }}
&nbsp; &nbsp;
@@ -108,69 +109,69 @@
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.inMultiplesOfDepositTerm"> <div fxFlexFill *ngIf="fixedDepositProductData.inMultiplesOfDepositTerm">
<span fxFlex="40%">Deposit Term In multiple of:</span> <span fxFlex="40%">{{'labels.inputs.Deposit Term In multiple of' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.inMultiplesOfDepositTerm }} <span fxFlex="60%">{{ fixedDepositProductData.inMultiplesOfDepositTerm }}
- -
{{ fixedDepositProductData.inMultiplesOfDepositTermType.value }}</span> {{ fixedDepositProductData.inMultiplesOfDepositTermType.value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Apply Penal Interest (less):</span> <span fxFlex="40%">{{'labels.inputs.Apply Penal Interest (less)' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.preClosurePenalApplicable | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProductData.preClosurePenalApplicable | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.preClosurePenalApplicable"> <div fxFlexFill *ngIf="fixedDepositProductData.preClosurePenalApplicable">
<span fxFlex="40%">Penal Interest (%):</span> <span fxFlex="40%">{{'labels.inputs.Penal Interest' | translate}} (%):</span>
<span fxFlex="60%">{{fixedDepositProductData.preClosurePenalInterest}} &nbsp; &nbsp; % &nbsp; &nbsp; On <span fxFlex="60%">{{fixedDepositProductData.preClosurePenalInterest}} &nbsp; &nbsp; % &nbsp; &nbsp; On
&nbsp;&nbsp; &nbsp;&nbsp;
{{fixedDepositProductData.preClosurePenalInterestOnType.value}}</span> {{fixedDepositProductData.preClosurePenalInterestOnType.value}}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.minBalanceForInterestCalculation"> <div fxFlexFill *ngIf="fixedDepositProductData.minBalanceForInterestCalculation">
<span fxFlex="40%">Balance Required For Interest Calculation:</span> <span fxFlex="40%">{{'labels.inputs.Balance Required For Interest Calculation' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.minBalanceForInterestCalculation | formatNumber }}</span> <span fxFlex="60%">{{ fixedDepositProductData.minBalanceForInterestCalculation | formatNumber }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Is withhold tax Applicable:</span> <span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.withHoldTax | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProductData.withHoldTax | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.withHoldTax"> <div fxFlexFill *ngIf="fixedDepositProductData.withHoldTax">
<span fxFlex="40%">Withhold Tax group:</span> <span fxFlex="40%">{{'labels.inputs.Withhold Tax group' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.taxGroup.name }}</span> <span fxFlex="60%">{{ fixedDepositProductData.taxGroup.name }}</span>
</div> </div>
<div *ngIf="fixedDepositProductData.activeChart" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column"> <div *ngIf="fixedDepositProductData.activeChart" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Interest Rate Chart</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Chart' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column"> <div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.name"> <div fxFlexFill *ngIf="fixedDepositProductData.activeChart.name">
<span fxFlex="40%">Name:</span> <span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.name }}</span> <span fxFlex="60%">{{ fixedDepositProductData.activeChart.name }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.description"> <div fxFlexFill *ngIf="fixedDepositProductData.activeChart.description">
<span fxFlex="40%">Description:</span> <span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.description }}</span> <span fxFlex="60%">{{ fixedDepositProductData.activeChart.description }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Valid from Date:</span> <span fxFlex="40%">{{'labels.inputs.From Date' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.fromDate | dateFormat }}</span> <span fxFlex="60%">{{ fixedDepositProductData.activeChart.fromDate | dateFormat }}</span>
</div> </div>
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.endDate"> <div fxFlexFill *ngIf="fixedDepositProductData.activeChart.endDate">
<span fxFlex="40%">End Date:</span> <span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.endDate | dateFormat }}</span> <span fxFlex="60%">{{ fixedDepositProductData.activeChart.endDate | dateFormat }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Primary Grouping by Amount:</span> <span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.isPrimaryGroupingByAmount | yesNo }}</span> <span fxFlex="60%">{{ fixedDepositProductData.activeChart.isPrimaryGroupingByAmount | yesNo }}</span>
</div> </div>
@@ -178,7 +179,7 @@
[dataSource]="fixedDepositProductData.activeChart.chartSlabs" multiTemplateDataRows> [dataSource]="fixedDepositProductData.activeChart.chartSlabs" multiTemplateDataRows>
<ng-container matColumnDef="period"> <ng-container matColumnDef="period">
<th mat-header-cell *matHeaderCellDef> Period </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
<div *ngIf="chartSlab.fromPeriod !== undefined"> <div *ngIf="chartSlab.fromPeriod !== undefined">
{{ chartSlab.fromPeriod }} - {{ chartSlab.toPeriod }} {{ chartSlab.periodType.value }} {{ chartSlab.fromPeriod }} - {{ chartSlab.toPeriod }} {{ chartSlab.periodType.value }}
@@ -190,7 +191,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="amountRange"> <ng-container matColumnDef="amountRange">
<th mat-header-cell *matHeaderCellDef> Amount Range </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
<div *ngIf="chartSlab.amountRangeFrom !== undefined"> <div *ngIf="chartSlab.amountRangeFrom !== undefined">
{{ chartSlab.amountRangeFrom }} - {{ chartSlab.amountRangeTo }} {{ chartSlab.amountRangeFrom }} - {{ chartSlab.amountRangeTo }}
@@ -203,31 +204,31 @@
</ng-container> </ng-container>
<ng-container matColumnDef="annualInterestRate"> <ng-container matColumnDef="annualInterestRate">
<th mat-header-cell *matHeaderCellDef> Interest </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.annualInterestRate }} % {{ chartSlab.annualInterestRate }} %
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="description"> <ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef> Description </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
<td mat-cell *matCellDef="let chartSlab"> <td mat-cell *matCellDef="let chartSlab">
{{ chartSlab.description }} {{ chartSlab.description }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="actions"> <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 chartSlab; let chartSlabIndex = dataIndex"> <td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
<button mat-button color="primary" <button mat-button color="primary"
(click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex"> (click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex">
<span *ngIf="expandChartSlabIndex !== chartSlabIndex"> <span *ngIf="expandChartSlabIndex !== chartSlabIndex">
<fa-icon icon="eye" class="m-r-10"></fa-icon> <fa-icon icon="eye" class="m-r-10"></fa-icon>
View Incentives {{'labels.buttons.View Incentives' | translate}}
</span> </span>
<span *ngIf="expandChartSlabIndex === chartSlabIndex"> <span *ngIf="expandChartSlabIndex === chartSlabIndex">
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon> <fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
Hide Incentives {{'labels.buttons.Hide Incentives' | translate}}
</span> </span>
</button> </button>
</td> </td>
@@ -241,13 +242,13 @@
<mat-card fxLayout="row wrap" fxFlexFill> <mat-card fxLayout="row wrap" fxFlexFill>
<h4 class="mat-h4" fxFlex="23%"> <h4 class="mat-h4" fxFlex="23%">
Incentives {{'labels.heading.Incentives' | translate}}
</h4> </h4>
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives"> <table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
<ng-container matColumnDef="entityType"> <ng-container matColumnDef="entityType">
<th mat-header-cell *matHeaderCellDef> Entity Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.entityType | {{ incentive.entityType |
find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
@@ -255,7 +256,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="attributeName"> <ng-container matColumnDef="attributeName">
<th mat-header-cell *matHeaderCellDef> Attribute Name </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.attributeName | {{ incentive.attributeName |
find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
@@ -263,7 +264,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="conditionType"> <ng-container matColumnDef="conditionType">
<th mat-header-cell *matHeaderCellDef> Condition Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.conditionType | {{ incentive.conditionType |
find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }} find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
@@ -271,7 +272,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="attributeValue"> <ng-container matColumnDef="attributeValue">
<th mat-header-cell *matHeaderCellDef> Attribute Value </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName"> <td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
<span *ngSwitchCase="2">{{ incentive.attributeValue | <span *ngSwitchCase="2">{{ incentive.attributeValue |
find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span> find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
@@ -285,7 +286,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="incentiveType"> <ng-container matColumnDef="incentiveType">
<th mat-header-cell *matHeaderCellDef> Incentive Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
<td mat-cell *matCellDef="let incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.incentiveType | {{ incentive.incentiveType |
find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}} find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
@@ -293,9 +294,9 @@
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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 incentive"> <td mat-cell *matCellDef="let incentive">
{{ incentive.amount }} {{ incentive.amount | formatNumber }}
</td> </td>
</ng-container> </ng-container>
@@ -322,35 +323,35 @@
<div *ngIf="fixedDepositProductData.charges.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column"> <div *ngIf="fixedDepositProductData.charges.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Charges</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Charges' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProductData.charges"> <table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProductData.charges">
<ng-container matColumnDef="name"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.name }} {{ charge.name }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="type"> <ng-container matColumnDef="type">
<th mat-header-cell *matHeaderCellDef> Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeCalculationType.value }} {{ charge.chargeCalculationType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.amount | formatNumber }} {{ charge.amount | formatNumber }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="collectedon"> <ng-container matColumnDef="collectedon">
<th mat-header-cell *matHeaderCellDef> Collected On </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeTimeType.value }} {{ charge.chargeTimeType.value }}
</td> </td>
@@ -363,42 +364,42 @@
</div> </div>
<h3 class="mat-h3" fxFlexFill>Accounting</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<mifosx-view-savings-accounting-details class="container" <mifosx-view-savings-accounting-details class="container"
[accountingRule]="fixedDepositProductData.accountingRule" [accountingRule]="fixedDepositProductData.accountingRule"
[accountingMappings]="fixedDepositProductData.accountingMappings" [accountingMappings]="fixedDepositProductData.accountingMappings">
>
</mifosx-view-savings-accounting-details> </mifosx-view-savings-accounting-details>
<div fxFlexFill <div fxFlexFill
*ngIf="fixedDepositProductData.advancedAccountingRules && (fixedDepositProductData.paymentChannelToFundSourceMappings?.length || fixedDepositProductData.feeToIncomeAccountMappings?.length || fixedDepositProductData.penaltyToIncomeAccountMappings?.length)" *ngIf="fixedDepositProductData.advancedAccountingRules && (fixedDepositProductData.paymentChannelToFundSourceMappings?.length || fixedDepositProductData.feeToIncomeAccountMappings?.length || fixedDepositProductData.penaltyToIncomeAccountMappings?.length)"
fxLayout="row wrap" fxLayout.lt-md="column"> fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Advanced Accounting Rules</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<hr> <hr>
<div *ngIf="fixedDepositProductData.paymentChannelToFundSourceMappings?.length" fxFlexFill <div *ngIf="fixedDepositProductData.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout="row wrap" fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Configure Fund Sources for Payment Channels</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Configure Fund Sources for Payment Channels' | translate}}
</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProductData.paymentChannelToFundSourceMappings"> [dataSource]="fixedDepositProductData.paymentChannelToFundSourceMappings">
<ng-container matColumnDef="paymentTypeId"> <ng-container matColumnDef="paymentTypeId">
<th mat-header-cell *matHeaderCellDef> Payment Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
<td mat-cell *matCellDef="let paymentFundSource"> <td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.paymentType.name }} {{ paymentFundSource.paymentType.name }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="fundSourceAccountId"> <ng-container matColumnDef="fundSourceAccountId">
<th mat-header-cell *matHeaderCellDef> Fund Source </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
<td mat-cell *matCellDef="let paymentFundSource"> <td mat-cell *matCellDef="let paymentFundSource">
{{ paymentFundSource.fundSourceAccount.name }} {{ paymentFundSource.fundSourceAccount.name }}
</td> </td>
@@ -414,20 +415,20 @@
<div *ngIf="fixedDepositProductData.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" <div *ngIf="fixedDepositProductData.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Fees to Specific Income Accounts</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Fees to Specific Income Accounts' | translate}}</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProductData.feeToIncomeAccountMappings"> [dataSource]="fixedDepositProductData.feeToIncomeAccountMappings">
<ng-container matColumnDef="chargeId"> <ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Fees </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
<td mat-cell *matCellDef="let feesIncome"> <td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.charge.name }} {{ feesIncome.charge.name }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="incomeAccountId"> <ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
<td mat-cell *matCellDef="let feesIncome"> <td mat-cell *matCellDef="let feesIncome">
{{ feesIncome.incomeAccount.name }} {{ feesIncome.incomeAccount.name }}
</td> </td>
@@ -443,20 +444,20 @@
<div *ngIf="fixedDepositProductData.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" <div *ngIf="fixedDepositProductData.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
fxLayout.lt-md="column"> fxLayout.lt-md="column">
<h4 class="mat-h4" fxFlexFill>Penalties to Specific Income Accounts</h4> <h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
<table fxFlexFill class="mat-elevation-z1" mat-table <table fxFlexFill class="mat-elevation-z1" mat-table
[dataSource]="fixedDepositProductData.penaltyToIncomeAccountMappings"> [dataSource]="fixedDepositProductData.penaltyToIncomeAccountMappings">
<ng-container matColumnDef="chargeId"> <ng-container matColumnDef="chargeId">
<th mat-header-cell *matHeaderCellDef> Penalty </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
<td mat-cell *matCellDef="let penaltyIncome"> <td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.charge.name }} {{ penaltyIncome.charge.name }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="incomeAccountId"> <ng-container matColumnDef="incomeAccountId">
<th mat-header-cell *matHeaderCellDef> Income Account </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
<td mat-cell *matCellDef="let penaltyIncome"> <td mat-cell *matCellDef="let penaltyIncome">
{{ penaltyIncome.incomeAccount.name }} {{ penaltyIncome.incomeAccount.name }}
</td> </td>
@@ -5,7 +5,7 @@
<nav mat-tab-nav-bar class="navigation-tabs"> <nav mat-tab-nav-bar class="navigation-tabs">
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive" <a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
[active]="general.isActive"> [active]="general.isActive">
General {{'labels.heading.General' | translate}}
</a> </a>
<ng-container *ngFor="let fixedDepositDatatable of fixedDepositDatatables"> <ng-container *ngFor="let fixedDepositDatatable of fixedDepositDatatables">
<a mat-tab-link [routerLink]="['./datatables',fixedDepositDatatable.registeredTableName]" routerLinkActive <a mat-tab-link [routerLink]="['./datatables',fixedDepositDatatable.registeredTableName]" routerLinkActive
@@ -2,9 +2,9 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h3 fxFlex="63%" class="mat-h3">{{ 'labels.heading.Interest Rate Charts' | translate}}</h3> <h3 fxFlex="83%" class="mat-h3">{{ 'labels.heading.Interest Rate Charts' | translate}}</h3>
<div fxFlex="33%" fxLayout="row" fxLayoutAlign="start center"> <div fxFlex="13%" fxLayout="row" fxLayoutAlign="start center">
<button type="button" mat-raised-button color="primary" (click)="addChart()"> <button type="button" mat-raised-button color="primary" (click)="addChart()">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Add' | translate}} {{ 'labels.buttons.Add' | translate}}
@@ -137,11 +137,11 @@
<mat-card fxLayout="row wrap" fxFlexFill> <mat-card fxLayout="row wrap" fxFlexFill>
<h4 class="mat-h4" fxFlex="63%"> <h4 class="mat-h4" fxFlex="83%">
{{ 'labels.heading.Incentives' | translate}} {{ 'labels.heading.Incentives' | translate}}
</h4> </h4>
<div fxFlex="33%"> <div fxFlex="13%">
<button mat-raised-button color="primary" <button mat-raised-button color="primary"
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))"> (click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
@@ -1,7 +1,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Charge</mat-label> <mat-label>{{'labels.inputs.Charge' | translate }}</mat-label>
<mat-select #charge> <mat-select #charge>
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" <mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value"
[value]="charge"> [value]="charge">
@@ -13,7 +13,7 @@
<div fxFlex="48%" fxFlexAlign="center"> <div fxFlex="48%" fxFlexAlign="center">
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value"> <button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
<fa-icon icon="plus" class="m-r-10"></fa-icon> <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add {{'labels.buttons.Add' | translate }}
</button> </button>
</div> </div>
@@ -21,23 +21,23 @@
*ngIf="chargesDataSource.length > 0"> *ngIf="chargesDataSource.length > 0">
<ng-container matColumnDef="name"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.name + ', ' + charge.currency.displaySymbol }} {{ charge.name + ', ' + charge.currency.displaySymbol }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeCalculationType"> <ng-container matColumnDef="chargeCalculationType">
<th mat-header-cell *matHeaderCellDef> Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate }} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeCalculationType.value }} {{ charge.chargeCalculationType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.amount }} {{ charge.amount | formatNumber }}
<button mat-icon-button color="primary" (click)="editChargeAmount(charge)"> <button mat-icon-button color="primary" (click)="editChargeAmount(charge)">
<fa-icon icon="pen"></fa-icon> <fa-icon icon="pen"></fa-icon>
</button> </button>
@@ -45,14 +45,14 @@
</ng-container> </ng-container>
<ng-container matColumnDef="chargeTimeType"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeTimeType.value }} {{ charge.chargeTimeType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="date"> <ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef> Date </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Date' | translate }} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
<span <span
*ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'"> *ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'">
@@ -73,9 +73,10 @@
</ng-container> </ng-container>
<ng-container matColumnDef="repaymentsEvery"> <ng-container matColumnDef="repaymentsEvery">
<th mat-header-cell *matHeaderCellDef> Repayments Every </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Repayments Every' | translate }} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.feeInterval || 'Not Provided' }} <span *ngIf="charge.feeInterval">{{ charge.feeInterval}}</span>
<span *ngIf="!charge.feeInterval">{{'labels.inputs.Not Provided' | translate }}</span>
<button mat-icon-button color="primary" <button mat-icon-button color="primary"
*ngIf="charge.chargeTimeType.value === 'Weekly Fee' || charge.chargeTimeType.value === 'Monthly Fee'" *ngIf="charge.chargeTimeType.value === 'Weekly Fee' || charge.chargeTimeType.value === 'Monthly Fee'"
(click)="editChargeFeeInterval(charge)"> (click)="editChargeFeeInterval(charge)">
@@ -85,7 +86,7 @@
</ng-container> </ng-container>
<ng-container matColumnDef="action"> <ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> Actions </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate }} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
<button mat-icon-button color="warn" (click)="deleteCharge(charge)"> <button mat-icon-button color="warn" (click)="deleteCharge(charge)">
<fa-icon icon="trash"></fa-icon> <fa-icon icon="trash"></fa-icon>
@@ -103,23 +104,23 @@
<!-- Check Column --> <!-- Check Column -->
<ng-container matColumnDef="check"> <ng-container matColumnDef="check">
<th mat-header-cell *matHeaderCellDef> <th mat-header-cell *matHeaderCellDef>
<mat-checkbox (change)="toggleSelects()" [(ngModel)]="selectAllItems"></mat-checkbox> <mat-checkbox (change)="toggleSelects()" [(ngModel)]="selectAllItems"></mat-checkbox>
</th> </th>
<td mat-cell *matCellDef="let element"> <td mat-cell *matCellDef="let element">
<mat-checkbox (change)="toggleSelect()" [(ngModel)]="element.selected"></mat-checkbox> <mat-checkbox (change)="toggleSelect()" [(ngModel)]="element.selected"></mat-checkbox>
</td> </td>
</ng-container> </ng-container>
<!-- Position Column --> <!-- Position Column -->
<ng-container matColumnDef="id"> <ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> Client ID </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Client ID' | translate }} </th>
<td mat-cell *matCellDef="let element"> {{element.id}} </td> <td mat-cell *matCellDef="let element"> {{element.id}} </td>
</ng-container> </ng-container>
<!-- Name Column --> <!-- Name Column -->
<ng-container matColumnDef="name"> <ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Client Name </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Client Name' | translate }} </th>
<td mat-cell *matCellDef="let element"> {{element.displayName}} </td> <td mat-cell *matCellDef="let element"> {{element.displayName}} </td>
</ng-container> </ng-container>
@@ -135,10 +136,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{"labels.buttons.Next" | translate }}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -3,30 +3,30 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Product Name</mat-label> <mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
<mat-select formControlName="productId" required> <mat-select formControlName="productId" required>
<mat-option *ngFor="let product of productData" [value]="product.id"> <mat-option *ngFor="let product of productData" [value]="product.id">
{{ product.name }} {{ product.name }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Product Name is <strong>required</strong> {{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%" (click)="submittedOnDatePicker.open()" *ngIf="savingsProductSelected"> <mat-form-field fxFlex="48%" (click)="submittedOnDatePicker.open()" *ngIf="savingsProductSelected">
<mat-label>Submitted On</mat-label> <mat-label>{{'labels.inputs.Submitted On' | translate}}</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submittedOnDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="submittedOnDatePicker"
formControlName="submittedOnDate" required> formControlName="submittedOnDate" required>
<mat-datepicker-toggle matSuffix [for]="submittedOnDatePicker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="submittedOnDatePicker"></mat-datepicker-toggle>
<mat-datepicker #submittedOnDatePicker></mat-datepicker> <mat-datepicker #submittedOnDatePicker></mat-datepicker>
<mat-error> <mat-error>
Submission Date is <strong>required</strong> {{'labels.inputs.Submitted On' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="savingsProductSelected"> <mat-form-field fxFlex="48%" *ngIf="savingsProductSelected">
<mat-label>Field Officer</mat-label> <mat-label>{{'labels.inputs.Field Officer' | translate}}</mat-label>
<mat-select formControlName="fieldOfficerId"> <mat-select formControlName="fieldOfficerId">
<mat-option *ngFor="let officer of fieldOfficerData" [value]="officer.id"> <mat-option *ngFor="let officer of fieldOfficerData" [value]="officer.id">
{{ officer.displayName }} {{ officer.displayName }}
@@ -35,7 +35,7 @@
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="savingsProductSelected"> <mat-form-field fxFlex="48%" *ngIf="savingsProductSelected">
<mat-label>External ID</mat-label> <mat-label>{{'labels.inputs.External ID' | translate}}</mat-label>
<input matInput formControlName="externalId"> <input matInput formControlName="externalId">
</mat-form-field> </mat-form-field>
@@ -44,10 +44,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious disabled> <button mat-raised-button matStepperPrevious disabled>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{"labels.buttons.Next" | translate }}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
@@ -1,151 +1,158 @@
<div fxLayout="row wrap" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Details</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Details' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Product</span> <span fxFlex="40%">{{'labels.inputs.Product' | translate}}</span>
<span fxFlex="60%">{{ savingsAccount.productId | find:savingsAccountTemplate.productOptions:'id':'name' }}</span> <span fxFlex="60%">{{ savingsAccount.productId | find:savingsAccountTemplate.productOptions:'id':'name' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Submitted On</span> <span fxFlex="40%">{{'labels.inputs.Submitted On' | translate}}</span>
<span fxFlex="60%">{{ savingsAccount.submittedOnDate | dateFormat }}</span> <span fxFlex="60%">{{ savingsAccount.submittedOnDate | dateFormat }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">External Id</span> <span fxFlex="40%">{{'labels.inputs.External Id' | translate}}</span>
<span fxFlex="60%" *ngIf="savingsAccount.externalId"> <span fxFlex="60%" *ngIf="savingsAccount.externalId">
<mifosx-external-identifier externalId="{{savingsAccount.externalId}}"></mifosx-external-identifier> <mifosx-external-identifier externalId="{{savingsAccount.externalId}}"></mifosx-external-identifier>
</span> </span>
<span fxFlex="60%" *ngIf="!savingsAccount.externalId"> <span fxFlex="60%" *ngIf="!savingsAccount.externalId">
Unassigned {{'labels.inputs.Unassigned' | translate}}
</span> </span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Field Officer</span> <span fxFlex="40%">{{'labels.inputs.Field Officer' | translate}}</span>
<span fxFlex="60%">{{ savingsAccount.fieldOfficerId | find:savingsAccountProductTemplate.fieldOfficerOptions:'id':'displayName' }}</span> <span fxFlex="60%">{{ savingsAccount.fieldOfficerId |
find:savingsAccountProductTemplate.fieldOfficerOptions:'id':'displayName' }}</span>
</div> </div>
<h3 class="mat-h3" fxFlexFill>Terms</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Currency</span> <span fxFlex="40%">{{'labels.inputs.Currency' | translate}}</span>
<span fxFlex="60%">{{ savingsAccountTermsForm.get('currencyCode').value }}</span> <span fxFlex="60%">{{ savingsAccountTermsForm.get('currencyCode').value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Decimal Places</span> <span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}</span>
<span fxFlex="60%">{{ savingsAccountTermsForm.get('decimal').value }}</span> <span fxFlex="60%">{{ savingsAccountTermsForm.get('decimal').value }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Nominal Annual Interest Rate:</span> <span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.nominalAnnualInterestRate }}</span> <span fxFlex="60%">{{ savingsAccount.nominalAnnualInterestRate | formatNumber }} %</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Compounding Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.interestCompoundingPeriodType | find:savingsAccountProductTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span> <span fxFlex="60%">{{ savingsAccount.interestCompoundingPeriodType |
find:savingsAccountProductTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Posting Period:</span> <span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.interestPostingPeriodType | find:savingsAccountProductTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span> <span fxFlex="60%">{{ savingsAccount.interestPostingPeriodType |
find:savingsAccountProductTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Interest Calculated using:</span> <span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.interestCalculationType | find:savingsAccountProductTemplate.interestCalculationTypeOptions:'id':'value' }}</span> <span fxFlex="60%">{{ savingsAccount.interestCalculationType |
find:savingsAccountProductTemplate.interestCalculationTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Days in Year:</span> <span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.interestCalculationDaysInYearType | find:savingsAccountProductTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span> <span fxFlex="60%">{{ savingsAccount.interestCalculationDaysInYearType |
find:savingsAccountProductTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.minRequiredOpeningBalance"> <div fxFlexFill *ngIf="savingsAccount.minRequiredOpeningBalance">
<span fxFlex="40%">Minimum Opening Balance:</span> <span fxFlex="40%">{{'labels.inputs.Minimum Opening Balance' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.minRequiredOpeningBalance }}</span> <span fxFlex="60%">{{ savingsAccount.minRequiredOpeningBalance | formatNumber }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Apply Withdrawal Fee for Transfers:</span> <span fxFlex="40%">{{'labels.inputs.Apply Withdrawal Fee for Transfers' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.withdrawalFeeForTransfers | yesNo }}</span> <span fxFlex="60%">{{ savingsAccount.withdrawalFeeForTransfers | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.lockinPeriodFrequency"> <div fxFlexFill *ngIf="savingsAccount.lockinPeriodFrequency">
<span fxFlex="40%">Lock-in Period:</span> <span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.lockinPeriodFrequency + ' ' + (savingsAccount.lockinPeriodFrequencyType | find:savingsAccountProductTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span> <span fxFlex="60%">{{ savingsAccount.lockinPeriodFrequency + ' ' + (savingsAccount.lockinPeriodFrequencyType |
find:savingsAccountProductTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Is Overdraft Allowed:</span> <span fxFlex="40%">{{'labels.inputs.Is Overdraft Allowed' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.allowOverdraft | yesNo }}</span> <span fxFlex="60%">{{ savingsAccount.allowOverdraft | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.minOverdraftForInterestCalculation"> <div fxFlexFill *ngIf="savingsAccount.minOverdraftForInterestCalculation">
<span fxFlex="40%">Minimum Overdraft Required for Interest Calculation:</span> <span fxFlex="40%">{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.minOverdraftForInterestCalculation }}</span> <span fxFlex="60%">{{ savingsAccount.minOverdraftForInterestCalculation | formatNumber }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.nominalAnnualInterestRateOverdraft"> <div fxFlexFill *ngIf="savingsAccount.nominalAnnualInterestRateOverdraft">
<span fxFlex="40%">Nominal Annual Interest for Overdraft:</span> <span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.nominalAnnualInterestRateOverdraft }}</span> <span fxFlex="60%">{{ savingsAccount.nominalAnnualInterestRateOverdraft | formatNumber }} %</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.overdraftLimit"> <div fxFlexFill *ngIf="savingsAccount.overdraftLimit">
<span fxFlex="40%">Maximum Overdraft Amount Limit:</span> <span fxFlex="40%">{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.overdraftLimit }}</span> <span fxFlex="60%">{{ savingsAccount.overdraftLimit | formatNumber }}</span>
</div> </div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="40%">Enforce Minimum Balance:</span> <span fxFlex="40%">{{'labels.inputs.Enforce Minimum Balance' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.enforceMinRequiredBalance | yesNo }}</span> <span fxFlex="60%">{{ savingsAccount.enforceMinRequiredBalance | yesNo }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.minRequiredBalance"> <div fxFlexFill *ngIf="savingsAccount.minRequiredBalance">
<span fxFlex="40%">Minimum Balance:</span> <span fxFlex="40%">{{'labels.inputs.Minimum Balance' | translate}}:</span>
<span fxFlex="60%">{{ savingsAccount.minRequiredBalance }}</span> <span fxFlex="60%">{{ savingsAccount.minRequiredBalance }}</span>
</div> </div>
<div fxFlexFill *ngIf="savingsAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column"> <div fxFlexFill *ngIf="savingsAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>Charges</h3> <h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Charges' | translate}}</h3>
<mat-divider fxFlexFill></mat-divider> <mat-divider fxFlexFill></mat-divider>
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingsAccount.charges"> <table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingsAccount.charges">
<ng-container matColumnDef="name"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.name + ', ' + charge.currency.displaySymbol }} {{ charge.name + ', ' + charge.currency.displaySymbol }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeCalculationType"> <ng-container matColumnDef="chargeCalculationType">
<th mat-header-cell *matHeaderCellDef> Type </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeCalculationType.value }} {{ charge.chargeCalculationType.value }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="amount"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.amount }} {{ charge.amount | formatNumber }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="date"> <ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef> Date </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Date' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
<span *ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'"> <span
*ngIf="charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee'">
{{(charge.dueDate | dateFormat) || 'Unassigned'}} {{(charge.dueDate | dateFormat) || 'Unassigned'}}
</span> </span>
<span *ngIf="charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'"> <span *ngIf="charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee'">
@@ -160,14 +167,14 @@
</ng-container> </ng-container>
<ng-container matColumnDef="repaymentsEvery"> <ng-container matColumnDef="repaymentsEvery">
<th mat-header-cell *matHeaderCellDef> Repayments Every </th> <th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Repayments Every' | translate}} </th>
<td mat-cell *matCellDef="let charge"> <td mat-cell *matCellDef="let charge">
{{ charge.feeInterval || 'Not Provided' }} {{ charge.feeInterval || 'Not Provided' }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="chargeTimeType"> <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"> <td mat-cell *matCellDef="let charge">
{{ charge.chargeTimeType.value }} {{ charge.chargeTimeType.value }}
</td> </td>
@@ -185,12 +192,12 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious> <button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button [routerLink]="['../']"> <button mat-raised-button [routerLink]="['../..']">
Cancel {{"labels.buttons.Cancel" | translate }}
</button> </button>
<button mat-raised-button color="primary" (click)="submit.emit()"> <button mat-raised-button color="primary" (click)="submit.emit()">
Submit {{"labels.buttons.Submit" | translate }}
</button> </button>
</div> </div>
@@ -3,89 +3,89 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Currency</mat-label> <mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
<input matInput formControlName="currencyCode"> <input matInput formControlName="currencyCode">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Decimal Places</mat-label> <mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
<input type="number" matInput formControlName="decimal"> <input type="number" matInput formControlName="decimal">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Nominal Annual Interest Rate</mat-label> <mat-label>{{'labels.inputs.Nominal Annual Interest' | translate}}</mat-label>
<input type="number" matInput formControlName="nominalAnnualInterestRate" required> <input type="number" matInput formControlName="nominalAnnualInterestRate" required>
<mat-error> <mat-error>
Nominal Annual Interest is <strong>required</strong> {{'labels.inputs.Nominal Annual Interest' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Compounding Period</mat-label> <mat-label>{{'labels.inputs.Interest Compounding Period' | translate}}</mat-label>
<mat-select formControlName="interestCompoundingPeriodType" required> <mat-select formControlName="interestCompoundingPeriodType" required>
<mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id"> <mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id">
{{ interestCompoundingPeriodType.value }} {{ interestCompoundingPeriodType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Compounding Period is <strong>required</strong> {{'labels.inputs.Interest Compounding Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Posting Period</mat-label> <mat-label>{{'labels.inputs.Interest Posting Period' | translate}}</mat-label>
<mat-select formControlName="interestPostingPeriodType" required> <mat-select formControlName="interestPostingPeriodType" required>
<mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id"> <mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id">
{{ interestPostingPeriodType.value }} {{ interestPostingPeriodType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Posting Period is <strong>required</strong> {{'labels.inputs.Interest Posting Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Interest Calculated using</mat-label> <mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
<mat-select formControlName="interestCalculationType" required> <mat-select formControlName="interestCalculationType" required>
<mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id"> <mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id">
{{ interestCalculationType.value }} {{ interestCalculationType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Interest Calculated using is <strong>required</strong> {{'labels.inputs.Interest Calculated using' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Days in Year</mat-label> <mat-label>{{'labels.inputs.Days in Year' | translate}}</mat-label>
<mat-select formControlName="interestCalculationDaysInYearType" required> <mat-select formControlName="interestCalculationDaysInYearType" required>
<mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id"> <mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id">
{{ interestCalculationDaysInYearType.value }} {{ interestCalculationDaysInYearType.value }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error> <mat-error>
Days in Year is <strong>required</strong> {{'labels.inputs.Days in Year' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Minimum Opening Balance</mat-label> <mat-label>{{'labels.inputs.Minimum Opening Balance' | translate}}</mat-label>
<input type="number" matInput formControlName="minRequiredOpeningBalance"> <input type="number" matInput formControlName="minRequiredOpeningBalance">
</mat-form-field> </mat-form-field>
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withdrawalFeeForTransfers" class="margin-v"> <mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withdrawalFeeForTransfers" class="margin-v">
Apply Withdrawal Fee for Transfers {{'labels.inputs.Apply Withdrawal Fee for Transfers' | translate}}
</mat-checkbox> </mat-checkbox>
<h4 fxFlex="98%" class="mat-h4">Lock-in Period</h4> <h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Lock-in Period' | translate}}</h4>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Frequency</mat-label> <mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
<input type="number" matInput formControlName="lockinPeriodFrequency"> <input type="number" matInput formControlName="lockinPeriodFrequency">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Type</mat-label> <mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
<mat-select formControlName="lockinPeriodFrequencyType"> <mat-select formControlName="lockinPeriodFrequencyType">
<mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id"> <mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id">
{{ lockinPeriodFrequencyType.value }} {{ lockinPeriodFrequencyType.value }}
@@ -95,26 +95,26 @@
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<h3 fxFlex="23%" class="mat-h3">Overdraft</h3> <h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Overdraft' | translate}}</h3>
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="allowOverdraft" class="margin-b"> <mat-checkbox fxFlex="73%" labelPosition="before" formControlName="allowOverdraft" class="margin-b">
Is Overdraft Allowed? {{'labels.inputs.Is Overdraft Allowed' | translate}}
</mat-checkbox> </mat-checkbox>
<div *ngIf="savingsAccountTermsForm.value.allowOverdraft" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div *ngIf="savingsAccountTermsForm.value.allowOverdraft" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Minimum Overdraft Required for Interest Calculation</mat-label> <mat-label>{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}</mat-label>
<input type="number" matInput formControlName="minOverdraftForInterestCalculation"> <input type="number" matInput formControlName="minOverdraftForInterestCalculation">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Nominal Annual Interest for Overdraft</mat-label> <mat-label>{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}</mat-label>
<input type="number" matInput formControlName="nominalAnnualInterestRateOverdraft"> <input type="number" matInput formControlName="nominalAnnualInterestRateOverdraft">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="31%"> <mat-form-field fxFlex="31%">
<mat-label>Maximum Overdraft Amount Limit</mat-label> <mat-label>{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}</mat-label>
<input type="number" matInput formControlName="overdraftLimit"> <input type="number" matInput formControlName="overdraftLimit">
</mat-form-field> </mat-form-field>
@@ -123,16 +123,16 @@
<mat-divider fxFlex="98%"></mat-divider> <mat-divider fxFlex="98%"></mat-divider>
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="enforceMinRequiredBalance" class="margin-v"> <mat-checkbox fxFlex="48%" labelPosition="before" formControlName="enforceMinRequiredBalance" class="margin-v">
Enforce Minimum Balance {{'labels.inputs.Enforce Minimum Balance' | translate}}
</mat-checkbox> </mat-checkbox>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Minimum Balance</mat-label> <mat-label>{{'labels.inputs.Minimum Balance' | translate}}</mat-label>
<input type="number" matInput formControlName="minRequiredBalance"> <input type="number" matInput formControlName="minRequiredBalance">
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="savingsAccountTermsForm.controls.minBalanceForInterestCalculation.value"> <mat-form-field fxFlex="48%" *ngIf="savingsAccountTermsForm.controls.minBalanceForInterestCalculation.value">
<mat-label>Balance Required for Interest Calculation</mat-label> <mat-label>{{'labels.inputs.Balance Required for Interest Calculation' | translate}}</mat-label>
<input type="number" matInput formControlName="minBalanceForInterestCalculation"> <input type="number" matInput formControlName="minBalanceForInterestCalculation">
</mat-form-field> </mat-form-field>
@@ -141,10 +141,10 @@
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%"> <div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<button mat-raised-button matStepperPrevious disabled> <button mat-raised-button matStepperPrevious disabled>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon> <fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
Previous {{"labels.buttons.Previous" | translate }}
</button> </button>
<button mat-raised-button matStepperNext> <button mat-raised-button matStepperNext>
Next {{"labels.buttons.Next" | translate }}
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon> <fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
</button> </button>
</div> </div>
+8 -8
View File
@@ -1358,11 +1358,11 @@
"Follow": "Seguir", "Follow": "Seguir",
"Frequency": "Frecuencia", "Frequency": "Frecuencia",
"Frequency Interval": "Intervalo de frecuencia", "Frequency Interval": "Intervalo de frecuencia",
"Frequency Interval for compounding": "Intervalo de frecuencia para la capitalización", "Frequency Interval for compounding": "Intervalo de frecuencia para la contabilización",
"Frequency Interval for recalculation": "Intervalo de frecuencia para recálculo", "Frequency Interval for recalculation": "Intervalo de frecuencia para recálculo",
"Frequency Number": "Número de frecuencia", "Frequency Number": "Número de frecuencia",
"Frequency Type": "Tipo de frecuencia", "Frequency Type": "Tipo de frecuencia",
"Frequency for compounding": "Frecuencia de capitalización", "Frequency for compounding": "Frecuencia de contabilización",
"Frequency for recalculate Outstanding Principal": "Frecuencia para recalcular el capital pendiente", "Frequency for recalculate Outstanding Principal": "Frecuencia para recalcular el capital pendiente",
"Friday": "Viernes", "Friday": "Viernes",
"From": "De", "From": "De",
@@ -1451,7 +1451,7 @@
"Interest Calculated Using": "Interés calculado usando", "Interest Calculated Using": "Interés calculado usando",
"Interest Calculated using": "Interés calculado usando", "Interest Calculated using": "Interés calculado usando",
"Interest Calculation Period": "Período de cálculo de intereses", "Interest Calculation Period": "Período de cálculo de intereses",
"Interest Compounding Period": "Período de capitalización de intereses", "Interest Compounding Period": "Período de contabilización de intereses",
"Interest Date": "Fecha de interés", "Interest Date": "Fecha de interés",
"Interest Earned": "Interés obtenido", "Interest Earned": "Interés obtenido",
"Interest Earned Not Posted": "Intereses ganados no contabilizados", "Interest Earned Not Posted": "Intereses ganados no contabilizados",
@@ -1461,8 +1461,8 @@
"Interest Outstanding": "Interés pendiente", "Interest Outstanding": "Interés pendiente",
"Interest Payable": "Intereses a pagar", "Interest Payable": "Intereses a pagar",
"Interest Posted": "Interés publicado", "Interest Posted": "Interés publicado",
"Interest Posting Period": "Período de contabilización de intereses", "Interest Posting Period": "Período de capitalización de intereses",
"Interest Posting period": "Periodo de contabilización de intereses", "Interest Posting period": "Periodo de capitalización de intereses",
"Interest Rate": "Tasa de interés", "Interest Rate": "Tasa de interés",
"Interest Rates": "Tasas de interés", "Interest Rates": "Tasas de interés",
"Interest Rate Chart": "Gráfico de tasas de interés", "Interest Rate Chart": "Gráfico de tasas de interés",
@@ -1658,8 +1658,8 @@
"No. of Active Loans": "No. de Créditos Activos", "No. of Active Loans": "No. de Créditos Activos",
"No. of Active Savings": "No. de Ahorros Activos", "No. of Active Savings": "No. de Ahorros Activos",
"No. of Days in Year": "No. de días en el año", "No. of Days in Year": "No. de días en el año",
"Nominal Annual Interest": "Interés nominal anual", "Nominal Annual Interest": "Tasa de Interés Nominal Anual",
"Nominal Annual Interest for Overdraft": "Interés Nominal Anual por Sobregiro", "Nominal Annual Interest for Overdraft": "Tasa de Interés Nominal Anual por Sobregiro",
"Nominal Interest Rate": "Tasa de interés nominal", "Nominal Interest Rate": "Tasa de interés nominal",
"Nominal interest rate by loan cycle": "Tasa de interés nominal por ciclo de préstamo", "Nominal interest rate by loan cycle": "Tasa de interés nominal por ciclo de préstamo",
"Nominal Price": "Precio nominal", "Nominal Price": "Precio nominal",
@@ -1982,7 +1982,7 @@
"String Value": "Valor de cadena", "String Value": "Valor de cadena",
"Sub Type": "Subtipo", "Sub Type": "Subtipo",
"Submission Date": "Día de entrega", "Submission Date": "Día de entrega",
"Submitted On": "Enviado el", "Submitted On": "Registrado el día",
"Submitted On Date": "Registrado el día", "Submitted On Date": "Registrado el día",
"Submitted on": "Registrado el", "Submitted on": "Registrado el",
"Submitted on Date From": "Registrado en fecha de", "Submitted on Date From": "Registrado en fecha de",