build: Use prettier for html
Stop ignoring html files in prettier and fix existing issues.
This commit is contained in:
@@ -2,121 +2,169 @@
|
||||
<div #buttonCreateCharge class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_CHARGE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{"labels.text.Create Charge" | translate}}
|
||||
{{ 'labels.text.Create Charge' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex fxFlex="68%">
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex fxFlex="28%">
|
||||
<mat-select placeholder="{{'labels.inputs.Filter' | translate}}" (selectionChange)="filterByAppliesTo($event.value)">
|
||||
<mat-select
|
||||
placeholder="{{ 'labels.inputs.Filter' | translate }}"
|
||||
(selectionChange)="filterByAppliesTo($event.value)"
|
||||
>
|
||||
<mat-option *ngFor="let chargeAppliesTo of chargeAppliesToOptions" [value]="chargeAppliesTo.id">
|
||||
{{ chargeAppliesTo.value | translateKey:'catalogs' }}
|
||||
{{ chargeAppliesTo.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #chargesTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Name" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">{{ charge.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeAppliesTo">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Applies To" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeAppliesTo.value | translateKey:'catalogs' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Applies To' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">{{ charge.chargeAppliesTo.value | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Time" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeTimeType.value | translateKey:'catalogs' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Time' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Calculation" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge"> {{ charge.chargeCalculationType.value | translateKey:'catalogs' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Calculation' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Amount" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let charge" class="r-amount"> {{ charge.amount | formatNumber }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge" class="r-amount">{{ charge.amount | formatNumber }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="penalty">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.commons.Is" | translate}}
|
||||
{{"labels.inputs.Penalty" | translate}}? </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.commons.Is' | translate }} {{ 'labels.inputs.Penalty' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let charge" class="center">
|
||||
<fa-icon *ngIf="charge.penalty" icon="check-circle" size="lg" class="ispenalty" matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!charge.penalty" icon="times-circle" size="lg" class="nopenalty" matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="charge.penalty"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="ispenalty"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!charge.penalty"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="nopenalty"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="active">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.commons.Is" | translate}}
|
||||
{{"labels.status.Active" | translate}}? </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.commons.Is' | translate }} {{ 'labels.status.Active' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let charge" class="center">
|
||||
<div [className]="charge.active === true ? 'true' : 'false'">
|
||||
<fa-icon matTooltip="{{ charge.active === true ? ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}" matTooltipPosition="right"
|
||||
icon="circle" size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
matTooltip="{{
|
||||
charge.active === true ? ('labels.inputs.Active' | translate) : ('labels.catalogs.Inactive' | translate)
|
||||
}}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateCharge let-popover="popover">
|
||||
<h2>{{"labels.text.Create Charge" | translate}}</h2>
|
||||
<p class="mw300">{{"labels.text.Supports Loan charges, Savings & deposits" | translate}}</p>
|
||||
<h2>{{ 'labels.text.Create Charge' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Supports Loan charges, Savings & deposits' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate }}</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()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{"labels.heading.Search bar to filter charges." | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter charges.' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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(templateButtonCreateCharge,buttonCreateCharge , 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateChargesTable,chargesTable, 'top', true)">{{'labels.buttons.Next' | translate }}</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(templateButtonCreateCharge, buttonCreateCharge, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateChargesTable, chargesTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateChargesTable let-popover="popover">
|
||||
<h4 class="mw300">{{"labels.heading.List of charges in the organization. For more details click" | translate}}: <a
|
||||
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/72908813/Charges" target="_blank">{{'labels.heading.Charges' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of charges in the organization. For more details click' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/72908813/Charges" target="_blank">{{
|
||||
'labels.heading.Charges' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate }}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,164 +1,207 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="chargeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Applies To" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Applies To' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeAppliesTo">
|
||||
<mat-option *ngFor="let chargeAppliesTo of chargesTemplateData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id">
|
||||
{{ chargeAppliesTo.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let chargeAppliesTo of chargesTemplateData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id"
|
||||
>
|
||||
{{ chargeAppliesTo.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeAppliesTo.hasError('required')">
|
||||
{{"labels.inputs.Charge Applies To" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Applies To' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div *ngIf="chargeForm.controls.chargeAppliesTo.value" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
*ngIf="chargeForm.controls.chargeAppliesTo.value"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Charge Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="chargeForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Charge Name" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Currency" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="currencyCode">
|
||||
<mat-option *ngFor="let currency of chargesTemplateData.currencyOptions" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.currencyCode.hasError('required')">
|
||||
{{"labels.inputs.Currency" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Time Type" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Time Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeTimeType">
|
||||
<mat-option *ngFor="let chargeTimeType of chargeTimeTypeData" [value]="chargeTimeType.id">
|
||||
{{ chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeTimeType.hasError('required')">
|
||||
{{"labels.inputs.Charge Time Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Time Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Calculation Type" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Calculation Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeCalculationType">
|
||||
<mat-option *ngFor="let chargeCalculationType of filteredChargeCalculationType()"
|
||||
[value]="chargeCalculationType.id">
|
||||
{{ chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let chargeCalculationType of filteredChargeCalculationType()"
|
||||
[value]="chargeCalculationType.id"
|
||||
>
|
||||
{{ chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeCalculationType.hasError('required')">
|
||||
{{"labels.inputs.Charge Calculation Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Calculation Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="chargeForm.controls.chargeAppliesTo.value === 1" fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Payment Mode" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Payment Mode' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargePaymentMode">
|
||||
<mat-option *ngFor="let chargePaymentMode of chargesTemplateData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id">
|
||||
{{ chargePaymentMode.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let chargePaymentMode of chargesTemplateData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id"
|
||||
>
|
||||
{{ chargePaymentMode.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargePaymentMode.hasError('required')">
|
||||
{{"labels.inputs.Charge Payment Mode" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Payment Mode' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="48%" *ngIf="chargeForm.controls.chargeTimeType.value === 9" class="add-fee-frequency-wrapper">
|
||||
<mat-checkbox labelPosition="before" formControlName="addFeeFrequency">
|
||||
{{"labels.inputs.Add Fee Frequency" | translate}}
|
||||
{{ 'labels.inputs.Add Fee Frequency' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<mat-form-field
|
||||
*ngIf="chargeForm.controls.chargeTimeType.value === 9 && chargeForm.controls.addFeeFrequency.value"
|
||||
fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Frequency Interval" | translate}}</mat-label>
|
||||
<input matInput required formControlName="feeInterval">
|
||||
fxFlex="48%"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Frequency Interval' | translate }}</mat-label>
|
||||
<input matInput required formControlName="feeInterval" />
|
||||
<mat-error *ngIf="chargeForm.controls.feeInterval.hasError('required')">
|
||||
{{"labels.inputs.Frequency Interval" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Frequency Interval' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="chargeForm.controls.feeInterval.hasError('pattern')">
|
||||
{{"labels.inputs.Frequency Interval" | translate}} <strong>{{"labels.commons.must be a positive integer" | translate}}</strong>
|
||||
{{ 'labels.inputs.Frequency Interval' | translate }}
|
||||
<strong>{{ 'labels.commons.must be a positive integer' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field
|
||||
*ngIf="chargeForm.controls.chargeTimeType.value === 9 && chargeForm.controls.addFeeFrequency.value"
|
||||
fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Frequency" | translate}}</mat-label>
|
||||
fxFlex="48%"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Charge Frequency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="feeFrequency">
|
||||
<mat-option *ngFor="let feeFrequency of chargesTemplateData.feeFrequencyOptions"
|
||||
[value]="feeFrequency.id">
|
||||
{{ feeFrequency.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let feeFrequency of chargesTemplateData.feeFrequencyOptions"
|
||||
[value]="feeFrequency.id"
|
||||
>
|
||||
{{ feeFrequency.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.feeFrequency.hasError('required')">
|
||||
{{"labels.inputs.Charge Frequency" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field (click)="dueDatePicker.open()"
|
||||
<mat-form-field
|
||||
(click)="dueDatePicker.open()"
|
||||
*ngIf="chargeForm.controls.chargeTimeType.value === 6 || chargeForm.controls.chargeTimeType.value === 7"
|
||||
fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Due Date" | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="dueDatePicker" required
|
||||
formControlName="feeOnMonthDay">
|
||||
fxFlex="48%"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Due Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="dueDatePicker"
|
||||
required
|
||||
formControlName="feeOnMonthDay"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="dueDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #dueDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="chargeForm.controls.feeOnMonthDay.hasError('required')">
|
||||
{{"labels.inputs.Due Date" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Due Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%"
|
||||
*ngIf="chargeForm.controls.chargeTimeType.value === 7 || chargeForm.controls.chargeTimeType.value === 11">
|
||||
<mat-label>{{"labels.inputs.Repeat Every" | translate}} ({{ repeatEveryLabel }})</mat-label>
|
||||
<input matInput required formControlName="feeInterval">
|
||||
<mat-form-field
|
||||
fxFlex="48%"
|
||||
*ngIf="chargeForm.controls.chargeTimeType.value === 7 || chargeForm.controls.chargeTimeType.value === 11"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Repeat Every' | translate }} ({{ repeatEveryLabel }})</mat-label>
|
||||
<input matInput required formControlName="feeInterval" />
|
||||
<mat-error *ngIf="chargeForm.controls.feeInterval.hasError('required')">
|
||||
{{"labels.inputs.Repeat Every" | translate}} ({{ repeatEveryLabel }}) {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Repeat Every' | translate }} ({{ repeatEveryLabel }})
|
||||
{{ 'labels.commons.is' | translate }} <strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error
|
||||
*ngIf="(chargeForm.controls.feeInterval.hasError('min') || chargeForm.controls.feeInterval.hasError('max')) && !chargeForm.controls.feeInterval.hasError('pattern')">
|
||||
{{"labels.inputs.Repeat Every" | translate}} ({{ repeatEveryLabel }}) <strong>{{"labels.commons.must be between 1 and 12" | translate}}</strong>
|
||||
*ngIf="
|
||||
(chargeForm.controls.feeInterval.hasError('min') ||
|
||||
chargeForm.controls.feeInterval.hasError('max')) &&
|
||||
!chargeForm.controls.feeInterval.hasError('pattern')
|
||||
"
|
||||
>
|
||||
{{ 'labels.inputs.Repeat Every' | translate }} ({{ repeatEveryLabel }})
|
||||
<strong>{{ 'labels.commons.must be between 1 and 12' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="chargeForm.controls.feeInterval.hasError('pattern')">
|
||||
{{"labels.inputs.Repeat Every" | translate}} ({{ repeatEveryLabel }}) <strong>{{"labels.commons.must be a positive integer" | translate}}</strong>
|
||||
{{ 'labels.inputs.Repeat Every' | translate }} ({{ repeatEveryLabel }})
|
||||
<strong>{{ 'labels.commons.must be a positive integer' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
|
||||
<input matInput required formControlName="amount">
|
||||
<mat-label>{{ 'labels.inputs.Amount' | translate }}</mat-label>
|
||||
<input matInput required formControlName="amount" />
|
||||
<mat-error *ngIf="chargeForm.controls.amount.hasError('required')">
|
||||
{{"labels.inputs.Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Amount' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="chargeForm.controls.amount.hasError('pattern') && currencyDecimalPlaces !== undefined">
|
||||
{{"labels.inputs.Amount" | translate}} {{"labels.commons.must be" | translate}} <strong>{{"labels.commons.a positive number with" | translate}} {{ currencyDecimalPlaces ? 'up to ' +
|
||||
currencyDecimalPlaces : 'no' }} {{"labels.inputs.decimal places" | translate}}</strong>
|
||||
{{ 'labels.inputs.Amount' | translate }} {{ 'labels.commons.must be' | translate }}
|
||||
<strong
|
||||
>{{ 'labels.commons.a positive number with' | translate }}
|
||||
{{ currencyDecimalPlaces ? 'up to ' + currencyDecimalPlaces : 'no' }}
|
||||
{{ 'labels.inputs.decimal places' | translate }}</strong
|
||||
>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="chargeForm.controls.amount.hasError('pattern') && currencyDecimalPlaces === undefined">
|
||||
{{"labels.inputs.Amount" | translate}} {{"labels.commons.must be" | translate}} <strong>{{"labels.commons.a positive number" | translate}}</strong>
|
||||
{{ 'labels.inputs.Amount' | translate }} {{ 'labels.commons.must be' | translate }}
|
||||
<strong>{{ 'labels.commons.a positive number' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<!--
|
||||
@@ -168,57 +211,58 @@
|
||||
* In shares case: Only for charge time type: SHARE_PURCHASE and SHARE_REDEEM and with charge calculation type as % amount only
|
||||
-->
|
||||
<mat-form-field fxFlex="48%" *ngIf="showMinMaxCap()">
|
||||
<mat-label>{{"labels.inputs.Minimum Charge Cap" | translate}}</mat-label>
|
||||
<input matInput formControlName="minCap">
|
||||
<mat-label>{{ 'labels.inputs.Minimum Charge Cap' | translate }}</mat-label>
|
||||
<input matInput formControlName="minCap" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="showMinMaxCap()">
|
||||
<mat-label>{{"labels.inputs.Maximum Charge Cap" | translate}}</mat-label>
|
||||
<input matInput formControlName="maxCap">
|
||||
<mat-label>{{ 'labels.inputs.Maximum Charge Cap' | translate }}</mat-label>
|
||||
<input matInput formControlName="maxCap" />
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="48%" fxLayout="row" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div fxFlex="50%" class="active-wrapper">
|
||||
<mat-checkbox labelPosition="before" formControlName="active">
|
||||
{{"labels.status.Active" | translate}}
|
||||
{{ 'labels.status.Active' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="penalty-wrapper">
|
||||
<mat-checkbox labelPosition="before" formControlName="penalty">
|
||||
{{"labels.commons.Is" | translate}} {{"labels.inputs.Penalty" | translate}}
|
||||
{{ 'labels.commons.Is' | translate }} {{ 'labels.inputs.Penalty' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="chargeForm.controls.chargeAppliesTo.value === 3"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="chargeForm.controls.chargeAppliesTo.value === 3"
|
||||
[inputFormControl]="chargeForm.controls.incomeAccountId"
|
||||
[glAccountList]="incomeAndLiabilityAccountData" [inputLabel]="'Income from Charge'">
|
||||
[glAccountList]="incomeAndLiabilityAccountData"
|
||||
[inputLabel]="'Income from Charge'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Tax Group" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Tax Group' | translate }}</mat-label>
|
||||
<mat-select formControlName="taxGroupId">
|
||||
<mat-option *ngFor="let taxGroup of chargesTemplateData.taxGroupOptions" [value]="taxGroup.id">
|
||||
{{ taxGroup.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!chargeForm.valid"
|
||||
*mifosxHasPermission="'CREATE_CHARGE'">{{"labels.buttons.Submit" | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!chargeForm.valid" *mifosxHasPermission="'CREATE_CHARGE'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,91 +1,92 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="chargeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Applies To" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Applies To' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeAppliesTo">
|
||||
<mat-option *ngFor="let chargeAppliesTo of chargeData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id">
|
||||
{{ chargeAppliesTo.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let chargeAppliesTo of chargeData.chargeAppliesToOptions"
|
||||
[value]="chargeAppliesTo.id"
|
||||
>
|
||||
{{ chargeAppliesTo.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" style="margin-top:10px;">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" style="margin-top: 10px">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Name" | translate}}</mat-label>
|
||||
<input matInput required autofocus formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required autofocus formControlName="name" />
|
||||
<mat-error *ngIf="chargeForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Name" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Currency" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="currencyCode">
|
||||
<mat-option *ngFor="let currency of chargeData.currencyOptions" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.currencyCode.hasError('required')">
|
||||
{{"labels.inputs.Currency" | translate}} {{"labels.inputs.Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.inputs.Type' | translate }}
|
||||
{{ 'labels.commons.is' | translate }} <strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Time Type" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Time Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeTimeType">
|
||||
<mat-option *ngFor="let chargeTime of chargeTimeTypeOptions" [value]="chargeTime.id">
|
||||
{{ chargeTime.value | translateKey:'catalogs' }}
|
||||
{{ chargeTime.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeTimeType.hasError('required')">
|
||||
{{"labels.inputs.Charge Time Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Time Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Charge Calculation" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Calculation' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargeCalculationType">
|
||||
<mat-option *ngFor="let chargeCalculation of chargeCalculationTypeOptions" [value]="chargeCalculation.id">
|
||||
{{ chargeCalculation.value | translateKey:'catalogs' }}
|
||||
{{ chargeCalculation.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargeCalculationType.hasError('required')">
|
||||
{{"labels.inputs.Charge Calculation Type" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Calculation Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="chargePaymentMode">
|
||||
<mat-label>{{"labels.inputs.Charge Payment By" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Payment By' | translate }}</mat-label>
|
||||
<mat-select required formControlName="chargePaymentMode">
|
||||
<mat-option *ngFor="let chargePaymentMode of chargeData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id">
|
||||
{{ chargePaymentMode.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let chargePaymentMode of chargeData.chargePaymetModeOptions"
|
||||
[value]="chargePaymentMode.id"
|
||||
>
|
||||
{{ chargePaymentMode.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.chargePaymentMode.hasError('required')">
|
||||
{{"labels.inputs.Charge Payment Mode" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Charge Payment Mode' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Amount" | translate}}</mat-label>
|
||||
<input matInput required autofocus type="text" formControlName="amount">
|
||||
<mat-label>{{ 'labels.inputs.Amount' | translate }}</mat-label>
|
||||
<input matInput required autofocus type="text" formControlName="amount" />
|
||||
<mat-error *ngIf="chargeForm.controls.amount.hasError('required')">
|
||||
{{"labels.inputs.Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Amount' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<!--
|
||||
@@ -94,24 +95,57 @@
|
||||
* In saving case: Only for 1. charge time type is "withdrawlfee" or "savings no activity fee" with charge calculation type as "% amount"
|
||||
* In shares case: Only for charge time type: SHARE_PURCHASE and SHARE_REDEEM and with charge calculation type as % amount only
|
||||
-->
|
||||
<mat-form-field fxFlex="48%"
|
||||
*ngIf="(chargeForm.controls.chargeAppliesTo.value === 1 && (chargeForm.controls.chargeCalculationType.value === 2 || chargeForm.controls.chargeCalculationType.value === 3 || chargeForm.controls.chargeCalculationType.value === 4 || chargeForm.controls.chargeCalculationType.value===5)) || (chargeForm.controls.chargeAppliesTo.value === 2 && (chargeForm.controls.chargeTimeType.value === 16 || chargeForm.controls.chargeTimeType.value === 5)&&(chargeForm.controls.chargeCalculationType.value === 2)) || (chargeForm.controls.chargeAppliesTo.value === 4 && (chargeForm.controls.chargeTimeType.value===14 || chargeForm.controls.chargeTimeType.value===15) && chargeForm.controls.chargeCalculationType.value === 2)">
|
||||
<mat-label>{{"labels.inputs.Minimum Charge Cap" | translate}}</mat-label>
|
||||
<input matInput autofocus formControlName="minCap">
|
||||
<mat-form-field
|
||||
fxFlex="48%"
|
||||
*ngIf="
|
||||
(chargeForm.controls.chargeAppliesTo.value === 1 &&
|
||||
(chargeForm.controls.chargeCalculationType.value === 2 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 3 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 4 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 5)) ||
|
||||
(chargeForm.controls.chargeAppliesTo.value === 2 &&
|
||||
(chargeForm.controls.chargeTimeType.value === 16 || chargeForm.controls.chargeTimeType.value === 5) &&
|
||||
chargeForm.controls.chargeCalculationType.value === 2) ||
|
||||
(chargeForm.controls.chargeAppliesTo.value === 4 &&
|
||||
(chargeForm.controls.chargeTimeType.value === 14 || chargeForm.controls.chargeTimeType.value === 15) &&
|
||||
chargeForm.controls.chargeCalculationType.value === 2)
|
||||
"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Minimum Charge Cap' | translate }}</mat-label>
|
||||
<input matInput autofocus formControlName="minCap" />
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%"
|
||||
*ngIf="(chargeForm.controls.chargeAppliesTo.value === 1 && (chargeForm.controls.chargeCalculationType.value === 2 || chargeForm.controls.chargeCalculationType.value === 3 || chargeForm.controls.chargeCalculationType.value === 4 || chargeForm.controls.chargeCalculationType.value===5)) || (chargeForm.controls.chargeAppliesTo.value === 2 && (chargeForm.controls.chargeTimeType.value === 16 || chargeForm.controls.chargeTimeType.value === 5)&&(chargeForm.controls.chargeCalculationType.value === 2)) || (chargeForm.controls.chargeAppliesTo.value === 4 && (chargeForm.controls.chargeTimeType.value===14 || chargeForm.controls.chargeTimeType.value===15) && chargeForm.controls.chargeCalculationType.value === 2)">
|
||||
<mat-label>{{"labels.inputs.Maximum Charge Cap" | translate}}</mat-label>
|
||||
<input matInput autofocus formControlName="maxCap">
|
||||
<mat-form-field
|
||||
fxFlex="48%"
|
||||
*ngIf="
|
||||
(chargeForm.controls.chargeAppliesTo.value === 1 &&
|
||||
(chargeForm.controls.chargeCalculationType.value === 2 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 3 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 4 ||
|
||||
chargeForm.controls.chargeCalculationType.value === 5)) ||
|
||||
(chargeForm.controls.chargeAppliesTo.value === 2 &&
|
||||
(chargeForm.controls.chargeTimeType.value === 16 || chargeForm.controls.chargeTimeType.value === 5) &&
|
||||
chargeForm.controls.chargeCalculationType.value === 2) ||
|
||||
(chargeForm.controls.chargeAppliesTo.value === 4 &&
|
||||
(chargeForm.controls.chargeTimeType.value === 14 || chargeForm.controls.chargeTimeType.value === 15) &&
|
||||
chargeForm.controls.chargeCalculationType.value === 2)
|
||||
"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Maximum Charge Cap' | translate }}</mat-label>
|
||||
<input matInput autofocus formControlName="maxCap" />
|
||||
</mat-form-field>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="showGLAccount"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="showGLAccount"
|
||||
[inputFormControl]="chargeForm.controls.incomeAccountId"
|
||||
[glAccountList]="chargeData.incomeOrLiabilityAccountOptions.incomeAccountOptions" [required]="true" [inputLabel]="'Income from Charge'">
|
||||
[glAccountList]="chargeData.incomeOrLiabilityAccountOptions.incomeAccountOptions"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from Charge'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Tax Group" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Tax Group' | translate }}</mat-label>
|
||||
<mat-select *ngIf="chargeData.taxGroup" formControlName="taxGroupId">
|
||||
<mat-option *ngFor="let taxGroup of chargeData.taxGroupOptions" [value]="taxGroup.id">
|
||||
{{ taxGroup.name }}
|
||||
@@ -126,59 +160,61 @@
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="48%" class="password-never-expires-wrapper checkbox" *ngIf="addFeeFrequency">
|
||||
<mat-checkbox labelPosition="before" [checked]="addFeeFrequency && showFeeOptions"
|
||||
(change)="getFeeFrequency($event.checked)">
|
||||
{{"labels.inputs.Add Fee Frequency" | translate}}
|
||||
<mat-checkbox
|
||||
labelPosition="before"
|
||||
[checked]="addFeeFrequency && showFeeOptions"
|
||||
(change)="getFeeFrequency($event.checked)"
|
||||
>
|
||||
{{ 'labels.inputs.Add Fee Frequency' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="addFeeFrequency && showFeeOptions">
|
||||
<mat-label>{{"labels.inputs.Frequency Interval" | translate}}</mat-label>
|
||||
<input matInput required autofocus type="text" formControlName="feeInterval">
|
||||
<mat-label>{{ 'labels.inputs.Frequency Interval' | translate }}</mat-label>
|
||||
<input matInput required autofocus type="text" formControlName="feeInterval" />
|
||||
<mat-error *ngIf="chargeForm.controls.feeInterval.hasError('required')">
|
||||
{{"labels.inputs.Frequency Interval" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Frequency Interval' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="addFeeFrequency && showFeeOptions">
|
||||
<mat-label>{{"labels.inputs.Charge Frequency" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge Frequency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="feeFrequency">
|
||||
<mat-option *ngFor="let chargeFrequency of chargeData.feeFrequencyOptions" [value]="chargeFrequency.id">
|
||||
{{ chargeFrequency.value | translateKey:'catalogs' }}
|
||||
{{ chargeFrequency.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="chargeForm.controls.feeFrequency.hasError('required')">
|
||||
{{"labels.inputs.Add Fee Frequency" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Add Fee Frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" style="margin-top:10px;">
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" style="margin-top: 10px">
|
||||
<div fxFlex="48%" class="password-never-expires-wrapper">
|
||||
<mat-checkbox labelPosition="before" formControlName="active">
|
||||
{{"labels.status.Active" | translate}}
|
||||
{{ 'labels.status.Active' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div fxFlex="48%" class="send-password-to-email-wrapper" *ngIf="showPenalty">
|
||||
<mat-checkbox labelPosition="before" formControlName="penalty">
|
||||
{{"labels.commons.Is" | translate}} {{"labels.inputs.Penalty" | translate}}
|
||||
{{ 'labels.commons.Is' | translate }} {{ 'labels.inputs.Penalty' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!chargeForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_CHARGE'">{{"labels.buttons.Submit" | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!chargeForm.valid" *mifosxHasPermission="'UPDATE_CHARGE'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,24 +1,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_CHARGE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{"labels.heading.Edit" | translate}}
|
||||
{{ 'labels.heading.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="deleteCharge()" *mifosxHasPermission="'DELETE_CHARGE'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{"labels.heading.Delete" | translate}}
|
||||
{{ 'labels.heading.Delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Name" | translate}}
|
||||
{{ 'labels.inputs.Charge Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -26,15 +22,15 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Applies To" | translate}}
|
||||
{{ 'labels.inputs.Charge Applies To' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeAppliesTo.value | translateKey:'catalogs' }}
|
||||
{{ chargeData.chargeAppliesTo.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Penalty" | translate}}
|
||||
{{ 'labels.inputs.Penalty' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -42,7 +38,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Currency" | translate}}
|
||||
{{ 'labels.inputs.Currency' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -50,7 +46,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Amount" | translate}}
|
||||
{{ 'labels.inputs.Amount' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -58,7 +54,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="minCap">
|
||||
{{"labels.inputs.Minimum Charge Cap" | translate}}
|
||||
{{ 'labels.inputs.Minimum Charge Cap' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="minCap">
|
||||
@@ -66,7 +62,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="maxCap">
|
||||
{{"labels.inputs.Maximum Charge Cap" | translate}}
|
||||
{{ 'labels.inputs.Maximum Charge Cap' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="maxCap">
|
||||
@@ -74,31 +70,31 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Time Type" | translate}}
|
||||
{{ 'labels.inputs.Charge Time Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ chargeData.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Calculation Type" | translate}}
|
||||
{{ 'labels.inputs.Charge Calculation Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ chargeData.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Charge Payment Mode" | translate}}
|
||||
{{ 'labels.inputs.Charge Payment Mode' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ chargeData.chargePaymentMode.value | translateKey:'catalogs' }}
|
||||
{{ chargeData.chargePaymentMode.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.status.Active" | translate}}
|
||||
{{ 'labels.status.Active' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -106,41 +102,47 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="chargeData.chargeTimeType.id === 9 && chargeData.feeFrequency">
|
||||
{{"labels.inputs.Add Fee Frequency" | translate}}
|
||||
{{ 'labels.inputs.Add Fee Frequency' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%"
|
||||
*ngIf="chargeData.chargeTimeType.id === 9 && chargeData.feeFrequency && chargeData.feeFrequency">
|
||||
{{ chargeData.feeFrequency.value | translateKey:'catalogs' }}
|
||||
<div
|
||||
fxFlex="50%"
|
||||
*ngIf="chargeData.chargeTimeType.id === 9 && chargeData.feeFrequency && chargeData.feeFrequency"
|
||||
>
|
||||
{{ chargeData.feeFrequency.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="chargeData.chargeTimeType.id === 9 && chargeData.feeInterval">
|
||||
{{"labels.inputs.Frequency Interval" | translate}}
|
||||
{{ 'labels.inputs.Frequency Interval' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="chargeData.chargeTimeType.id === 9 && chargeData.feeInterval">
|
||||
{{ chargeData.feeInterval }}
|
||||
</div>
|
||||
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Income From Charges'" *ngIf="chargeData.incomeOrLiabilityAccount"
|
||||
[glAccount]="chargeData.incomeOrLiabilityAccount" [withTitle]="'50%'">
|
||||
<mifosx-gl-account-display
|
||||
fxFlex="100%"
|
||||
[accountTitle]="'Income From Charges'"
|
||||
*ngIf="chargeData.incomeOrLiabilityAccount"
|
||||
[glAccount]="chargeData.incomeOrLiabilityAccount"
|
||||
[withTitle]="'50%'"
|
||||
>
|
||||
</mifosx-gl-account-display>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="chargeData.taxGroup">
|
||||
{{"labels.inputs.Tax Group" | translate}}
|
||||
{{ 'labels.inputs.Tax Group' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="chargeData.taxGroup">
|
||||
{{ chargeData.taxGroup.name }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{ 'labels.buttons.Back' | translate}}</button>
|
||||
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,52 +1,48 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_CHARGE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{"labels.text.Create Collateral" | translate}}
|
||||
{{ 'labels.text.Create Collateral' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="mat-elevation-z8">
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Name" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let collateral"> {{ collateral.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let collateral">{{ collateral.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="quality">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Type/Quality" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let collateral"> {{ collateral.quality }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Type/Quality' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let collateral">{{ collateral.quality }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="basePrice">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Base Price" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let collateral"> {{ collateral.basePrice }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Base Price' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let collateral">{{ collateral.basePrice }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="basePercentage">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Base Percentage" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let collateral"> {{ collateral.pctToBase }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Base Percentage' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let collateral">{{ collateral.pctToBase }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="unitType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Unit Type" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let collateral"> {{ collateral.unitType }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Unit Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let collateral">{{ collateral.unitType }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,71 +3,74 @@
|
||||
<form [formGroup]="collateralForm" (ngSubmit)="submit()">
|
||||
<mat-card-content>
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="collateralForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Name" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Type/Quality" | translate}}</mat-label>
|
||||
<input matInput required formControlName="quality">
|
||||
<mat-label>{{ 'labels.inputs.Type/Quality' | translate }}</mat-label>
|
||||
<input matInput required formControlName="quality" />
|
||||
<mat-error *ngIf="collateralForm.controls.quality.hasError('required')">
|
||||
{{"labels.inputs.Type/Quality" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Type/Quality' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Unit Type" | translate}}</mat-label>
|
||||
<input matInput required formControlName="unitType">
|
||||
<mat-label>{{ 'labels.inputs.Unit Type' | translate }}</mat-label>
|
||||
<input matInput required formControlName="unitType" />
|
||||
<mat-error *ngIf="collateralForm.controls.unitType.hasError('required')">
|
||||
{{"labels.inputs.Unit Type" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Unit Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Base Price" | translate}}</mat-label>
|
||||
<input matInput required formControlName="basePrice">
|
||||
<mat-label>{{ 'labels.inputs.Base Price' | translate }}</mat-label>
|
||||
<input matInput required formControlName="basePrice" />
|
||||
<mat-error *ngIf="collateralForm.controls.basePrice.hasError('required')">
|
||||
{{"labels.inputs.Base Price" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Base Price' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Percentage to Base" | translate}}</mat-label>
|
||||
<input matInput required formControlName="pctToBase">
|
||||
<mat-label>{{ 'labels.inputs.Percentage to Base' | translate }}</mat-label>
|
||||
<input matInput required formControlName="pctToBase" />
|
||||
<mat-error *ngIf="collateralForm.controls.pctToBase.hasError('required')">
|
||||
{{"labels.inputs.Percentage to Base" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Percentage to Base' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.heading.Currency" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.heading.Currency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="currency">
|
||||
<mat-option *ngFor="let currency of collateralTemplateData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="collateralForm.controls.currency.hasError('required')">
|
||||
{{"labels.heading.Currency" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.heading.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!collateralForm.valid"
|
||||
*mifosxHasPermission="'CREATE_CHARGE'">{{"labels.buttons.Submit" | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!collateralForm.valid"
|
||||
*mifosxHasPermission="'CREATE_CHARGE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -3,77 +3,79 @@
|
||||
<form [formGroup]="collateralForm" (ngSubmit)="submit()">
|
||||
<mat-card-content>
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Name" | translate}}</mat-label>
|
||||
<input matInput required autoFocus formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required autoFocus formControlName="name" />
|
||||
<mat-error *ngIf="collateralForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Name" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" |translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Type/Quality" | translate}}</mat-label>
|
||||
<input matInput required autoFocus formControlName="quality">
|
||||
<mat-label>{{ 'labels.inputs.Type/Quality' | translate }}</mat-label>
|
||||
<input matInput required autoFocus formControlName="quality" />
|
||||
<mat-error *ngIf="collateralForm.controls.quality.hasError('required')">
|
||||
{{"labels.inputs.Type/Quality" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Type/Quality' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Unit Type" | translate}}</mat-label>
|
||||
<input matInput required autoFocus formControlName="unitType">
|
||||
<mat-label>{{ 'labels.inputs.Unit Type' | translate }}</mat-label>
|
||||
<input matInput required autoFocus formControlName="unitType" />
|
||||
<mat-error *ngIf="collateralForm.controls.unitType.hasError('required')">
|
||||
{{"labels.inputs.Unit Type" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Unit Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Base Price" | translate}}</mat-label>
|
||||
<input matInput required autoFocus formControlName="basePrice">
|
||||
<mat-label>{{ 'labels.inputs.Base Price' | translate }}</mat-label>
|
||||
<input matInput required autoFocus formControlName="basePrice" />
|
||||
<mat-error *ngIf="collateralForm.controls.basePrice.hasError('required')">
|
||||
{{"labels.inputs.Base Price" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Base Price' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.inputs.Percentage to Base" | translate}}</mat-label>
|
||||
<input matInput required autoFocus formControlName="pctToBase">
|
||||
<mat-label>{{ 'labels.inputs.Percentage to Base' | translate }}</mat-label>
|
||||
<input matInput required autoFocus formControlName="pctToBase" />
|
||||
<mat-error *ngIf="collateralForm.controls.pctToBase.hasError('required')">
|
||||
{{"labels.inputs.Percentage to Base" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Percentage to Base' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{"labels.heading.Currency" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.heading.Currency' | translate }}</mat-label>
|
||||
<mat-select required formControlName="currency">
|
||||
<mat-option *ngFor="let currency of collateralTemplateData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="collateralForm.controls.currency.hasError('required')">
|
||||
{{"labels.heading.Currency" | translate}} {{"labels.commons.is" | translate}}
|
||||
<strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.heading.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{"labels.buttons.Cancel" | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!collateralForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_CHARGE'">{{"labels.buttons.Submit" | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!collateralForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_CHARGE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,21 +1,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']" >
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{"labels.heading.Edit" | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="deleteCollateral()" >
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{"labels.heading.Delete" | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.heading.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="deleteCollateral()">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.heading.Delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Collateral Name" | translate}}
|
||||
{{ 'labels.inputs.Collateral Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -23,7 +22,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Type/Quality" | translate}}
|
||||
{{ 'labels.inputs.Type/Quality' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -31,7 +30,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Base Price" | translate}}
|
||||
{{ 'labels.inputs.Base Price' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -39,7 +38,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Base Percentage" | translate}}
|
||||
{{ 'labels.inputs.Base Percentage' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -47,7 +46,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Unit Type" | translate}}
|
||||
{{ 'labels.inputs.Unit Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -55,7 +54,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.heading.Currency" | translate}}
|
||||
{{ 'labels.heading.Currency' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
+31
-17
@@ -1,69 +1,83 @@
|
||||
<h1 mat-dialog-title>{{ title }}</h1>
|
||||
|
||||
<div mat-dialog-content [formGroup]="depositProductIncentiveForm" fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Attribute' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Attribute' | translate }}</mat-label>
|
||||
<mat-select formControlName="attributeName" required>
|
||||
<mat-option *ngFor="let attributeName of attributeNameData" [value]="attributeName.id">
|
||||
{{ attributeName.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Attribute' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Attribute' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Condition' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Condition' | translate }}</mat-label>
|
||||
<mat-select formControlName="conditionType" required>
|
||||
<mat-option *ngFor="let conditionType of conditionTypeData" [value]="conditionType.id">
|
||||
{{ conditionType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Condition' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Condition' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="depositProductIncentiveForm.value.attributeName">
|
||||
<mat-label>{{'labels.inputs.Value' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Value' | translate }}</mat-label>
|
||||
<mat-select formControlName="attributeValue" *ngIf="depositProductIncentiveForm.value.attributeName !== 3" required>
|
||||
<mat-option *ngFor="let attributeValue of attributeValueData" [value]="attributeValue.id">
|
||||
{{ attributeValue.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<input type="number" matInput formControlName="attributeValue" *ngIf="depositProductIncentiveForm.value.attributeName === 3" required>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="attributeValue"
|
||||
*ngIf="depositProductIncentiveForm.value.attributeName === 3"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Value' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Value' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="incentiveType" required>
|
||||
<mat-option *ngFor="let incentiveType of incentiveTypeData" [value]="incentiveType.id">
|
||||
{{ incentiveType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Interest' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="amount" required>
|
||||
<mat-label>{{ 'labels.inputs.Interest' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="amount" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-dialog-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button mat-dialog-close> {{'labels.buttons.Cancel' | translate}} </button>
|
||||
<button mat-raised-button color="primary" [mat-dialog-close]="{ data: depositProductIncentiveForm }" [disabled]="!depositProductIncentiveForm.valid || depositProductIncentiveForm.pristine">
|
||||
{{'labels.buttons.' + layout.addButtonText | translate }}
|
||||
<button mat-raised-button mat-dialog-close>{{ 'labels.buttons.Cancel' | translate }}</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[mat-dialog-close]="{ data: depositProductIncentiveForm }"
|
||||
[disabled]="!depositProductIncentiveForm.valid || depositProductIncentiveForm.pristine"
|
||||
>
|
||||
{{ 'labels.buttons.' + layout.addButtonText | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
+20
-32
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #fixedDepositProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,60 +21,55 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductDetailsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-details-step></mifosx-fixed-deposit-product-details-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductCurrencyForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</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>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductTermsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</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>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductSettingsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</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>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductInterestRateChartForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST RATE CHART' | translate }}</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>
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-charges-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
[currencyCode]="fixedDepositProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-accounting-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
@@ -84,12 +77,10 @@
|
||||
[fixedDepositProductFormValid]="fixedDepositProductFormValid"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="fixedDepositProductFormValid" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-preview-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
@@ -99,9 +90,6 @@
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+24
-42
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #fixedDepositProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,90 +21,74 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductDetailsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-details-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
<mifosx-fixed-deposit-product-details-step [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
</mifosx-fixed-deposit-product-details-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductCurrencyForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</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 [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
</mifosx-fixed-deposit-product-currency-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductTermsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</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 [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
</mifosx-fixed-deposit-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductSettingsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</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 [fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
</mifosx-fixed-deposit-product-settings-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductInterestRateChartForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.INTEREST RATE CHART' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST RATE CHART' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-interest-rate-chart-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate">
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-interest-rate-chart-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-charges-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
[currencyCode]="fixedDepositProductCurrencyForm.get('currencyCode')">
|
||||
[currencyCode]="fixedDepositProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="fixedDepositProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-accounting-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate" [accountingRuleData]="accountingRuleData"
|
||||
[fixedDepositProductFormValid]="fixedDepositProductFormValidAndNotPrinstine">
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[fixedDepositProductFormValid]="fixedDepositProductFormValidAndNotPrinstine"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="fixedDepositProductFormValidAndNotPrinstine" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-fixed-deposit-product-preview-step
|
||||
[fixedDepositProductsTemplate]="fixedDepositProductsTemplate"
|
||||
[chartSlabsDisplayedColumns]="fixedDepositProductInterestRateChartStep.chartSlabsDisplayedColumns"
|
||||
[accountingRuleData]="accountingRuleData" [fixedDepositProduct]="fixedDepositProduct"
|
||||
(submitEvent)="submit()">
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[fixedDepositProduct]="fixedDepositProduct"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-fixed-deposit-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+154
-87
@@ -1,10 +1,13 @@
|
||||
<form [formGroup]="fixedDepositProductAccountingForm">
|
||||
|
||||
<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-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
|
||||
<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">
|
||||
{{ 'labels.accounting.' + accountingRule | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
@@ -12,109 +15,163 @@
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div *ngIf="isCashOrAccrualAccounting()" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Assets' | translate }}</h4>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.savingsReferenceAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Saving reference'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving reference'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.feesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Fees Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Fees Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.penaltiesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Penalties Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Penalties Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Liabilities' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.savingsControlAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Saving control'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving control'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.transfersInSuspenseAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Savings transfers in suspense'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Savings transfers in suspense'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.interestPayableAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Interest Payable'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest Payable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Expenses' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Expenses' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.interestOnSavingsAccountId"
|
||||
[glAccountList]="expenseAccountData" [required]="true" [inputLabel]="'Interest on savings'">
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest on savings'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Income' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromFeeAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from fees'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from fees'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="fixedDepositProductAccountingForm.controls.incomeFromPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from penalties'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from penalties'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<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"
|
||||
>
|
||||
<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 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="paymentChannelToFundSourceMappings.value"
|
||||
*ngIf="paymentChannelToFundSourceMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.heading.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.heading.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:paymentTypeData:'id':'name' }}
|
||||
{{ paymentFundSource.paymentTypeId | find: paymentTypeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:assetAccountData:'id':'name' }}
|
||||
{{ paymentFundSource.fundSourceAccountId | find: assetAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.buttons.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.buttons.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource; let i = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="edit('PaymentFundSource', paymentChannelToFundSourceMappings, i)">
|
||||
<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)">
|
||||
@@ -124,41 +181,47 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: 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>
|
||||
<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)">
|
||||
<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}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value"
|
||||
*ngIf="feeToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.catalogs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.catalogs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: chargeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ feesIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.buttons.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.buttons.Actions' | translate }}</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>
|
||||
@@ -170,47 +233,56 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" *ngIf="existCharges()">
|
||||
|
||||
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Map Penalties to Specific Income Accounts' | translate}}
|
||||
<h4 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Map Penalties to Specific Income Accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value"
|
||||
*ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: penaltyData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ penaltyIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.buttons.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.buttons.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
|
||||
<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)">
|
||||
@@ -220,26 +292,21 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!fixedDepositProductFormValid">
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+21
-16
@@ -1,9 +1,11 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" [value]="charge">
|
||||
<mat-option
|
||||
*ngFor="let charge of chargeData | chargesFilter: chargesDataSource : currencyCode.value"
|
||||
[value]="charge"
|
||||
>
|
||||
{{ charge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -12,42 +14,47 @@
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -56,19 +63,17 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+13
-14
@@ -1,46 +1,45 @@
|
||||
<form [formGroup]="fixedDepositProductCurrencyForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select formControlName="currencyCode" required>
|
||||
<mat-option *ngFor="let currency of currencyData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="digitsAfterDecimal" required>
|
||||
<mat-label>{{ 'labels.inputs.Decimal Places' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="digitsAfterDecimal" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Decimal Places' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOf">
|
||||
<mat-label>{{ 'labels.inputs.Currency in multiples of' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOf" />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency in multiples of' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency in multiples of' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+13
-14
@@ -1,42 +1,41 @@
|
||||
<form [formGroup]="fixedDepositProductDetailsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" required>
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }}</mat-label>
|
||||
<input matInput formControlName="name" required />
|
||||
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="shortName" maxlength="4" required>
|
||||
<mat-label>{{ 'labels.inputs.Short Name' | translate }}</mat-label>
|
||||
<input matInput formControlName="shortName" maxlength="4" required />
|
||||
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.shortName.hasError('required')">
|
||||
{{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Short Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" required></textarea>
|
||||
<mat-error *ngIf="fixedDepositProductDetailsForm.controls.description.hasError('required')">
|
||||
{{'labels.inputs.Description' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Description' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+134
-87
@@ -1,248 +1,295 @@
|
||||
<form [formGroup]="fixedDepositProductInterestRateChartForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="83%" class="mat-h3">{{ 'labels.inputs.Interest Rate Chart' | translate}} <i class='fas fa-question'
|
||||
matTooltip="{{ 'tooltips.The interest rate chart' | translate}}"></i>
|
||||
<h4 fxFlex="83%" class="mat-h3">
|
||||
{{ 'labels.inputs.Interest Rate Chart' | translate }}
|
||||
<i class="fas fa-question" matTooltip="{{ 'tooltips.The interest rate chart' | translate }}"></i>
|
||||
</h4>
|
||||
|
||||
<div fxFlex="13%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addChart()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" formArrayName="charts"
|
||||
*ngFor="let chart of charts.controls; let chartIndex = index">
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
formArrayName="charts"
|
||||
*ngFor="let chart of charts.controls; let chartIndex = index"
|
||||
>
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" [formGroupName]="chartIndex">
|
||||
|
||||
<div fxFlex="98%" fxLayout="row" fxLayoutAlign="end center">
|
||||
<button type="button" mat-icon-button color="warn" (click)="delete(charts, chartIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate}}" matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="delete(charts, chartIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="32%">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" required>
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput formControlName="name" required />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%" (click)="validFromDatePicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.From Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="validFromDatePicker"
|
||||
formControlName="fromDate" required>
|
||||
<mat-label>{{ 'labels.inputs.From Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="validFromDatePicker"
|
||||
formControlName="fromDate"
|
||||
required
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="validFromDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #validFromDatePicker></mat-datepicker>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Valid from Date' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Valid from Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%" (click)="endDatePicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.End Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate">
|
||||
<mat-label>{{ 'labels.inputs.End Date' | translate }}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate" />
|
||||
<mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #endDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="65%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" required></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="31%" fxLayout="row" fxLayoutAlign="space-between center">
|
||||
<mat-checkbox labelPosition="before" formControlName="isPrimaryGroupingByAmount">
|
||||
{{ 'labels.inputs.Is primary grouping by amount?' | translate}}
|
||||
{{ 'labels.inputs.Is primary grouping by amount?' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" class="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addChartSlab(chart.controls.chartSlabs)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add Slab' | translate}}
|
||||
{{ 'labels.buttons.Add Slab' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" *ngIf="chart.value.chartSlabs.length === 0">
|
||||
<h3 class="mat-h3">{{ 'labels.heading.It is required to add at least one Slab' | translate}}</h3>
|
||||
<h3 class="mat-h3">{{ 'labels.heading.It is required to add at least one Slab' | translate }}</h3>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chart.value.chartSlabs"
|
||||
*ngIf="chart.value.chartSlabs.length !== 0" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chart.value.chartSlabs"
|
||||
*ngIf="chart.value.chartSlabs.length !== 0"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType |
|
||||
find:periodTypeData:'id':'value') }}
|
||||
{{
|
||||
chartSlab.fromPeriod +
|
||||
' - ' +
|
||||
chartSlab.toPeriod +
|
||||
' ' +
|
||||
(chartSlab.periodType | find: periodTypeData : 'id' : 'value')
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate }} %
|
||||
</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">{{ chartSlab.annualInterestRate }} %</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="delete(chart.controls.chartSlabs, chartSlabIndex)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
<button mat-button color="primary"
|
||||
(click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="
|
||||
expandChartSlabIndex[chartIndex] =
|
||||
expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex
|
||||
"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length">
|
||||
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'">
|
||||
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="63%">
|
||||
{{ 'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="13%">
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives"
|
||||
*ngIf="chartSlab.incentives.length">
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chartSlab.incentives"
|
||||
*ngIf="chartSlab.incentives.length"
|
||||
>
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType | find:entityTypeData:'id':'value' }}
|
||||
{{ incentive.entityType | find: entityTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName | find:attributeNameData:'id':'value' }}
|
||||
{{ incentive.attributeName | find: attributeNameData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType | find:conditionTypeData:'id':'value' }}
|
||||
{{ incentive.conditionType | find: conditionTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<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="4">{{ incentive.attributeValue | find:clientTypeData:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue | find:clientClassificationData:'id':'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue | find: clientTypeData : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue | find: clientClassificationData : 'id' : 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType | find:incentiveTypeData:'id':'value'}}
|
||||
{{ incentive.incentiveType | find: incentiveTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive; let incentiveIndex = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="
|
||||
editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)
|
||||
"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn"
|
||||
(click)="delete(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="delete(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex];"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns" class="incentives-row"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+272
-182
@@ -1,466 +1,556 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ fixedDepositProduct.name }}</h2>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.currencyCode |
|
||||
find:fixedDepositProductsTemplate.currencyOptions:'code':'name' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.currencyCode | find: fixedDepositProductsTemplate.currencyOptions : 'code' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.digitsAfterDecimal }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.depositAmount + ' (Min: ' + (fixedDepositProduct.minDepositAmount ?
|
||||
fixedDepositProduct.minDepositAmount : fixedDepositProduct.depositAmount) + ', Max: ' +
|
||||
(fixedDepositProduct.maxDepositAmount ? fixedDepositProduct.maxDepositAmount : fixedDepositProduct.depositAmount)
|
||||
+ ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.depositAmount +
|
||||
' (Min: ' +
|
||||
(fixedDepositProduct.minDepositAmount
|
||||
? fixedDepositProduct.minDepositAmount
|
||||
: fixedDepositProduct.depositAmount) +
|
||||
', Max: ' +
|
||||
(fixedDepositProduct.maxDepositAmount
|
||||
? fixedDepositProduct.maxDepositAmount
|
||||
: fixedDepositProduct.depositAmount) +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.interestCompoundingPeriodType |
|
||||
find:fixedDepositProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.interestCompoundingPeriodType
|
||||
| find: fixedDepositProductsTemplate.interestCompoundingPeriodTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.interestPostingPeriodType |
|
||||
find:fixedDepositProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.interestPostingPeriodType
|
||||
| find: fixedDepositProductsTemplate.interestPostingPeriodTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.interestCalculationType |
|
||||
find:fixedDepositProductsTemplate.interestCalculationTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.interestCalculationType
|
||||
| find: fixedDepositProductsTemplate.interestCalculationTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.interestCalculationDaysInYearType |
|
||||
find:fixedDepositProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.interestCalculationDaysInYearType
|
||||
| find: fixedDepositProductsTemplate.interestCalculationDaysInYearTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.lockinPeriodFrequency + ' ' +
|
||||
(fixedDepositProduct.lockinPeriodFrequencyType |
|
||||
find:fixedDepositProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.lockinPeriodFrequency +
|
||||
' ' +
|
||||
(fixedDepositProduct.lockinPeriodFrequencyType
|
||||
| find: fixedDepositProductsTemplate.lockinPeriodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.minDepositTerm + ' ' + (fixedDepositProduct.minDepositTermTypeId |
|
||||
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.minDepositTerm +
|
||||
' ' +
|
||||
(fixedDepositProduct.minDepositTermTypeId
|
||||
| find: fixedDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.inMultiplesOfDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.And thereafter, in Multiples of' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.inMultiplesOfDepositTerm + ' ' +
|
||||
(fixedDepositProduct.inMultiplesOfDepositTermTypeId |
|
||||
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.And thereafter, in Multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.inMultiplesOfDepositTerm +
|
||||
' ' +
|
||||
(fixedDepositProduct.inMultiplesOfDepositTermTypeId
|
||||
| find: fixedDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.maxDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.maxDepositTerm + ' ' + (fixedDepositProduct.maxDepositTermTypeId |
|
||||
find:fixedDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Maximum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.maxDepositTerm +
|
||||
' ' +
|
||||
(fixedDepositProduct.maxDepositTermTypeId
|
||||
| find: fixedDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
<!-- For Pre-mature closure -->
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply Penal Interest (less)' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalApplicable | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.preClosurePenalApplicable">
|
||||
<span fxFlex="40%">{{'labels.inputs.Penal Interest' | translate}} (%):</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.preClosurePenalInterest + '% (' +
|
||||
(fixedDepositProduct.preClosurePenalInterestOnTypeId |
|
||||
find:fixedDepositProductsTemplate.preClosurePenalInterestOnTypeOptions:'id':'value') + ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Penal Interest' | translate }} (%):</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.preClosurePenalInterest +
|
||||
'% (' +
|
||||
(fixedDepositProduct.preClosurePenalInterestOnTypeId
|
||||
| find: fixedDepositProductsTemplate.preClosurePenalInterestOnTypeOptions : 'id' : 'value') +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
<!-- -->
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Tax Group' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.taxGroupId | find:fixedDepositProductsTemplate.taxGroupOptions:'id':'name'
|
||||
}}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Tax Group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProduct.taxGroupId | find: fixedDepositProductsTemplate.taxGroupOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" *ngIf="fixedDepositProduct.charts.length !== 0">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Charts' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Interest Rate Charts' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngFor="let chart of fixedDepositProduct.charts; let chartIndex = index" fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngFor="let chart of fixedDepositProduct.charts; let chartIndex = index"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<div fxFlexFill *ngIf="chart.name">
|
||||
<span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="chart.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.description }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.From Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.From Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.fromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="chart.endDate">
|
||||
<span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.End Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.endDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Primary Grouping by Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProduct.isPrimaryGroupingByAmount | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chart.chartSlabs"
|
||||
*ngIf="chart.chartSlabs.length !== 0" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chart.chartSlabs"
|
||||
*ngIf="chart.chartSlabs.length !== 0"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.periodTypes:'id':'value') }}
|
||||
{{
|
||||
chartSlab.fromPeriod +
|
||||
' - ' +
|
||||
chartSlab.toPeriod +
|
||||
' ' +
|
||||
(chartSlab.periodType | find: fixedDepositProductsTemplate.chartTemplate.periodTypes : 'id' : 'value')
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-button color="primary"
|
||||
(click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex"
|
||||
[disabled]="chartSlab.incentives.length === 0">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="
|
||||
expandChartSlabIndex[chartIndex] =
|
||||
expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex
|
||||
"
|
||||
[disabled]="chartSlab.incentives.length === 0"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length">
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="23%">
|
||||
{{'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
|
||||
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.entityType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.entityTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.attributeName
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.attributeNameOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.conditionType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
|
||||
<span *ngSwitchCase="2">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="2">{{
|
||||
incentive.attributeValue
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.genderOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="3">{{ incentive.attributeValue }}</span>
|
||||
<span *ngSwitchCase="4">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.clientTypeOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.clientClassificationOptions:'id':'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.clientTypeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.clientClassificationOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
|
||||
{{
|
||||
incentive.incentiveType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount | formatNumber}}
|
||||
{{ incentive.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex];"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns" class="incentives-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProduct.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details *ngIf="!isNoneAccounting()" [accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings">
|
||||
<mifosx-view-savings-accounting-details
|
||||
*ngIf="!isNoneAccounting()"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div
|
||||
*ngIf="fixedDepositProduct.advancedAccountingRules && (fixedDepositProduct.paymentChannelToFundSourceMappings?.length || fixedDepositProduct.feeToIncomeAccountMappings?.length || fixedDepositProduct.penaltyToIncomeAccountMappings?.length)"
|
||||
fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
*ngIf="
|
||||
fixedDepositProduct.advancedAccountingRules &&
|
||||
(fixedDepositProduct.paymentChannelToFundSourceMappings?.length ||
|
||||
fixedDepositProduct.feeToIncomeAccountMappings?.length ||
|
||||
fixedDepositProduct.penaltyToIncomeAccountMappings?.length)
|
||||
"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div *ngIf="fixedDepositProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fund Sources for Payment Channels' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProduct.paymentChannelToFundSourceMappings">
|
||||
<div
|
||||
*ngIf="fixedDepositProduct.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fund Sources for Payment Channels' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProduct.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:fixedDepositProductsTemplate.paymentTypeOptions:'id':'name' }}
|
||||
{{
|
||||
paymentFundSource.paymentTypeId | find: fixedDepositProductsTemplate.paymentTypeOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId |
|
||||
find:fixedDepositProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }}
|
||||
{{
|
||||
paymentFundSource.fundSourceAccountId
|
||||
| find: fixedDepositProductsTemplate.accountingMappingOptions.assetAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProduct.feeToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="fixedDepositProduct.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProduct.feeToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:fixedDepositProductsTemplate.chargeOptions:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: fixedDepositProductsTemplate.chargeOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId |
|
||||
find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
feesIncome.incomeAccountId
|
||||
| find: fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProduct.penaltyToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="fixedDepositProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProduct.penaltyToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:fixedDepositProductsTemplate.penaltyOptions:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: fixedDepositProductsTemplate.penaltyOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId |
|
||||
find:fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
penaltyIncome.incomeAccountId
|
||||
| find: fixedDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submitEvent.emit()">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+70
-35
@@ -1,54 +1,72 @@
|
||||
<form [formGroup]="fixedDepositProductSettingsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Lock-in Period' | translate}} <i class='fas fa-question' matTooltip="{{ 'tooltips.A period of time during which a fixed deposit account' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Lock-in Period' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.A period of time during which a fixed deposit account' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="lockinPeriodFrequency">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="lockinPeriodFrequency" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Minimum Deposit Term' | translate}} <i class='fas fa-question' matTooltip="{{ 'tooltips.The minimum length of time' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Minimum Deposit Term' | translate }}
|
||||
<i class="fas fa-question" matTooltip="{{ 'tooltips.The minimum length of time' | translate }}"></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositTerm" required>
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositTerm" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Minimum Deposit Term Frequency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Minimum Deposit Term Frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Frequency Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="minDepositTermTypeId" required>
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Minimum Deposit Term Frequency Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Minimum Deposit Term Frequency Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.And thereafter, in Multiples of' | translate}} <i class='fas fa-question-circle' matTooltip="{{ 'tooltips.After the minimum deposit term has passed' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.heading.And thereafter, in Multiples of' | translate }}
|
||||
<i
|
||||
class="fas fa-question-circle"
|
||||
matTooltip="{{ 'tooltips.After the minimum deposit term has passed' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOfDepositTerm">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOfDepositTerm" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="inMultiplesOfDepositTermTypeId">
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
@@ -56,15 +74,18 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Maximum Deposit Term' | translate}} <i class='fas fa-question-circle' matTooltip="{{ 'tooltips.The maximum length of time funds' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Maximum Deposit Term' | translate }}
|
||||
<i class="fas fa-question-circle" matTooltip="{{ 'tooltips.The maximum length of time funds' | translate }}"></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDepositTerm">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDepositTerm" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="maxDepositTermTypeId">
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
@@ -74,21 +95,30 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="23%" class="mat-h4">{{'labels.heading.For Pre-mature closure' | translate}} <i class='fas fa-question-circle' matTooltip="{{ 'tooltips.This sections defines an interest penalty' | translate}}"></i></h4>
|
||||
<h4 fxFlex="23%" class="mat-h4">
|
||||
{{ 'labels.heading.For Pre-mature closure' | translate }}
|
||||
<i
|
||||
class="fas fa-question-circle"
|
||||
matTooltip="{{ 'tooltips.This sections defines an interest penalty' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="preClosurePenalApplicable" class="margin-v">
|
||||
{{'labels.inputs.Apply Penal Interest (less)' | translate}}
|
||||
{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Penal Interest' | translate}} (%)</mat-label>
|
||||
<input type="number" matInput formControlName="preClosurePenalInterest">
|
||||
<mat-label>{{ 'labels.inputs.Penal Interest' | translate }} (%)</mat-label>
|
||||
<input type="number" matInput formControlName="preClosurePenalInterest" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Period' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Period' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -96,33 +126,38 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withHoldTax" class="margin-v" matTooltip="{{ 'tooltips.An boolean flag to attach' | translate}}">
|
||||
{{'labels.inputs.Is Withhold Tax Applicable' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
labelPosition="before"
|
||||
formControlName="withHoldTax"
|
||||
class="margin-v"
|
||||
matTooltip="{{ 'tooltips.An boolean flag to attach' | translate }}"
|
||||
>
|
||||
{{ 'labels.inputs.Is Withhold Tax Applicable' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="fixedDepositProductSettingsForm.value.withHoldTax">
|
||||
<mat-label>{{'labels.inputs.Tax Group' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Tax Group' | translate }}</mat-label>
|
||||
<mat-select formControlName="taxGroupId" required>
|
||||
<mat-option *ngFor="let taxGroup of taxGroupData" [value]="taxGroup.id">
|
||||
{{ taxGroup.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Tax Group' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Tax Group' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+75
-30
@@ -1,89 +1,134 @@
|
||||
<form [formGroup]="fixedDepositProductTermsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Deposit Amount' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Deposit Amount' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositAmount" matTooltip="{{ 'tooltips.The minimum deposit amount required to open a fixed deposit' | translate}}">
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="minDepositAmount"
|
||||
matTooltip="{{ 'tooltips.The minimum deposit amount required to open a fixed deposit' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="depositAmount" matTooltip="{{ 'tooltips.The default deposit amount expected' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="depositAmount"
|
||||
matTooltip="{{ 'tooltips.The default deposit amount expected' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default Deposit Amount' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default Deposit Amount' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
|
||||
<input type="number" matInput formControlName="maxDepositAmount" matTooltip="{{ 'tooltips.The maximum deposit amount allowed when a fixed deposit' | translate}}">
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="maxDepositAmount"
|
||||
matTooltip="{{ 'tooltips.The maximum deposit amount allowed when a fixed deposit' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Compounding Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCompoundingPeriodType" matTooltip="{{ 'tooltips.The period at which interest rate' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id">
|
||||
<mat-label>{{ 'labels.inputs.Interest Compounding Period' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCompoundingPeriodType"
|
||||
matTooltip="{{ 'tooltips.The period at which interest rate' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData"
|
||||
[value]="interestCompoundingPeriodType.id"
|
||||
>
|
||||
{{ interestCompoundingPeriodType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Compounding Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Compounding Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Posting Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestPostingPeriodType" matTooltip="{{ 'tooltips.The period at which interest rate is posted or credited' | translate}}" required>
|
||||
<mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id">
|
||||
<mat-label>{{ 'labels.inputs.Interest Posting Period' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestPostingPeriodType"
|
||||
matTooltip="{{ 'tooltips.The period at which interest rate is posted or credited' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData"
|
||||
[value]="interestPostingPeriodType.id"
|
||||
>
|
||||
{{ interestPostingPeriodType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Posting Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Posting Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationType" matTooltip="{{ 'tooltips.The method used to calculate interest' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id">
|
||||
<mat-label>{{ 'labels.inputs.Interest Calculated using' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCalculationType"
|
||||
matTooltip="{{ 'tooltips.The method used to calculate interest' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCalculationType of interestCalculationTypeData"
|
||||
[value]="interestCalculationType.id"
|
||||
>
|
||||
{{ interestCalculationType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Calculated using' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Calculated using' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Days in Year' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationDaysInYearType" matTooltip="{{ 'tooltips.The setting for number of days' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id">
|
||||
<mat-label>{{ 'labels.inputs.Days in Year' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCalculationDaysInYearType"
|
||||
matTooltip="{{ 'tooltips.The setting for number of days' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData"
|
||||
[value]="interestCalculationDaysInYearType.id"
|
||||
>
|
||||
{{ interestCalculationDaysInYearType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Days in Year' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Days in Year' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
@@ -1,70 +1,108 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<div #buttonCreateFixedProduct class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_FIXEDDEPOSITPRODUCT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Fixed Deposit Product' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div #buttonCreateFixedProduct class="in-block">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[routerLink]="['create']"
|
||||
*mifosxHasPermission="'CREATE_FIXEDDEPOSITPRODUCT'"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Fixed Deposit Product' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #fixedProductsTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let fixedDepositProduct">{{ fixedDepositProduct.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="shortName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Short Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let fixedDepositProduct"> {{ fixedDepositProduct.shortName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Short Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let fixedDepositProduct">{{ fixedDepositProduct.shortName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateFixedProduct let-popover="popover">
|
||||
<h2>{{'labels.buttons.Create Fixed Deposit Product' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Allows you to create new fixed deposit product' | translate}}</p>
|
||||
<h2>{{ 'labels.buttons.Create Fixed Deposit Product' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Allows you to create new fixed deposit product' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate}}</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()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.text.Search bar to filter fixed deposit products.' | translate}}</h4>
|
||||
<h4>{{ 'labels.text.Search bar to filter fixed deposit products.' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFixedProductsTable,fixedProductsTable, 'top', true)">{{'labels.buttons.Next' | translate}}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFixedProductsTable, fixedProductsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFixedProductsTable let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.text.List of fixed deposit products in the organization' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629544/Fixed+Deposit+Products" target="_blank">{{'labels.inputs.Fixed Deposit Products' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.text.List of fixed deposit products in the organization' | translate }}:
|
||||
<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">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+216
-172
@@ -1,310 +1,340 @@
|
||||
<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'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ fixedDepositProductData.name }}</h2>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.heading.Currency' | translate}}:</span>
|
||||
<span fxFlex="60%">({{ fixedDepositProductData.currency.code }}) {{ fixedDepositProductData.currency.name }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.heading.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
>({{ fixedDepositProductData.currency.code }}) {{ fixedDepositProductData.currency.name }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.currency.decimalPlaces }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.currency.inMultiplesOf | formatNumber}}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.currency.inMultiplesOf | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.depositAmount + ' (Min: ' +
|
||||
(fixedDepositProductData.minDepositAmount ? fixedDepositProductData.minDepositAmount :
|
||||
fixedDepositProductData.depositAmount) + ', Max: ' + (fixedDepositProductData.maxDepositAmount ?
|
||||
fixedDepositProductData.maxDepositAmount : fixedDepositProductData.depositAmount) + ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
fixedDepositProductData.depositAmount +
|
||||
' (Min: ' +
|
||||
(fixedDepositProductData.minDepositAmount
|
||||
? fixedDepositProductData.minDepositAmount
|
||||
: fixedDepositProductData.depositAmount) +
|
||||
', Max: ' +
|
||||
(fixedDepositProductData.maxDepositAmount
|
||||
? fixedDepositProductData.maxDepositAmount
|
||||
: fixedDepositProductData.depositAmount) +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.interestCompoundingPeriodType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.interestPostingPeriodType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated Using' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated Using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.interestCalculationType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.interestCalculationDaysInYearType.value }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%">
|
||||
{{ fixedDepositProductData.lockinPeriodFrequency }} {{
|
||||
fixedDepositProductData.lockinPeriodFrequencyType.value }}</span>
|
||||
{{ fixedDepositProductData.lockinPeriodFrequency }}
|
||||
{{ fixedDepositProductData.lockinPeriodFrequencyType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.minDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%" *ngIf="fixedDepositProductData.minDepositTerm !== undefined">{{
|
||||
fixedDepositProductData.minDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="fixedDepositProductData.minDepositTerm !== undefined"
|
||||
>{{ fixedDepositProductData.minDepositTerm }}
|
||||
|
||||
{{ fixedDepositProductData.minDepositTermType.value }}</span>
|
||||
{{ fixedDepositProductData.minDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.maxDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%" *ngIf="fixedDepositProductData.maxDepositTerm !== undefined">{{
|
||||
fixedDepositProductData.maxDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Maximum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="fixedDepositProductData.maxDepositTerm !== undefined"
|
||||
>{{ fixedDepositProductData.maxDepositTerm }}
|
||||
|
||||
{{ fixedDepositProductData.maxDepositTermType.value }}</span>
|
||||
{{ fixedDepositProductData.maxDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.inMultiplesOfDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Term In multiple of' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.inMultiplesOfDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Term In multiple of' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
>{{ fixedDepositProductData.inMultiplesOfDepositTerm }}
|
||||
-
|
||||
{{ fixedDepositProductData.inMultiplesOfDepositTermType.value }}</span>
|
||||
{{ fixedDepositProductData.inMultiplesOfDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply Penal Interest (less)' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.preClosurePenalApplicable | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.preClosurePenalApplicable">
|
||||
<span fxFlex="40%">{{'labels.inputs.Penal Interest' | translate}} (%):</span>
|
||||
<span fxFlex="60%">{{fixedDepositProductData.preClosurePenalInterest}} % On
|
||||
|
||||
{{fixedDepositProductData.preClosurePenalInterestOnType.value}}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Penal Interest' | translate }} (%):</span>
|
||||
<span fxFlex="60%"
|
||||
>{{ fixedDepositProductData.preClosurePenalInterest }} % On
|
||||
{{ fixedDepositProductData.preClosurePenalInterestOnType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.minBalanceForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Balance Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.minBalanceForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax group' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.taxGroup.name }}</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProductData.activeChart" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Chart' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Interest Rate Chart' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.name">
|
||||
<span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.description }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.From Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.From Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.fromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="fixedDepositProductData.activeChart.endDate">
|
||||
<span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.End Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.endDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Primary Grouping by Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ fixedDepositProductData.activeChart.isPrimaryGroupingByAmount | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProductData.activeChart.chartSlabs" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProductData.activeChart.chartSlabs"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
<div *ngIf="chartSlab.fromPeriod !== undefined">
|
||||
{{ chartSlab.fromPeriod }} - {{ chartSlab.toPeriod }} {{ chartSlab.periodType.value }}
|
||||
</div>
|
||||
<div *ngIf="chartSlab.fromPeriod === undefined">
|
||||
|
||||
</div>
|
||||
<div *ngIf="chartSlab.fromPeriod === undefined"> </div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
<div *ngIf="chartSlab.amountRangeFrom !== undefined">
|
||||
{{ chartSlab.amountRangeFrom }} - {{ chartSlab.amountRangeTo }}
|
||||
</div>
|
||||
|
||||
<div *ngIf="chartSlab.amountRangeFrom === undefined">
|
||||
|
||||
</div>
|
||||
<div *ngIf="chartSlab.amountRangeFrom === undefined"> </div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate }} %
|
||||
</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">{{ chartSlab.annualInterestRate }} %</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-button color="primary"
|
||||
(click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns.length">
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex? 'expanded' : 'collapsed'">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns.length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="23%">
|
||||
{{'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
|
||||
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.entityType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.entityTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.attributeName
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.attributeNameOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.conditionType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.conditionTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
|
||||
<span *ngSwitchCase="2">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="2">{{
|
||||
incentive.attributeValue
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.genderOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="3">{{ incentive.attributeValue }}</span>
|
||||
<span *ngSwitchCase="4">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.clientTypeOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.clientClassificationOptions:'id':'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.clientTypeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue
|
||||
| find
|
||||
: fixedDepositProductsTemplate.chartTemplate.clientClassificationOptions
|
||||
: 'id'
|
||||
: 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType |
|
||||
find:fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
|
||||
{{
|
||||
incentive.incentiveType
|
||||
| find: fixedDepositProductsTemplate.chartTemplate.incentiveTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
@@ -312,170 +342,184 @@
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row">
|
||||
</tr>
|
||||
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns"
|
||||
class="incentives-row"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProductData.charges.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="fixedDepositProductData.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="collectedon">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details class="container"
|
||||
<mifosx-view-savings-accounting-details
|
||||
class="container"
|
||||
[accountingRule]="fixedDepositProductData.accountingRule"
|
||||
[accountingMappings]="fixedDepositProductData.accountingMappings">
|
||||
[accountingMappings]="fixedDepositProductData.accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div fxFlexFill
|
||||
*ngIf="fixedDepositProductData.advancedAccountingRules && (fixedDepositProductData.paymentChannelToFundSourceMappings?.length || fixedDepositProductData.feeToIncomeAccountMappings?.length || fixedDepositProductData.penaltyToIncomeAccountMappings?.length)"
|
||||
fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngIf="
|
||||
fixedDepositProductData.advancedAccountingRules &&
|
||||
(fixedDepositProductData.paymentChannelToFundSourceMappings?.length ||
|
||||
fixedDepositProductData.feeToIncomeAccountMappings?.length ||
|
||||
fixedDepositProductData.penaltyToIncomeAccountMappings?.length)
|
||||
"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<hr>
|
||||
<hr />
|
||||
|
||||
<div *ngIf="fixedDepositProductData.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Configure Fund Sources for Payment Channels' | translate}}
|
||||
<div
|
||||
*ngIf="fixedDepositProductData.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>
|
||||
{{ 'labels.inputs.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProductData.paymentChannelToFundSourceMappings">
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProductData.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentType.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProductData.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProductData.feeToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="fixedDepositProductData.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProductData.feeToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="fixedDepositProductData.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="fixedDepositProductData.penaltyToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="fixedDepositProductData.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="fixedDepositProductData.penaltyToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+17
-11
@@ -1,23 +1,29 @@
|
||||
<mat-card class="product-card">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<nav mat-tab-nav-bar class="navigation-tabs">
|
||||
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
|
||||
[active]="general.isActive">
|
||||
{{'labels.heading.General' | translate}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./general']"
|
||||
routerLinkActive
|
||||
#general="routerLinkActive"
|
||||
[active]="general.isActive"
|
||||
>
|
||||
{{ 'labels.heading.General' | translate }}
|
||||
</a>
|
||||
<ng-container *ngFor="let fixedDepositDatatable of fixedDepositDatatables">
|
||||
<a mat-tab-link [routerLink]="['./datatables',fixedDepositDatatable.registeredTableName]" routerLinkActive
|
||||
#datatable="routerLinkActive" [active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + fixedDepositDatatable.registeredTableName">
|
||||
{{fixedDepositDatatable.registeredTableName}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./datatables', fixedDepositDatatable.registeredTableName]"
|
||||
routerLinkActive
|
||||
#datatable="routerLinkActive"
|
||||
[active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + fixedDepositDatatable.registeredTableName"
|
||||
>
|
||||
{{ fixedDepositDatatable.registeredTableName }}
|
||||
</a>
|
||||
</ng-container>
|
||||
</nav>
|
||||
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
+106
-39
@@ -1,99 +1,166 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="floatingRateForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.Floating Rate Name' | translate}}</mat-label>
|
||||
<input matInput required matTooltip="{{ 'tooltips.Unique name for the floating rate scheme' | translate}}" formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Floating Rate Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
required
|
||||
matTooltip="{{ 'tooltips.Unique name for the floating rate scheme' | translate }}"
|
||||
formControlName="name"
|
||||
/>
|
||||
<mat-error *ngIf="floatingRateForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Floating Rate Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Floating Rate Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="checkbox-wrapper" fxFlex="30%">
|
||||
<mat-checkbox formControlName="isBaseLendingRate" matTooltip="{{ 'tooltips.Base lending rate for the organisation' | translate}}" class="checkbox" labelPosition="before">{{'labels.inputs.Is Base Lending Rate' | translate}}?</mat-checkbox>
|
||||
<mat-checkbox
|
||||
formControlName="isBaseLendingRate"
|
||||
matTooltip="{{ 'tooltips.Base lending rate for the organisation' | translate }}"
|
||||
class="checkbox"
|
||||
labelPosition="before"
|
||||
>{{ 'labels.inputs.Is Base Lending Rate' | translate }}?</mat-checkbox
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="checkbox-wrapper" fxFlex="30%">
|
||||
<mat-checkbox formControlName="isActive" matTooltip="{{ 'tooltips.Floating rate scheme to be activated' | translate}}" class="checkbox" labelPosition="before">{{'labels.inputs.Active' | translate}}</mat-checkbox>
|
||||
<mat-checkbox
|
||||
formControlName="isActive"
|
||||
matTooltip="{{ 'tooltips.Floating rate scheme to be activated' | translate }}"
|
||||
class="checkbox"
|
||||
labelPosition="before"
|
||||
>{{ 'labels.inputs.Active' | translate }}</mat-checkbox
|
||||
>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="70%" fxLayoutGap.lt-md="0px" class="m-b-10" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="25%" class="mat-title">{{'labels.inputs.Floating Rate Periods' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Floating interest rate and start date' | translate}}"></i></p>
|
||||
<p fxFlex="25%" class="mat-title">
|
||||
{{ 'labels.inputs.Floating Rate Periods' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Floating interest rate and start date' | translate }}"
|
||||
></i>
|
||||
</p>
|
||||
|
||||
<button mat-mini-fab type="button" color="primary" (click)="addFloatingRatePeriod()">
|
||||
<fa-icon icon="plus"></fa-icon>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="fromDate">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Interest effective from date' | translate}}" mat-sort-header> {{'labels.inputs.From Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod"> {{ floatingRatePeriod.fromDate | dateFormat }} </td>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Interest effective from date' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.From Date' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod">{{ floatingRatePeriod.fromDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="interestRate">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Annualised Interest rate' | translate}}" mat-sort-header> {{'labels.inputs.Interest Rate' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod"> {{ floatingRatePeriod.interestRate | formatNumber }} </td>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Annualised Interest rate' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.Interest Rate' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod">{{ floatingRatePeriod.interestRate | formatNumber }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isDifferential">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Interest rate mentioned is added to base lending rate' | translate}}" mat-sort-header> {{'labels.inputs.Is Differential' | translate}}? </th>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Interest rate mentioned is added to base lending rate' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.Is Differential' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon *ngIf="floatingRate.isDifferentialToBaseLendingRate" icon="check-circle" size="lg"
|
||||
class="is-differential" matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!floatingRate.isDifferentialToBaseLendingRate" icon="times-circle" size="lg"
|
||||
class="not-is-differential" matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="is-differential"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-is-differential"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod" fxLayoutGap="15%">
|
||||
<button type="button" fxFlex="8%" color="primary" mat-icon-button matTooltip="{{ 'tooltips.Edit Period' | translate}}" matTooltipPosition="left"
|
||||
(click)="editFloatingRatePeriod(floatingRatePeriod)">
|
||||
<button
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="primary"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Edit Period' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
(click)="editFloatingRatePeriod(floatingRatePeriod)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button type="button" fxFlex="8%" color="warn" mat-icon-button matTooltip="{{ 'tooltips.Remove Period' | translate}}" matTooltipPosition="right"
|
||||
(click)="deleteFloatingRatePeriod(floatingRatePeriod)">
|
||||
<button
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Remove Period' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
(click)="deleteFloatingRatePeriod(floatingRatePeriod)"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button type="submit" color="primary" [disabled]="!floatingRateForm.valid" *mifosxHasPermission="'CREATE_FLOATINGRATE'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="submit"
|
||||
color="primary"
|
||||
[disabled]="!floatingRateForm.valid"
|
||||
*mifosxHasPermission="'CREATE_FLOATINGRATE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+95
-42
@@ -1,105 +1,158 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="floatingRateForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="15%">
|
||||
|
||||
<mat-form-field fxFlex="25%">
|
||||
<mat-label>{{'labels.inputs.Floating Rate Name' | translate}}</mat-label>
|
||||
<input matInput required matTooltip="{{ 'tooltips.Unique name for the floating rate scheme' | translate}}" formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Floating Rate Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
required
|
||||
matTooltip="{{ 'tooltips.Unique name for the floating rate scheme' | translate }}"
|
||||
formControlName="name"
|
||||
/>
|
||||
<mat-error *ngIf="floatingRateForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Floating Rate Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Floating Rate Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="checkbox-wrapper" fxFlex="25%">
|
||||
<mat-checkbox formControlName="isBaseLendingRate" matTooltip="{{ 'tooltips.Base lending rate for the organisation' | translate}}" class="checkbox" labelPosition="before">
|
||||
{{'labels.inputs.Is Base Lending Rate' | translate}}?
|
||||
<mat-checkbox
|
||||
formControlName="isBaseLendingRate"
|
||||
matTooltip="{{ 'tooltips.Base lending rate for the organisation' | translate }}"
|
||||
class="checkbox"
|
||||
labelPosition="before"
|
||||
>
|
||||
{{ 'labels.inputs.Is Base Lending Rate' | translate }}?
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div class="checkbox-wrapper" fxFlex="15%">
|
||||
<mat-checkbox formControlName="isActive" matTooltip="{{ 'tooltips.Floating rate scheme to be activated' | translate}}" class="checkbox" labelPosition="before">
|
||||
{{'labels.inputs.Active' | translate}}
|
||||
<mat-checkbox
|
||||
formControlName="isActive"
|
||||
matTooltip="{{ 'tooltips.Floating rate scheme to be activated' | translate }}"
|
||||
class="checkbox"
|
||||
labelPosition="before"
|
||||
>
|
||||
{{ 'labels.inputs.Active' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="70%" fxLayoutGap.lt-md="0px" class="m-b-10" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="25%" class="mat-title">{{'labels.inputs.Floating Rate Periods' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Floating interest rate and start date for this floating rate scheme' | translate}}"></i></p>
|
||||
<p fxFlex="25%" class="mat-title">
|
||||
{{ 'labels.inputs.Floating Rate Periods' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{
|
||||
'tooltips.Floating interest rate and start date for this floating rate scheme' | translate
|
||||
}}"
|
||||
></i>
|
||||
</p>
|
||||
|
||||
<button mat-mini-fab type="button" color="primary" (click)="addFloatingRatePeriod()">
|
||||
<fa-icon icon="plus"></fa-icon>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="fromDate">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Interest effective from date' | translate}}" mat-sort-header> {{'labels.inputs.From Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod"> {{ floatingRatePeriod.fromDate | dateFormat }} </td>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Interest effective from date' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.From Date' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod">{{ floatingRatePeriod.fromDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="interestRate">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Annualised Interest rate' | translate}}" mat-sort-header> {{'labels.inputs.Interest Rate' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod"> {{ floatingRatePeriod.interestRate }} </td>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Annualised Interest rate' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.Interest Rate' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod">{{ floatingRatePeriod.interestRate }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isDifferential">
|
||||
<th mat-header-cell *matHeaderCellDef matTooltip="{{ 'tooltips.Interest rate mentioned is added to base lending rate' | translate}}" mat-sort-header> {{'labels.inputs.Is Differential' | translate}}? </th>
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
matTooltip="{{ 'tooltips.Interest rate mentioned is added to base lending rate' | translate }}"
|
||||
mat-sort-header
|
||||
>
|
||||
{{ 'labels.inputs.Is Differential' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon *ngIf="floatingRate.isDifferentialToBaseLendingRate" icon="check-circle" size="lg"
|
||||
class="is-differential" matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!floatingRate.isDifferentialToBaseLendingRate" icon="times-circle" size="lg"
|
||||
class="not-is-differential" matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="is-differential"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-is-differential"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRatePeriod">
|
||||
<button type="button" color="primary" mat-icon-button
|
||||
(click)="editFloatingRatePeriod(floatingRatePeriod)">
|
||||
<button
|
||||
type="button"
|
||||
color="primary"
|
||||
mat-icon-button
|
||||
(click)="editFloatingRatePeriod(floatingRatePeriod)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button type="button" color="warn" mat-icon-button
|
||||
(click)="deleteFloatingRatePeriod(floatingRatePeriod)">
|
||||
<button type="button" color="warn" mat-icon-button (click)="deleteFloatingRatePeriod(floatingRatePeriod)">
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button type="submit" color="primary" [disabled]="!floatingRateForm.valid || floatingRateForm.pristine && isFloatingRateFormPristine">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="submit"
|
||||
color="primary"
|
||||
[disabled]="!floatingRateForm.valid || (floatingRateForm.pristine && isFloatingRateFormPristine)"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+19
-17
@@ -1,41 +1,43 @@
|
||||
<h1 mat-dialog-title>{{'labels.inputs.Floating Rate Periods' | translate}}</h1>
|
||||
<h1 mat-dialog-title>{{ 'labels.inputs.Floating Rate Periods' | translate }}</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
|
||||
<form [formGroup]="floatingRatePeriodForm">
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field (click)="fromDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.From Date' | translate}}</mat-label>
|
||||
<input required matInput formControlName="fromDate" [min]="minDate" [matDatepicker]="fromDatePicker">
|
||||
<mat-label>{{ 'labels.inputs.From Date' | translate }}</mat-label>
|
||||
<input required matInput formControlName="fromDate" [min]="minDate" [matDatepicker]="fromDatePicker" />
|
||||
<mat-datepicker-toggle matSuffix [for]="fromDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #fromDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="floatingRatePeriodForm.controls.fromDate.hasError('required')">
|
||||
{{'labels.inputs.From Date' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.From Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Interest Rate' | translate}}</mat-label>
|
||||
<input matInput type="number" required formControlName="interestRate">
|
||||
<mat-label>{{ 'labels.inputs.Interest Rate' | translate }}</mat-label>
|
||||
<input matInput type="number" required formControlName="interestRate" />
|
||||
<mat-error *ngIf="floatingRatePeriodForm.controls.interestRate.hasError('required')">
|
||||
{{'labels.inputs.Interest Rate' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox class="is-differential" formControlName="isDifferentialToBaseLendingRate" labelPosition="after">
|
||||
{{'labels.inputs.Is Differential' | translate}}?
|
||||
{{ 'labels.inputs.Is Differential' | translate }}?
|
||||
</mat-checkbox>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button mat-button mat-dialog-close>{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!floatingRatePeriodForm.valid || floatingRatePeriodForm.pristine" (click)="submit()">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button mat-button mat-dialog-close>{{ 'labels.buttons.Cancel' | translate }}</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!floatingRatePeriodForm.valid || floatingRatePeriodForm.pristine"
|
||||
(click)="submit()"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
@@ -1,56 +1,80 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_FLOATINGRATE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Floating Rate' | translate}}
|
||||
{{ 'labels.buttons.Create Floating Rate' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRate"> {{ floatingRate.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">{{ floatingRate.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="createdBy">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Created By' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRate"> {{ floatingRate.createdBy }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Created By' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">{{ floatingRate.createdBy }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isBaseLendingRate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Is Base Lending Rate' | translate}}? </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Is Base Lending Rate' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon *ngIf="floatingRate.isBaseLendingRate" icon="check-circle" size="lg" class="is-base-lending-rate-or-active" matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!floatingRate.isBaseLendingRate" icon="times-circle" size="lg" class="not-is-base-lending-rate-or-active" matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="floatingRate.isBaseLendingRate"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="is-base-lending-rate-or-active"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!floatingRate.isBaseLendingRate"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-is-base-lending-rate-or-active"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isActive">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.catalogs.Active' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon *ngIf="floatingRate.isActive" icon="check-circle" size="lg" class="is-base-lending-rate-or-active" matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!floatingRate.isActive" icon="times-circle" size="lg" class="not-is-base-lending-rate-or-active" matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.catalogs.Active' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon
|
||||
*ngIf="floatingRate.isActive"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="is-base-lending-rate-or-active"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!floatingRate.isActive"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-is-base-lending-rate-or-active"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row" [routerLink]="[row.id]"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" class="select-row" [routerLink]="[row.id]"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+31
-37
@@ -1,89 +1,83 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_FLOATINGRATE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content" fxLayout.lt-md="column">
|
||||
|
||||
<div fxFlex="18%" class="mat-body-strong">
|
||||
{{'labels.inputs.Floating Rate Name' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="18%" class="mat-body-strong">{{ 'labels.inputs.Floating Rate Name' | translate }}:</div>
|
||||
|
||||
<div fxFlex="18%">
|
||||
{{ floatingRateData.name }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="20%" class="mat-body-strong">
|
||||
{{'labels.inputs.Is Base Lending Rate' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="20%" class="mat-body-strong">{{ 'labels.inputs.Is Base Lending Rate' | translate }}:</div>
|
||||
|
||||
<div fxFlex="10%">
|
||||
{{ floatingRateData.isBaseLendingRate | yesNo }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="14%" class="mat-body-strong">
|
||||
{{'labels.inputs.Is Active' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="14%" class="mat-body-strong">{{ 'labels.inputs.Is Active' | translate }}:</div>
|
||||
|
||||
<div fxFlex="10%">
|
||||
{{ floatingRateData.isActive | yesNo }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<p class="mat-title">{{'labels.inputs.Floating Rate Periods' | translate}}</p>
|
||||
<p class="mat-title">{{ 'labels.inputs.Floating Rate Periods' | translate }}</p>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="fromDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.From Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRate"> {{ floatingRate.fromDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.From Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">{{ floatingRate.fromDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="interestRate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Interest Rate' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let floatingRate"> {{ floatingRate.interestRate | number }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Interest Rate' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">{{ floatingRate.interestRate | number }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isDifferential">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Is Differential' | translate}}? </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Is Differential' | translate }}?
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let floatingRate">
|
||||
<fa-icon *ngIf="floatingRate.isDifferentialToBaseLendingRate" icon="check-circle" size="lg"
|
||||
class="is-differential" matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!floatingRate.isDifferentialToBaseLendingRate" icon="times-circle" size="lg"
|
||||
class="not-is-differential" matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="is-differential"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!floatingRate.isDifferentialToBaseLendingRate"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-is-differential"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+620
-449
File diff suppressed because it is too large
Load Diff
+23
-39
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #loanProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,24 +21,23 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="loanProductDetailsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-details-step [loanProductsTemplate]="loanProductsTemplate"></mifosx-loan-product-details-step>
|
||||
|
||||
<mifosx-loan-product-details-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
></mifosx-loan-product-details-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductCurrencyForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-currency-step [loanProductsTemplate]="loanProductsTemplate"></mifosx-loan-product-currency-step>
|
||||
|
||||
<mifosx-loan-product-currency-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
></mifosx-loan-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductSettingsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-settings-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
@@ -48,11 +45,10 @@
|
||||
(advancePaymentStrategy)="advancePaymentStrategy($event)"
|
||||
>
|
||||
</mifosx-loan-product-settings-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanProductInterestRefundForm">
|
||||
<ng-template matStepLabel>{{'labels.inputs.INTEREST REFUND' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST REFUND' | translate }}</ng-template>
|
||||
<mifosx-loan-product-interest-refund-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
||||
@@ -61,36 +57,31 @@
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PAYMENT ALLOCATION' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PAYMENT ALLOCATION' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-payment-strategy-step
|
||||
[advancedPaymentAllocations]="advancedPaymentAllocations"
|
||||
[advancedCreditAllocations]="advancedCreditAllocations"
|
||||
[advancedPaymentAllocationTransactionTypes]="loanProductsTemplate.advancedPaymentAllocationTransactionTypes"
|
||||
[paymentAllocationOrderDefault]="loanProductsTemplate.advancedPaymentAllocationTypes"
|
||||
[advancedCreditAllocationTransactionTypes]="loanProductsTemplate.creditAllocationTransactionTypes"
|
||||
[creditAllocationOrderDefault]="loanProductsTemplate.creditAllocationAllocationTypes"
|
||||
(setPaymentAllocation)="setPaymentAllocation($event)"
|
||||
(setCreditAllocation)="setCreditAllocation($event)"
|
||||
[advancedPaymentAllocations]="advancedPaymentAllocations"
|
||||
[advancedCreditAllocations]="advancedCreditAllocations"
|
||||
[advancedPaymentAllocationTransactionTypes]="loanProductsTemplate.advancedPaymentAllocationTransactionTypes"
|
||||
[paymentAllocationOrderDefault]="loanProductsTemplate.advancedPaymentAllocationTypes"
|
||||
[advancedCreditAllocationTransactionTypes]="loanProductsTemplate.creditAllocationTransactionTypes"
|
||||
[creditAllocationOrderDefault]="loanProductsTemplate.creditAllocationAllocationTypes"
|
||||
(setPaymentAllocation)="setPaymentAllocation($event)"
|
||||
(setCreditAllocation)="setCreditAllocation($event)"
|
||||
>
|
||||
</mifosx-loan-product-payment-strategy-step>
|
||||
|
||||
<mifosx-stepper-buttons></mifosx-stepper-buttons>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductTermsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-terms-step [loanProductsTemplate]="loanProductsTemplate"></mifosx-loan-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-charges-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
@@ -98,12 +89,10 @@
|
||||
[multiDisburseLoan]="loanProductSettingsForm.get('multiDisburseLoan')"
|
||||
>
|
||||
</mifosx-loan-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-accounting-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
@@ -111,12 +100,10 @@
|
||||
[loanProductFormValid]="loanProductFormValid"
|
||||
>
|
||||
</mifosx-loan-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="loanProductFormValid" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-preview-step
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
@@ -125,9 +112,6 @@
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-loan-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+94
-110
@@ -1,133 +1,117 @@
|
||||
<div class="container">
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #loanProductStepper>
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #loanProductStepper>
|
||||
<ng-template matStepperIcon="edit">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
<ng-template matStepperIcon="done">
|
||||
<fa-icon icon="check" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
|
||||
<ng-template matStepperIcon="edit">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
<ng-template matStepperIcon="error">
|
||||
<fa-icon icon="exclamation-triangle" size="lg"></fa-icon>
|
||||
</ng-template>
|
||||
|
||||
<ng-template matStepperIcon="done">
|
||||
<fa-icon icon="check" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
<ng-template matStepperIcon="preview">
|
||||
<fa-icon icon="eye" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
|
||||
<ng-template matStepperIcon="error">
|
||||
<fa-icon icon="exclamation-triangle" size="lg"></fa-icon>
|
||||
</ng-template>
|
||||
<mat-step [stepControl]="loanProductDetailsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepperIcon="preview">
|
||||
<fa-icon icon="eye" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
<mifosx-loan-product-details-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
></mifosx-loan-product-details-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductDetailsForm" completed>
|
||||
<mat-step [stepControl]="loanProductCurrencyForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
<mifosx-loan-product-currency-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
></mifosx-loan-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mifosx-loan-product-details-step [loanProductsTemplate]="loanProductAndTemplate"></mifosx-loan-product-details-step>
|
||||
<mat-step [stepControl]="loanProductSettingsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
</mat-step>
|
||||
<mifosx-loan-product-settings-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[isLinkedToFloatingInterestRates]="loanProductTermsForm.get('isLinkedToFloatingInterestRates')"
|
||||
(advancePaymentStrategy)="advancePaymentStrategy($event)"
|
||||
>
|
||||
</mifosx-loan-product-settings-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductCurrencyForm" completed>
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanProductInterestRefundForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST REFUND' | translate }}</ng-template>
|
||||
<mifosx-loan-product-interest-refund-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
||||
>
|
||||
</mifosx-loan-product-interest-refund-step>
|
||||
</mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PAYMENT ALLOCATION' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-currency-step [loanProductsTemplate]="loanProductAndTemplate"></mifosx-loan-product-currency-step>
|
||||
<mifosx-loan-product-payment-strategy-step
|
||||
[advancedPaymentAllocations]="advancedPaymentAllocations"
|
||||
[advancedCreditAllocations]="advancedCreditAllocations"
|
||||
[advancedPaymentAllocationTransactionTypes]="loanProductAndTemplate.advancedPaymentAllocationTransactionTypes"
|
||||
[paymentAllocationOrderDefault]="loanProductAndTemplate.advancedPaymentAllocationTypes"
|
||||
[advancedCreditAllocationTransactionTypes]="loanProductAndTemplate.creditAllocationTransactionTypes"
|
||||
[creditAllocationOrderDefault]="loanProductAndTemplate.creditAllocationAllocationTypes"
|
||||
(setPaymentAllocation)="setPaymentAllocation($event)"
|
||||
(setCreditAllocation)="setCreditAllocation($event)"
|
||||
>
|
||||
</mifosx-loan-product-payment-strategy-step>
|
||||
|
||||
</mat-step>
|
||||
<mifosx-stepper-buttons></mifosx-stepper-buttons>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductSettingsForm" completed>
|
||||
<mat-step [stepControl]="loanProductTermsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
<mifosx-loan-product-terms-step [loanProductsTemplate]="loanProductAndTemplate"></mifosx-loan-product-terms-step>
|
||||
</mat-step>
|
||||
|
||||
<mifosx-loan-product-settings-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[isLinkedToFloatingInterestRates]="loanProductTermsForm.get('isLinkedToFloatingInterestRates')"
|
||||
(advancePaymentStrategy)="advancePaymentStrategy($event)"
|
||||
>
|
||||
</mifosx-loan-product-settings-step>
|
||||
<mat-step completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
</mat-step>
|
||||
<mifosx-loan-product-charges-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[currencyCode]="loanProductCurrencyForm.get('currencyCode')"
|
||||
[multiDisburseLoan]="loanProductSettingsForm.get('multiDisburseLoan')"
|
||||
>
|
||||
</mifosx-loan-product-charges-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanProductInterestRefundForm" completed>
|
||||
<ng-template matStepLabel>{{'labels.inputs.INTEREST REFUND' | translate}}</ng-template>
|
||||
<mifosx-loan-product-interest-refund-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
||||
>
|
||||
</mifosx-loan-product-interest-refund-step>
|
||||
</mat-step>
|
||||
<mat-step [stepControl]="loanProductAccountingForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" completed>
|
||||
<mifosx-loan-product-accounting-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProductFormValid]="loanProductFormValidAndNotPristine"
|
||||
>
|
||||
</mifosx-loan-product-accounting-step>
|
||||
</mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PAYMENT ALLOCATION' | translate}}</ng-template>
|
||||
<mat-step state="preview" *ngIf="loanProductFormValidAndNotPristine" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-payment-strategy-step
|
||||
[advancedPaymentAllocations]="advancedPaymentAllocations"
|
||||
[advancedCreditAllocations]="advancedCreditAllocations"
|
||||
[advancedPaymentAllocationTransactionTypes]="loanProductAndTemplate.advancedPaymentAllocationTransactionTypes"
|
||||
[paymentAllocationOrderDefault]="loanProductAndTemplate.advancedPaymentAllocationTypes"
|
||||
[advancedCreditAllocationTransactionTypes]="loanProductAndTemplate.creditAllocationTransactionTypes"
|
||||
[creditAllocationOrderDefault]="loanProductAndTemplate.creditAllocationAllocationTypes"
|
||||
(setPaymentAllocation)="setPaymentAllocation($event)"
|
||||
(setCreditAllocation)="setCreditAllocation($event)"
|
||||
>
|
||||
</mifosx-loan-product-payment-strategy-step>
|
||||
|
||||
<mifosx-stepper-buttons></mifosx-stepper-buttons>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductTermsForm" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-terms-step [loanProductsTemplate]="loanProductAndTemplate"></mifosx-loan-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-charges-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[currencyCode]="loanProductCurrencyForm.get('currencyCode')"
|
||||
[multiDisburseLoan]="loanProductSettingsForm.get('multiDisburseLoan')"
|
||||
>
|
||||
</mifosx-loan-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="loanProductAccountingForm" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-accounting-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProductFormValid]="loanProductFormValidAndNotPristine"
|
||||
>
|
||||
</mifosx-loan-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="loanProductFormValidAndNotPristine" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
|
||||
<mifosx-loan-product-preview-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProduct]="loanProduct"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-loan-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
<mifosx-loan-product-preview-step
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProduct]="loanProduct"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-loan-product-preview-step>
|
||||
</mat-step>
|
||||
</mat-horizontal-stepper>
|
||||
</div>
|
||||
|
||||
+220
-119
@@ -1,21 +1,36 @@
|
||||
<form [formGroup]="loanProductAccountingForm">
|
||||
|
||||
<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-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
|
||||
<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">
|
||||
{{ 'labels.accounting.' + accountingRule | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div *ngIf="loanProductAccountingForm.value.accountingRule >= 2 && loanProductAccountingForm.value.accountingRule <= 4" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-checkbox *ngIf="isAccountingAccrualBased" fxFlex="73%" formControlName="enableAccrualActivityPosting">{{'labels.inputs.Enable Accrual Activity Posting on Installment Due Date' | translate}}</mat-checkbox>
|
||||
<div
|
||||
*ngIf="loanProductAccountingForm.value.accountingRule >= 2 && loanProductAccountingForm.value.accountingRule <= 4"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<mat-checkbox *ngIf="isAccountingAccrualBased" fxFlex="73%" formControlName="enableAccrualActivityPosting">{{
|
||||
'labels.inputs.Enable Accrual Activity Posting on Installment Due Date' | translate
|
||||
}}</mat-checkbox>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}} / {{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.heading.Assets' | translate }} / {{ 'labels.heading.Liabilities' | translate }}
|
||||
</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.fundSourceAccountId"
|
||||
[glAccountList]="assetAndLiabilityAccountData"
|
||||
[required]="true"
|
||||
@@ -23,9 +38,10 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Assets' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.loanPortfolioAccountId"
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
@@ -33,7 +49,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.transfersInSuspenseAccountId"
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
@@ -41,9 +58,17 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<div *ngIf="loanProductAccountingForm.value.accountingRule === 3 || loanProductAccountingForm.value.accountingRule === 4" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<div
|
||||
*ngIf="
|
||||
loanProductAccountingForm.value.accountingRule === 3 || loanProductAccountingForm.value.accountingRule === 4
|
||||
"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.receivableInterestAccountId"
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
@@ -51,7 +76,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.receivableFeeAccountId"
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
@@ -59,21 +85,22 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.receivablePenaltyAccountId"
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Penalties Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Income' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.interestOnLoanAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -81,7 +108,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromFeeAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -89,7 +117,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -97,7 +126,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromRecoveryAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -105,7 +135,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromChargeOffInterestAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -113,7 +144,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromChargeOffFeesAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -121,7 +153,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromChargeOffPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -129,7 +162,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromGoodwillCreditInterestAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -137,7 +171,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromGoodwillCreditFeesAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -145,7 +180,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromGoodwillCreditPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
@@ -155,9 +191,10 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Expenses' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Expenses' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.writeOffAccountId"
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
@@ -165,7 +202,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.goodwillCreditAccountId"
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
@@ -173,7 +211,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.chargeOffExpenseAccountId"
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
@@ -181,7 +220,8 @@
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.chargeOffFraudExpenseAccountId"
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
@@ -191,9 +231,10 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Liabilities' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.overpaymentLiabilityAccountId"
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
@@ -203,39 +244,62 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules">{{'labels.heading.Advanced Accounting Rules' | translate}}</mat-checkbox>
|
||||
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules">{{
|
||||
'labels.heading.Advanced Accounting Rules' | translate
|
||||
}}</mat-checkbox>
|
||||
|
||||
<div *ngIf="loanProductAccountingForm.value.advancedAccountingRules" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4">{{'labels.heading.Configure Fund Sources for Payment Channels' | translate}}</h4>
|
||||
<div
|
||||
*ngIf="loanProductAccountingForm.value.advancedAccountingRules"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 fxFlex="33%" class="mat-h4">
|
||||
{{ 'labels.heading.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="63%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="paymentChannelToFundSourceMappings.value" *ngIf="paymentChannelToFundSourceMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:paymentTypeData:'id':'name' }}
|
||||
{{ paymentFundSource.paymentTypeId | find: paymentTypeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:assetAccountData:'id':'name' }}
|
||||
{{ paymentFundSource.fundSourceAccountId | find: assetAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="edit('PaymentFundSource', paymentChannelToFundSourceMappings, i)">
|
||||
<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)">
|
||||
@@ -245,37 +309,46 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4">{{'labels.heading.Map Fees to Specific Income Accounts' | translate}}</h4>
|
||||
<h4 fxFlex="33%" class="mat-h4">{{ 'labels.heading.Map Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<div fxFlex="63%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="add('FeesIncome', feeToIncomeAccountMappings)">
|
||||
<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}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value" *ngIf="feeToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: chargeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:incomeAndLiabilityAccountData:'id':'name' }}
|
||||
{{ feesIncome.incomeAccountId | find: incomeAndLiabilityAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="edit('FeesIncome', feeToIncomeAccountMappings, i)">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
@@ -287,40 +360,54 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4">{{'labels.heading.Map Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
<h4 fxFlex="33%" class="mat-h4">
|
||||
{{ 'labels.heading.Map Penalties to Specific Income Accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="63%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value" *ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: penaltyData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ penaltyIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
|
||||
<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)">
|
||||
@@ -330,64 +417,78 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4">{{'labels.heading.Map Charge-off reasons to Expense accounts' | translate}}</h4>
|
||||
<h4 fxFlex="33%" class="mat-h4">
|
||||
{{ 'labels.heading.Map Charge-off reasons to Expense accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="63%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="add('ChargeOffReasonExpense', chargeOffReasonToExpenseAccountMappings)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
<div fxFlex="63%">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('ChargeOffReasonExpense', chargeOffReasonToExpenseAccountMappings)"
|
||||
>
|
||||
<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]="chargeOffReasonToExpenseAccountMappings.value"
|
||||
*ngIf="chargeOffReasonToExpenseAccountMappings.value.length !== 0"
|
||||
>
|
||||
<ng-container matColumnDef="chargeOffReasonCodeValueId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Charge-off reason' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping">
|
||||
{{
|
||||
chargeOffReasonsToExpenseMapping.chargeOffReasonCodeValueId
|
||||
| find: chargeOffReasonOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="expenseGLAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Expense Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping">
|
||||
{{ chargeOffReasonsToExpenseMapping.expenseGLAccountId | find: expenseAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping; let i = index">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="edit('ChargeOffReasonExpense', chargeOffReasonToExpenseAccountMappings, i)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargeOffReasonToExpenseAccountMappings.value" *ngIf="chargeOffReasonToExpenseAccountMappings.value.length !== 0">
|
||||
|
||||
<ng-container matColumnDef="chargeOffReasonCodeValueId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Charge-off reason' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping">
|
||||
{{ chargeOffReasonsToExpenseMapping.chargeOffReasonCodeValueId | find:chargeOffReasonOptions:'id':'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="expenseGLAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Expense Account' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping">
|
||||
{{ chargeOffReasonsToExpenseMapping.expenseGLAccountId | find:expenseAccountData:'id':'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonsToExpenseMapping; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="edit('ChargeOffReasonExpense', chargeOffReasonToExpenseAccountMappings, i)">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="delete(chargeOffReasonToExpenseAccountMappings, i)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargeOffReasonExpenseDisplayedColumns;"></tr>
|
||||
|
||||
</table>
|
||||
<button mat-icon-button color="warn" (click)="delete(chargeOffReasonToExpenseAccountMappings, i)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!loanProductFormValid">
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+55
-39
@@ -1,11 +1,13 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option
|
||||
*ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value:multiDisburseLoan.value"
|
||||
[value]="charge">
|
||||
*ngFor="
|
||||
let charge of chargeData | chargesFilter: chargesDataSource : currencyCode.value : multiDisburseLoan.value
|
||||
"
|
||||
[value]="charge"
|
||||
>
|
||||
{{ charge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -14,43 +16,48 @@
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource | chargesPenaltyFilter:false"
|
||||
#chargesTable [hidden]="chargesTable.dataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource | chargesPenaltyFilter: false"
|
||||
#chargesTable
|
||||
[hidden]="chargesTable.dataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -59,67 +66,78 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div fxFlex="98%">
|
||||
<h3 class="mat-h3">{{'labels.inputs.Overdue Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3">{{ 'labels.inputs.Overdue Charges' | translate }}</h3>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Overdue Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Overdue Charge' | translate }}</mat-label>
|
||||
<mat-select #overdueCharge>
|
||||
<mat-option *ngFor="let overdueCharge of overdueChargeData | chargesFilter:chargesDataSource:currencyCode.value"
|
||||
[value]="overdueCharge">
|
||||
<mat-option
|
||||
*ngFor="let overdueCharge of overdueChargeData | chargesFilter: chargesDataSource : currencyCode.value"
|
||||
[value]="overdueCharge"
|
||||
>
|
||||
{{ overdueCharge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(overdueCharge)"
|
||||
[disabled]="!overdueCharge.value">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addCharge(overdueCharge)"
|
||||
[disabled]="!overdueCharge.value"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource | chargesPenaltyFilter:true"
|
||||
#overdueChargesTable [hidden]="overdueChargesTable.dataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource | chargesPenaltyFilter: true"
|
||||
#overdueChargesTable
|
||||
[hidden]="overdueChargesTable.dataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.name + ', ' + overdueCharge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ overdueCharge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
{{ overdueCharge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ overdueCharge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let overdueCharge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(overdueCharge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -128,19 +146,17 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+29
-16
@@ -1,48 +1,61 @@
|
||||
<form [formGroup]="loanProductCurrencyForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
|
||||
<mat-select formControlName="currencyCode" matTooltip="{{ 'tooltips.The currency in which the loan will be disbursed' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="currencyCode"
|
||||
matTooltip="{{ 'tooltips.The currency in which the loan will be disbursed' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option *ngFor="let currency of currencyData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
|
||||
<input type="number" matTooltip="{{ 'tooltips.Number of decimal places to be used to track and report' | translate}}" matInput formControlName="digitsAfterDecimal" required>
|
||||
<mat-label>{{ 'labels.inputs.Decimal Places' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matTooltip="{{ 'tooltips.Number of decimal places to be used to track and report' | translate }}"
|
||||
matInput
|
||||
formControlName="digitsAfterDecimal"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Decimal Places' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Enter multiples of currency value' | translate}}" formControlName="inMultiplesOf">
|
||||
<mat-label>{{ 'labels.inputs.Currency in multiples of' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Enter multiples of currency value' | translate }}"
|
||||
formControlName="inMultiplesOf"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Installment in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="installmentAmountInMultiplesOf">
|
||||
<mat-label>{{ 'labels.inputs.Installment in multiples of' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="installmentAmountInMultiplesOf" />
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+62
-24
@@ -1,71 +1,109 @@
|
||||
<form [formGroup]="loanProductDetailsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" matTooltip="{{ 'tooltips.Product name is a unique identifier' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="name"
|
||||
matTooltip="{{ 'tooltips.Product name is a unique identifier' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="shortName" maxlength="4" matTooltip="{{ 'tooltips.Short name is a unique identifier' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Short Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="shortName"
|
||||
maxlength="4"
|
||||
matTooltip="{{ 'tooltips.Short name is a unique identifier' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Short Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.External Id' | translate}}</mat-label>
|
||||
<input matInput formControlName="externalId" matTooltip="{{ 'tooltips.External Id is a unique identifier' | translate}}">
|
||||
<mat-label>{{ 'labels.inputs.External Id' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="externalId"
|
||||
matTooltip="{{ 'tooltips.External Id is a unique identifier' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Fund' | translate}}</mat-label>
|
||||
<mat-select matTooltip="{{ 'tooltips.Loan products may be assigned' | translate}}" formControlName="fundId">
|
||||
<mat-label>{{ 'labels.inputs.Fund' | translate }}</mat-label>
|
||||
<mat-select matTooltip="{{ 'tooltips.Loan products may be assigned' | translate }}" formControlName="fundId">
|
||||
<mat-option *ngFor="let fund of fundData" [value]="fund.id">
|
||||
{{ fund.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox labelPosition="before" matTooltip="{{ 'tooltips.A borrower loan counter (cycle)' | translate}}" formControlName="includeInBorrowerCycle" fxFlex="48%">
|
||||
{{'labels.inputs.Include in Customer Loan Counter' | translate}}
|
||||
<mat-checkbox
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.A borrower loan counter (cycle)' | translate }}"
|
||||
formControlName="includeInBorrowerCycle"
|
||||
fxFlex="48%"
|
||||
>
|
||||
{{ 'labels.inputs.Include in Customer Loan Counter' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="startDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Start Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="startDatePicker" matTooltip="{{ 'tooltips.loan product will be active and available to clients' | translate}}" formControlName="startDate">
|
||||
<mat-label>{{ 'labels.inputs.Start Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="startDatePicker"
|
||||
matTooltip="{{ 'tooltips.loan product will be active and available to clients' | translate }}"
|
||||
formControlName="startDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #startDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="closeDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Close Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="closeDatePicker" matTooltip="{{ 'tooltips.loan product will become inactive and unavailable to clients' | translate}}" formControlName="closeDate">
|
||||
<mat-label>{{ 'labels.inputs.Close Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="closeDatePicker"
|
||||
matTooltip="{{ 'tooltips.loan product will become inactive and unavailable to clients' | translate }}"
|
||||
formControlName="closeDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="closeDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #closeDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<textarea matInput matTooltip="{{ 'tooltips.Provide additional information' | translate}}" formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Provide additional information' | translate }}"
|
||||
formControlName="description"
|
||||
cdkTextareaAutosize
|
||||
cdkAutosizeMinRows="2"
|
||||
></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+13
-6
@@ -1,12 +1,19 @@
|
||||
<form [formGroup]="loanProductInterestRefundForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Supported Interest Refund Types' | translate}}</mat-label>
|
||||
<mat-select multiple formControlName="supportedInterestRefundTypes" matTooltip="{{ 'tooltips.Refund transactions where interest refund will automatically be calculated' | translate}}">
|
||||
<mat-option *ngFor="let supportedTransaction of supportedInterestRefundTypesOptions" [value]="supportedTransaction.id">
|
||||
{{ supportedTransaction.value | translateKey:'catalogs' }}
|
||||
<mat-label>{{ 'labels.inputs.Supported Interest Refund Types' | translate }}</mat-label>
|
||||
<mat-select
|
||||
multiple
|
||||
formControlName="supportedInterestRefundTypes"
|
||||
matTooltip="{{
|
||||
'tooltips.Refund transactions where interest refund will automatically be calculated' | translate
|
||||
}}"
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let supportedTransaction of supportedInterestRefundTypesOptions"
|
||||
[value]="supportedTransaction.id"
|
||||
>
|
||||
{{ supportedTransaction.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
+39
-22
@@ -1,6 +1,7 @@
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="m-b-15 right" fxFlex="90%">{{'labels.heading.You can drag and drop the rows to set a Payment Allocations order' | translate}}</h4>
|
||||
<h4 class="m-b-15 right" fxFlex="90%">
|
||||
{{ 'labels.heading.You can drag and drop the rows to set a Payment Allocations order' | translate }}
|
||||
</h4>
|
||||
|
||||
<div class="right" fxFlex="4%" *ngIf="!isDefault()">
|
||||
<button mat-button color="warn" (click)="removeTransaction()">
|
||||
@@ -9,63 +10,79 @@
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 container m-t-15" *ngIf="paymentAllocationsData">
|
||||
<table mat-table [dataSource]="paymentAllocationsData" #table cdkDropList
|
||||
[cdkDropListData]="paymentAllocationsData" (cdkDropListDropped)="dropTable($event, false)">
|
||||
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="paymentAllocationsData"
|
||||
#table
|
||||
cdkDropList
|
||||
[cdkDropListData]="paymentAllocationsData"
|
||||
(cdkDropListDropped)="dropTable($event, false)"
|
||||
>
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> </th>
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let paymentAllocation">
|
||||
<fa-icon icon="bars"></fa-icon>
|
||||
<fa-icon icon="bars"></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="order">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Order' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentAllocation; let rowIndex = index"> {{ (rowIndex + 1) }} </td>
|
||||
<td mat-cell *matCellDef="let paymentAllocation; let rowIndex = index">{{ rowIndex + 1 }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="allocationRule">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Allocation Rule' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentAllocation"> {{ paymentAllocation.value | translateKey:'catalogs' }} </td>
|
||||
<td mat-cell *matCellDef="let paymentAllocation">{{ paymentAllocation.value | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 container m-t-15 m-b-15" *ngIf="creditAllocationsData">
|
||||
<table mat-table [dataSource]="creditAllocationsData" #table cdkDropList
|
||||
[cdkDropListData]="creditAllocationsData" (cdkDropListDropped)="dropTable($event, true)">
|
||||
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="creditAllocationsData"
|
||||
#table
|
||||
cdkDropList
|
||||
[cdkDropListData]="creditAllocationsData"
|
||||
(cdkDropListDropped)="dropTable($event, true)"
|
||||
>
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> </th>
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let creditAllocation">
|
||||
<fa-icon icon="bars"></fa-icon>
|
||||
<fa-icon icon="bars"></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="order">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Order' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let creditAllocation; let rowIndex = index"> {{ (rowIndex + 1) }} </td>
|
||||
<td mat-cell *matCellDef="let creditAllocation; let rowIndex = index">{{ rowIndex + 1 }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="allocationRule">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Credit Allocation Rule' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let creditAllocation"> {{ creditAllocation.value | translateKey:'catalogs' }} </td>
|
||||
<td mat-cell *matCellDef="let creditAllocation">{{ creditAllocation.value | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="33%" class="m-t-20" *ngIf="advancedPaymentAllocation && advancedPaymentAllocation.futureInstallmentAllocationRules">
|
||||
<mat-form-field
|
||||
fxFlex="33%"
|
||||
class="m-t-20"
|
||||
*ngIf="advancedPaymentAllocation && advancedPaymentAllocation.futureInstallmentAllocationRules"
|
||||
>
|
||||
<mat-label>{{ 'labels.inputs.Future Installment Allocation Rule' | translate }}</mat-label>
|
||||
<mat-select [formControl]="futureInstallmentAllocationRule">
|
||||
<mat-option *ngFor="let futureInstallmentAllocationRule of advancedPaymentAllocation.futureInstallmentAllocationRules"
|
||||
[value]="futureInstallmentAllocationRule.code">
|
||||
{{ futureInstallmentAllocationRule.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let futureInstallmentAllocationRule of advancedPaymentAllocation.futureInstallmentAllocationRules"
|
||||
[value]="futureInstallmentAllocationRule.code"
|
||||
>
|
||||
{{ futureInstallmentAllocationRule.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
+30
-28
@@ -1,31 +1,33 @@
|
||||
<mat-tab-group animationDuration="0ms" fxLayout="row wrap" fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column">
|
||||
<mat-tab-group animationDuration="0ms" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-tab *ngFor="let advancedPaymentAllocation of advancedPaymentAllocations">
|
||||
<ng-template mat-tab-label>
|
||||
{{ advancedPaymentAllocation.transaction.value | translateKey: 'catalogs' }}
|
||||
</ng-template>
|
||||
<mifosx-advance-payment-allocation-tab
|
||||
[advancedPaymentAllocation]="advancedPaymentAllocation"
|
||||
(allocationChanged)="allocationChanged($event)"
|
||||
(transactionTypeRemoved)="transactionTypeRemoved($event)"
|
||||
>
|
||||
</mifosx-advance-payment-allocation-tab>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab *ngFor="let advancedPaymentAllocation of advancedPaymentAllocations">
|
||||
<ng-template mat-tab-label>
|
||||
{{advancedPaymentAllocation.transaction.value | translateKey:'catalogs'}}
|
||||
</ng-template>
|
||||
<mifosx-advance-payment-allocation-tab [advancedPaymentAllocation]="advancedPaymentAllocation"
|
||||
(allocationChanged)="allocationChanged($event)"
|
||||
(transactionTypeRemoved)="transactionTypeRemoved($event)">
|
||||
</mifosx-advance-payment-allocation-tab>
|
||||
</mat-tab>
|
||||
<mat-tab *ngFor="let advancedCreditAllocation of advancedCreditAllocations">
|
||||
<ng-template mat-tab-label>
|
||||
{{ advancedCreditAllocation.transaction.value | translateKey: 'catalogs' }}
|
||||
</ng-template>
|
||||
<mifosx-advance-payment-allocation-tab
|
||||
[advancedCreditAllocation]="advancedCreditAllocation"
|
||||
(allocationChanged)="allocationChanged($event)"
|
||||
(transactionTypeRemoved)="transactionTypeRemoved($event)"
|
||||
>
|
||||
</mifosx-advance-payment-allocation-tab>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab *ngFor="let advancedCreditAllocation of advancedCreditAllocations">
|
||||
<ng-template mat-tab-label>
|
||||
{{advancedCreditAllocation.transaction.value | translateKey:'catalogs'}}
|
||||
</ng-template>
|
||||
<mifosx-advance-payment-allocation-tab [advancedCreditAllocation]="advancedCreditAllocation"
|
||||
(allocationChanged)="allocationChanged($event)"
|
||||
(transactionTypeRemoved)="transactionTypeRemoved($event)">
|
||||
</mifosx-advance-payment-allocation-tab>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab disabled>
|
||||
<ng-template mat-tab-label>
|
||||
<button mat-icon-button (click)="addTransaction()">
|
||||
<mat-icon><fa-icon icon="plus" size="sm"></fa-icon></mat-icon>
|
||||
</button>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
<mat-tab disabled>
|
||||
<ng-template mat-tab-label>
|
||||
<button mat-icon-button (click)="addTransaction()">
|
||||
<mat-icon><fa-icon icon="plus" size="sm"></fa-icon></mat-icon>
|
||||
</button>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
|
||||
+10
-11
@@ -1,24 +1,23 @@
|
||||
|
||||
<mifosx-loan-product-summary
|
||||
[action]="'preview'"
|
||||
[loanProduct]="loanProduct"
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
[useDueForRepaymentsConfigurations]="loanProduct.useDueForRepaymentsConfigurations"
|
||||
[paymentAllocations]="loanProduct.paymentAllocation"
|
||||
[creditAllocations]="loanProduct.creditAllocation"
|
||||
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
|
||||
[action]="'preview'"
|
||||
[loanProduct]="loanProduct"
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
[useDueForRepaymentsConfigurations]="loanProduct.useDueForRepaymentsConfigurations"
|
||||
[paymentAllocations]="loanProduct.paymentAllocation"
|
||||
[creditAllocations]="loanProduct.creditAllocation"
|
||||
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
|
||||
>
|
||||
</mifosx-loan-product-summary>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submitEvent.emit()">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+531
-223
File diff suppressed because it is too large
Load Diff
+377
-201
@@ -1,446 +1,622 @@
|
||||
<form [formGroup]="loanProductTermsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Principal' | translate}}<i class="m-l-10 fas fa-question" matTooltip="{{ 'tooltips.Fields are used to define the minimum, default, and maximum principal' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Principal' | translate
|
||||
}}<i
|
||||
class="m-l-10 fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Fields are used to define the minimum, default, and maximum principal' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minPrincipal" [min]="0">
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minPrincipal" [min]="0" />
|
||||
<mat-error>
|
||||
{{'labels.commons.Minimum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong>
|
||||
{{ 'labels.commons.Minimum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="principal" required>
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="principal" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default Principal' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default Principal' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxPrincipal" [min]="0">
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="maxPrincipal" [min]="0" />
|
||||
<mat-error>
|
||||
{{'labels.commons.Minimum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong> {{'labels.commons.and must be greater than' | translate}} <strong>{{'labels.commons.Minimum Principal' | translate}}</strong>
|
||||
{{ 'labels.commons.Minimum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
{{ 'labels.commons.and must be greater than' | translate }}
|
||||
<strong>{{ 'labels.commons.Minimum Principal' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="96%" labelPosition="before" formControlName="allowApprovedDisbursedAmountsOverApplied">
|
||||
{{'labels.inputs.Allow approval / disbursal above loan applied amount' | translate}}
|
||||
{{ 'labels.inputs.Allow approval / disbursal above loan applied amount' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<div fxFlex="98%" fxLayoutGap="2%" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<mat-form-field fxFlex="32%" *ngIf="loanProductTermsForm.value.allowApprovedDisbursedAmountsOverApplied">
|
||||
<mat-label>{{'labels.inputs.Over Amount Calculation Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Over Amount Calculation Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="overAppliedCalculationType" required>
|
||||
<mat-option *ngFor="let overAppliedCalculationType of overAppliedCalculationTypeData" [value]="overAppliedCalculationType.id">
|
||||
{{ overAppliedCalculationType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let overAppliedCalculationType of overAppliedCalculationTypeData"
|
||||
[value]="overAppliedCalculationType.id"
|
||||
>
|
||||
{{ overAppliedCalculationType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="32%" *ngIf="loanProductTermsForm.value.allowApprovedDisbursedAmountsOverApplied">
|
||||
<mat-label>{{'labels.inputs.Over Amount' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="overAppliedNumber" required>
|
||||
<mat-label>{{ 'labels.inputs.Over Amount' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="overAppliedNumber" required />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Installment day calculation from' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Repayment schedule will start the installment' | translate}}"></i></mat-label>
|
||||
<mat-label
|
||||
>{{ 'labels.inputs.Installment day calculation from' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Repayment schedule will start the installment' | translate }}"
|
||||
></i
|
||||
></mat-label>
|
||||
<mat-select formControlName="repaymentStartDateType" required>
|
||||
<mat-option *ngFor="let repaymentStartDateType of repaymentStartDateTypeOptions" [value]="repaymentStartDateType.id">
|
||||
{{ repaymentStartDateType.value | translateKey:'catalogs'}}
|
||||
<mat-option
|
||||
*ngFor="let repaymentStartDateType of repaymentStartDateTypeOptions"
|
||||
[value]="repaymentStartDateType.id"
|
||||
>
|
||||
{{ repaymentStartDateType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Number of repayments' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Fields are used to define the minimum, default, and maximum number of repayments' | translate}}"></i></h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Number of repayments' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{
|
||||
'tooltips.Fields are used to define the minimum, default, and maximum number of repayments' | translate
|
||||
}}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minNumberOfRepayments" [min]="1">
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minNumberOfRepayments" [min]="1" />
|
||||
<mat-error>
|
||||
{{'labels.commons.Minimum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="numberOfRepayments" required>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default number of repayments' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.commons.Minimum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxNumberOfRepayments" [min]="0">
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="numberOfRepayments" required />
|
||||
<mat-error>
|
||||
{{'labels.commons.Maximum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong> {{'labels.commons.and must be greater than' | translate}} <strong>{{'labels.commons.Minimum Principal' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default number of repayments' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="maxNumberOfRepayments" [min]="0" />
|
||||
<mat-error>
|
||||
{{ 'labels.commons.Maximum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
{{ 'labels.commons.and must be greater than' | translate }}
|
||||
<strong>{{ 'labels.commons.Minimum Principal' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Interest Rates' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.inputs.Interest Rates' | translate }}</h3>
|
||||
|
||||
<mat-checkbox [formControl]="zeroInterest" fxFlex="23%" labelPosition="before" *ngIf="!loanProductTermsForm.value.isLinkedToFloatingInterestRates">
|
||||
{{'labels.inputs.Is Zero Interest Rate?' | translate}}
|
||||
<mat-checkbox
|
||||
[formControl]="zeroInterest"
|
||||
fxFlex="23%"
|
||||
labelPosition="before"
|
||||
*ngIf="!loanProductTermsForm.value.isLinkedToFloatingInterestRates"
|
||||
>
|
||||
{{ 'labels.inputs.Is Zero Interest Rate?' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-checkbox fxFlex="32%" labelPosition="before" formControlName="isLinkedToFloatingInterestRates" *ngIf="!isZeroInterest()">
|
||||
{{'labels.inputs.Is Linked to floating interest rates?' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="32%"
|
||||
labelPosition="before"
|
||||
formControlName="isLinkedToFloatingInterestRates"
|
||||
*ngIf="!isZeroInterest()"
|
||||
>
|
||||
{{ 'labels.inputs.Is Linked to floating interest rates?' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<div *ngIf="!loanProductTermsForm.value.isLinkedToFloatingInterestRates" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Nominal interest rate' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Define the minimum, default, maximum, and period for the nominal interest rate' | translate}}"></i></h4>
|
||||
<div
|
||||
*ngIf="!loanProductTermsForm.value.isLinkedToFloatingInterestRates"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Nominal interest rate' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{
|
||||
'tooltips.Define the minimum, default, maximum, and period for the nominal interest rate' | translate
|
||||
}}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minInterestRatePerPeriod" [min]="0" [attr.disabled]="isZeroInterest()">
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="minInterestRatePerPeriod"
|
||||
[min]="0"
|
||||
[attr.disabled]="isZeroInterest()"
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.commons.Minimum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="interestRatePerPeriod" required [attr.disabled]="isZeroInterest()">
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default nominal interest rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.commons.Minimum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxInterestRatePerPeriod" [min]="0" [attr.disabled]="isZeroInterest()">
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="interestRatePerPeriod"
|
||||
required
|
||||
[attr.disabled]="isZeroInterest()"
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.commons.Maximum Value must be' | translate}} <strong>{{'labels.commons.greater equal to than 0' | translate}}</strong> {{'labels.commons.and must be greater than' | translate}} <strong>{{'labels.commons.Minimum Principal' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default nominal interest rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="maxInterestRatePerPeriod"
|
||||
[min]="0"
|
||||
[attr.disabled]="isZeroInterest()"
|
||||
/>
|
||||
<mat-error>
|
||||
{{ 'labels.commons.Maximum Value must be' | translate }}
|
||||
<strong>{{ 'labels.commons.greater equal to than 0' | translate }}</strong>
|
||||
{{ 'labels.commons.and must be greater than' | translate }}
|
||||
<strong>{{ 'labels.commons.Minimum Principal' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="23%">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<mat-select formControlName="interestRateFrequencyType" required [disabled]="isZeroInterest()">
|
||||
<mat-option *ngFor="let interestRateFrequencyType of interestRateFrequencyTypeData" [value]="interestRateFrequencyType.id">
|
||||
{{ interestRateFrequencyType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let interestRateFrequencyType of interestRateFrequencyTypeData"
|
||||
[value]="interestRateFrequencyType.id"
|
||||
>
|
||||
{{ interestRateFrequencyType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Nominal interest rate frequency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Nominal interest rate frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="loanProductTermsForm.value.isLinkedToFloatingInterestRates && !isZeroInterest()" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Floating Interest Rate' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Define the minimum, default, maximum, and period for the floating interest rate' | translate}}"></i></h4>
|
||||
<div
|
||||
*ngIf="loanProductTermsForm.value.isLinkedToFloatingInterestRates && !isZeroInterest()"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
fxLayoutAlign.gt-sm="start center"
|
||||
>
|
||||
<h4 fxFlex="98%" class="mat-h4">
|
||||
{{ 'labels.inputs.Floating Interest Rate' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{
|
||||
'tooltips.Define the minimum, default, maximum, and period for the floating interest rate' | translate
|
||||
}}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Floating Rate' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Floating Rate' | translate }}</mat-label>
|
||||
<mat-select formControlName="floatingRatesId" required>
|
||||
<mat-option *ngFor="let floatingRate of floatingRateData" [value]="floatingRate.id">
|
||||
{{ floatingRate.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Floating rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Floating rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Differential Rate' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="interestRateDifferential" required>
|
||||
<mat-label>{{ 'labels.inputs.Differential Rate' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="interestRateDifferential" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Differential rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Differential rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="31%" labelPosition="before" formControlName="isFloatingInterestRateCalculationAllowed">
|
||||
{{'labels.inputs.Is Floating calculation allowed?' | translate}}
|
||||
{{ 'labels.inputs.Is Floating calculation allowed?' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minDifferentialLendingRate" [min]="0" required>
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minDifferentialLendingRate" [min]="0" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Minimum interest rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Minimum interest rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="defaultDifferentialLendingRate" required>
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="defaultDifferentialLendingRate" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default interest rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default interest rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDifferentialLendingRate" required>
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDifferentialLendingRate" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Maximum interest rate' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Maximum interest rate' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Variations' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.inputs.Variations' | translate }}</h3>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="useBorrowerCycle">
|
||||
{{'labels.inputs.Terms vary based on loan cycle' | translate}}
|
||||
{{ 'labels.inputs.Terms vary based on loan cycle' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<div *ngIf="loanProductTermsForm.value.useBorrowerCycle" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Principal by loan cycle' | translate}}</h4>
|
||||
<div
|
||||
*ngIf="loanProductTermsForm.value.useBorrowerCycle"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 fxFlex="73%" class="mat-h4">{{ 'labels.inputs.Principal by loan cycle' | translate }}</h4>
|
||||
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('Principal', principalVariationsForBorrowerCycle)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addVariationsForBorrowerCycle('Principal', principalVariationsForBorrowerCycle)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="principalVariationsForBorrowerCycle.value" *ngIf="principalVariationsForBorrowerCycle.value.length">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="principalVariationsForBorrowerCycle.value"
|
||||
*ngIf="principalVariationsForBorrowerCycle.value.length"
|
||||
>
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType | find:valueConditionTypeData:'id':'value' }}
|
||||
{{ variation.valueConditionType | find: valueConditionTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Loan Cycle' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Loan Cycle' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Minimum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Default' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Maximum' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="editVariationsForBorrowerCycle('Principal', principalVariationsForBorrowerCycle, i)">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="deleteVariationsForBorrowerCycle(principalVariationsForBorrowerCycle, i)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Number of repayments by loan cycle' | translate}}</h4>
|
||||
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('NumberOfRepayments', numberOfRepaymentVariationsForBorrowerCycle)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="numberOfRepaymentVariationsForBorrowerCycle.value" *ngIf="numberOfRepaymentVariationsForBorrowerCycle.value.length">
|
||||
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType | find:valueConditionTypeData:'id':'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Loan Cycle' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Minimum' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Minimum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Default' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Default' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Maximum' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Maximum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="editVariationsForBorrowerCycle('NumberOfRepayments', numberOfRepaymentVariationsForBorrowerCycle, i)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editVariationsForBorrowerCycle('Principal', principalVariationsForBorrowerCycle, i)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="deleteVariationsForBorrowerCycle(numberOfRepaymentVariationsForBorrowerCycle, i)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteVariationsForBorrowerCycle(principalVariationsForBorrowerCycle, i)"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="73%" class="mat-h4">{{'labels.inputs.Nominal interest rate by loan cycle' | translate}}</h4>
|
||||
<h4 fxFlex="73%" class="mat-h4">{{ 'labels.inputs.Number of repayments by loan cycle' | translate }}</h4>
|
||||
|
||||
<div fxFlex="23%">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addVariationsForBorrowerCycle('NumberOfRepayments', numberOfRepaymentVariationsForBorrowerCycle)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="interestRateVariationsForBorrowerCycle.value" *ngIf="interestRateVariationsForBorrowerCycle.value.length">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="numberOfRepaymentVariationsForBorrowerCycle.value"
|
||||
*ngIf="numberOfRepaymentVariationsForBorrowerCycle.value.length"
|
||||
>
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType | find:valueConditionTypeData:'id':'value' }}
|
||||
{{ variation.valueConditionType | find: valueConditionTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Loan Cycle' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Loan Cycle' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Minimum' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Minimum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Default' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Default' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Maximum' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Maximum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation; let i = index">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="
|
||||
editVariationsForBorrowerCycle('NumberOfRepayments', numberOfRepaymentVariationsForBorrowerCycle, i)
|
||||
"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteVariationsForBorrowerCycle(numberOfRepaymentVariationsForBorrowerCycle, i)"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<h4 fxFlex="73%" class="mat-h4">{{ 'labels.inputs.Nominal interest rate by loan cycle' | translate }}</h4>
|
||||
|
||||
<div fxFlex="23%">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="interestRateVariationsForBorrowerCycle.value"
|
||||
*ngIf="interestRateVariationsForBorrowerCycle.value.length"
|
||||
>
|
||||
<ng-container matColumnDef="valueConditionType">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.valueConditionType | find: valueConditionTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="borrowerCycleNumber">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Loan Cycle' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.borrowerCycleNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minValue">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Minimum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.minValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="defaultValue">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Default' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.defaultValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maxValue">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Maximum' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let variation">
|
||||
{{ variation.maxValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="editVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle, i)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editVariationsForBorrowerCycle('NominalInterestRate', interestRateVariationsForBorrowerCycle, i)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="deleteVariationsForBorrowerCycle(interestRateVariationsForBorrowerCycle, i)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteVariationsForBorrowerCycle(interestRateVariationsForBorrowerCycle, i)"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4">{{'labels.inputs.Repaid every' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.Fields are input to calculating the repayment schedule' | translate}}"></i></h4>
|
||||
<h4 fxFlex="33%" class="mat-h4">
|
||||
{{ 'labels.inputs.Repaid every' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Fields are input to calculating the repayment schedule' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="repaymentEvery" required>
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="repaymentEvery" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Repaid every frequency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Repaid every frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.Frequency Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Frequency Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="repaymentFrequencyType" required>
|
||||
<mat-option *ngFor="let repaymentFrequencyType of repaymentFrequencyTypeData" [value]="repaymentFrequencyType.id">
|
||||
{{ repaymentFrequencyType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let repaymentFrequencyType of repaymentFrequencyTypeData"
|
||||
[value]="repaymentFrequencyType.id"
|
||||
>
|
||||
{{ repaymentFrequencyType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Repaid every type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Repaid every type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="33%" class="mat-h4" *ngIf="allowFixedLength()">{{'labels.inputs.Fixed Length' | translate}} <i class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Due to regulatory requirements in some countries' | translate}}"></i></h4>
|
||||
<h4 fxFlex="33%" class="mat-h4" *ngIf="allowFixedLength()">
|
||||
{{ 'labels.inputs.Fixed Length' | translate }}
|
||||
<i
|
||||
class="fas fa-question"
|
||||
matTooltip="{{ 'tooltips.Due to regulatory requirements in some countries' | translate }}"
|
||||
></i>
|
||||
</h4>
|
||||
|
||||
<mat-form-field fxFlex="30%" *ngIf="allowFixedLength()">
|
||||
<mat-label>{{'labels.inputs.Fixed Length' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedLength">
|
||||
<mat-label>{{ 'labels.inputs.Fixed Length' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="fixedLength" />
|
||||
</mat-form-field>
|
||||
<span fxFlex="30%" *ngIf="allowFixedLength()" class="label-field">{{ loanProductTermsForm.value.repaymentFrequencyType | find:repaymentFrequencyTypeData:'id':'value' | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="30%" *ngIf="allowFixedLength()" class="label-field">{{
|
||||
loanProductTermsForm.value.repaymentFrequencyType
|
||||
| find: repaymentFrequencyTypeData : 'id' : 'value'
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Minimum days between disbursal and first repayment date' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minimumDaysBetweenDisbursalAndFirstRepayment">
|
||||
<mat-label>{{ 'labels.inputs.Minimum days between disbursal and first repayment date' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minimumDaysBetweenDisbursalAndFirstRepayment" />
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
@@ -1,84 +1,126 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<div #buttonCreateLoanProduct class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_LOANPRODUCT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Loan Product' | translate}}
|
||||
</button>
|
||||
<div #buttonCreateLoanProduct class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_LOANPRODUCT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Loan Product' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #loanProductsTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loanProduct"> {{ loanProduct.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loanProduct">{{ loanProduct.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="shortName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Short Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loanProduct"> {{ loanProduct.shortName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Short Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loanProduct">{{ loanProduct.shortName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="closeDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Expiry Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loanProduct"> {{ loanProduct.closeDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Expiry Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loanProduct">{{ loanProduct.closeDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Status' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loanProduct">
|
||||
<div [className]="loanProduct.status | statusLookup">
|
||||
<fa-icon matTooltip="{{ loanProduct.status === 'loanProduct.active' ? ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}" matTooltipPosition="right" icon="circle" size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
matTooltip="{{
|
||||
loanProduct.status === 'loanProduct.active'
|
||||
? ('labels.inputs.Active' | translate)
|
||||
: ('labels.catalogs.Inactive' | translate)
|
||||
}}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateLoanProduct let-popover="popover">
|
||||
<h2>{{'labels.heading.Create Loan Product' | translate}}t</h2>
|
||||
<p class="mw300">{{'labels.text.This option allows you to create new loan product.' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Create Loan Product' | translate }}t</h2>
|
||||
<p class="mw300">{{ 'labels.text.This option allows you to create new loan product.' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate}}</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()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter loan products.' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter loan products.' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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(templateButtonCreateLoanProduct,buttonCreateLoanProduct, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateLoanProductsTable,loanProductsTable, 'top', true)">{{'labels.buttons.Next' | translate}}</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(templateButtonCreateLoanProduct, buttonCreateLoanProduct, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateLoanProductsTable, loanProductsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateLoanProductsTable let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.List of loan products in the organization' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102039585/Loan+Products" target="_blank">{{'labels.heading.Loan Products' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of loan products in the organization' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102039585/Loan+Products" target="_blank">{{
|
||||
'labels.heading.Loan Products' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+8
-8
@@ -5,19 +5,19 @@
|
||||
</button>
|
||||
-->
|
||||
<button mat-raised-button color="primary" *mifosxHasPermission="'UPDATE_LOANPRODUCT'" (click)="exportDefinition()">
|
||||
<fa-icon icon="download" class="m-r-10"></fa-icon>{{'labels.buttons.Export' | translate}}
|
||||
<fa-icon icon="download" class="m-r-10"></fa-icon>{{ 'labels.buttons.Export' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['../edit']" *mifosxHasPermission="'UPDATE_LOANPRODUCT'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{'labels.buttons.Edit' | translate}}
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mifosx-loan-product-summary
|
||||
[action]="'view'"
|
||||
[loanProduct]="loanProduct"
|
||||
[useDueForRepaymentsConfigurations]="useDueForRepaymentsConfigurations"
|
||||
[paymentAllocations]="loanProduct.paymentAllocation"
|
||||
[creditAllocations]="loanProduct.creditAllocation"
|
||||
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
|
||||
[action]="'view'"
|
||||
[loanProduct]="loanProduct"
|
||||
[useDueForRepaymentsConfigurations]="useDueForRepaymentsConfigurations"
|
||||
[paymentAllocations]="loanProduct.paymentAllocation"
|
||||
[creditAllocations]="loanProduct.creditAllocation"
|
||||
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
|
||||
>
|
||||
</mifosx-loan-product-summary>
|
||||
|
||||
+9
-9
@@ -9,10 +9,11 @@
|
||||
</mat-expansion-panel-header>
|
||||
|
||||
<div fxFlexFill>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Future Installment Allocation Rule' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ futureInstallmentRuleValue(paymentAllocation.futureInstallmentAllocationRule) | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="60%">{{
|
||||
futureInstallmentRuleValue(paymentAllocation.futureInstallmentAllocationRule) | translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
@@ -26,9 +27,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr *ngFor="let paymentAllocation of paymentAllocation.paymentAllocationOrder; let idx = index;">
|
||||
<td>{{ (idx + 1) }}</td>
|
||||
<td>{{ allocationRuleValue(paymentAllocation.paymentAllocationRule) | translateKey:'catalogs' }}</td>
|
||||
<tr *ngFor="let paymentAllocation of paymentAllocation.paymentAllocationOrder; let idx = index">
|
||||
<td>{{ idx + 1 }}</td>
|
||||
<td>{{ allocationRuleValue(paymentAllocation.paymentAllocationRule) | translateKey: 'catalogs' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -47,7 +48,6 @@
|
||||
</mat-expansion-panel-header>
|
||||
|
||||
<div fxFlexFill>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Credit Allocation Order' | translate }}</span>
|
||||
<span fxFlex="60%">
|
||||
@@ -59,9 +59,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr *ngFor="let creditAllocation of creditAllocation.creditAllocationOrder; let idx = index;">
|
||||
<td>{{ (idx + 1) }}</td>
|
||||
<td>{{ allocationRuleValue(creditAllocation.creditAllocationRule) | translateKey:'catalogs'}}</td>
|
||||
<tr *ngFor="let creditAllocation of creditAllocation.creditAllocationOrder; let idx = index">
|
||||
<td>{{ idx + 1 }}</td>
|
||||
<td>{{ allocationRuleValue(creditAllocation.creditAllocationRule) | translateKey: 'catalogs' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1,23 +1,29 @@
|
||||
<mat-card class="product-card">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<nav mat-tab-nav-bar class="navigation-tabs">
|
||||
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
|
||||
[active]="general.isActive">
|
||||
{{'labels.heading.General' | translate}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./general']"
|
||||
routerLinkActive
|
||||
#general="routerLinkActive"
|
||||
[active]="general.isActive"
|
||||
>
|
||||
{{ 'labels.heading.General' | translate }}
|
||||
</a>
|
||||
<ng-container *ngFor="let loanProductDatatable of loanProductDatatables">
|
||||
<a mat-tab-link [routerLink]="['./datatables',loanProductDatatable.registeredTableName]" routerLinkActive
|
||||
#datatable="routerLinkActive" [active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + loanProductDatatable.registeredTableName">
|
||||
{{loanProductDatatable.registeredTableName}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./datatables', loanProductDatatable.registeredTableName]"
|
||||
routerLinkActive
|
||||
#datatable="routerLinkActive"
|
||||
[active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + loanProductDatatable.registeredTableName"
|
||||
>
|
||||
{{ loanProductDatatable.registeredTableName }}
|
||||
</a>
|
||||
</ng-container>
|
||||
</nav>
|
||||
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
+36
-30
@@ -1,77 +1,83 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="bucketForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="100%">
|
||||
<mat-label>{{"labels.inputs.Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="bucketForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Name" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h3 fxFlex="40%" class="mat-h3">{{'labels.heading.Delinquency Ranges' | translate }}</h3>
|
||||
<h3 fxFlex="40%" class="mat-h3">{{ 'labels.heading.Delinquency Ranges' | translate }}</h3>
|
||||
|
||||
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addDelinquencyRange()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{"labels.buttons.Add" | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="rangesDataSource" [hidden]="rangesDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="classification">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Classification" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Classification' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'classification'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'classification' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minimumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Days From" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Days From' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'minimumAgeDays'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'minimumAgeDays' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maximumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Days Till" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Days Till' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'maximumAgeDays'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'maximumAgeDays' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn"
|
||||
(click)="deleteDelinquencyRange(rowIndex)" matTooltip="{{ 'tooltips.Delete' | translate}}"
|
||||
matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteDelinquencyRange(rowIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!bucketForm.valid" *mifosxHasPermission="'CREATE_DELINQUENCY_BUCKET'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!bucketForm.valid"
|
||||
*mifosxHasPermission="'CREATE_DELINQUENCY_BUCKET'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+12
-13
@@ -1,35 +1,34 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_DELINQUENCY_BUCKET'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[routerLink]="['create']"
|
||||
*mifosxHasPermission="'CREATE_DELINQUENCY_BUCKET'"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Delinquency Bucket' | translate }}
|
||||
{{ 'labels.buttons.Create Delinquency Bucket' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Name" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let delinquencyBucket"> {{ delinquencyBucket.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let delinquencyBucket">{{ delinquencyBucket.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+39
-33
@@ -1,80 +1,86 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="bucketForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="100%">
|
||||
<mat-label>{{"labels.inputs.Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="bucketForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Name" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" |translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h3 fxFlex="40%" class="mat-h3">{{'labels.heading.Delinquency Ranges' | translate }}</h3>
|
||||
<h3 fxFlex="40%" class="mat-h3">{{ 'labels.heading.Delinquency Ranges' | translate }}</h3>
|
||||
|
||||
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addDelinquencyRange()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{"labels.buttons.Add" | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="rangesDataSource" [hidden]="rangesDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="classification">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Classification" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let row"> {{ row.classification }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Classification' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">{{ row.classification }}</td>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'classification'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'classification' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minimumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Days From" | translate}}</th>
|
||||
<td mat-cell *matCellDef="let row"> {{ row.minimumAgeDays }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Days From' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">{{ row.minimumAgeDays }}</td>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'minimumAgeDays'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'minimumAgeDays' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maximumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Days Till" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let row"> {{ row.maximumAgeDays }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Days Till' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row">{{ row.maximumAgeDays }}</td>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
{{ row.rangeId | find: delinquencyRangesData:'id':'maximumAgeDays'}} </td>
|
||||
{{ row.rangeId | find: delinquencyRangesData : 'id' : 'maximumAgeDays' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn"
|
||||
(click)="deleteDelinquencyRange(rowIndex)" matTooltip="{{ 'tooltips.Delete' | translate}}"
|
||||
matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteDelinquencyRange(rowIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!dataWasChanged" *mifosxHasPermission="'UPDATE_DELINQUENCY_BUCKET'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!dataWasChanged"
|
||||
*mifosxHasPermission="'UPDATE_DELINQUENCY_BUCKET'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+12
-17
@@ -1,24 +1,25 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_DELINQUENCY_BUCKET'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="deleteDelinquencyBucket()" *mifosxHasPermission="'DELETE_DELINQUENCY_BUCKET'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
(click)="deleteDelinquencyBucket()"
|
||||
*mifosxHasPermission="'DELETE_DELINQUENCY_BUCKET'"
|
||||
>
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Name" | translate}}
|
||||
{{ 'labels.inputs.Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -26,21 +27,19 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Classification" | translate}} {{"labels.inputs.Name" | translate}}
|
||||
{{ 'labels.inputs.Classification' | translate }} {{ 'labels.inputs.Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="25%" class="mat-body-strong">
|
||||
{{"labels.inputs.Days From" | translate}}
|
||||
{{ 'labels.inputs.Days From' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="25%" class="mat-body-strong">
|
||||
{{"labels.inputs.Days Till" | translate}}
|
||||
{{ 'labels.inputs.Days Till' | translate }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div fxLayout="row wrap" class="content" *ngFor="let range of delinquencyBucketData.ranges">
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ range.classification }}
|
||||
</div>
|
||||
@@ -52,11 +51,7 @@
|
||||
<div fxFlex="25%">
|
||||
{{ range.maximumAgeDays }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+21
-20
@@ -1,45 +1,46 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="delinquencyRangeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Classification" | translate}}</mat-label>
|
||||
<input matInput required formControlName="classification">
|
||||
<mat-label>{{ 'labels.inputs.Classification' | translate }}</mat-label>
|
||||
<input matInput required formControlName="classification" />
|
||||
<mat-error *ngIf="delinquencyRangeForm.controls.classification.hasError('required')">
|
||||
{{"labels.inputs.Classification" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Classification' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Days From" | translate}}</mat-label>
|
||||
<input matInput type="number" required formControlName="minimumAgeDays">
|
||||
<mat-label>{{ 'labels.inputs.Days From' | translate }}</mat-label>
|
||||
<input matInput type="number" required formControlName="minimumAgeDays" />
|
||||
<mat-error *ngIf="delinquencyRangeForm.controls.minimumAgeDays.hasError('required')">
|
||||
{{"labels.inputs.Days From" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Days From' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Days Till" | translate}}</mat-label>
|
||||
<input matInput type="number" formControlName="maximumAgeDays">
|
||||
<mat-label>{{ 'labels.inputs.Days Till' | translate }}</mat-label>
|
||||
<input matInput type="number" formControlName="maximumAgeDays" />
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!delinquencyRangeForm.valid" *mifosxHasPermission="'CREATE_DELINQUENCY_RANGE'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!delinquencyRangeForm.valid"
|
||||
*mifosxHasPermission="'CREATE_DELINQUENCY_RANGE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+16
-16
@@ -1,45 +1,45 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_DELINQUENCY_RANGE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.text.Create Delinquency Range' | translate }}
|
||||
{{ 'labels.text.Create Delinquency Range' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="classification">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="classification"> {{"labels.inputs.Classification" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange"> {{ delinquencyRange.classification }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="classification">
|
||||
{{ 'labels.inputs.Classification' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange">{{ delinquencyRange.classification }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="minimumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="minimumAgeDays">{{"labels.inputs.Days From" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange"> {{ delinquencyRange.minimumAgeDays }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="minimumAgeDays">
|
||||
{{ 'labels.inputs.Days From' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange">{{ delinquencyRange.minimumAgeDays }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maximumAgeDays">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="maximumAgeDays"> {{"labels.inputs.Days Till" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange"> {{ delinquencyRange.maximumAgeDays }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="maximumAgeDays">
|
||||
{{ 'labels.inputs.Days Till' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let delinquencyRange">{{ delinquencyRange.maximumAgeDays }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+21
-20
@@ -1,45 +1,46 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="delinquencyRangeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Classification" | translate}}</mat-label>
|
||||
<input matInput required formControlName="classification">
|
||||
<mat-label>{{ 'labels.inputs.Classification' | translate }}</mat-label>
|
||||
<input matInput required formControlName="classification" />
|
||||
<mat-error *ngIf="delinquencyRangeForm.controls.classification.hasError('required')">
|
||||
{{"labels.inputs.Classification" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Classification' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Days From" | translate}}</mat-label>
|
||||
<input matInput type="number" required formControlName="minimumAgeDays">
|
||||
<mat-label>{{ 'labels.inputs.Days From' | translate }}</mat-label>
|
||||
<input matInput type="number" required formControlName="minimumAgeDays" />
|
||||
<mat-error *ngIf="delinquencyRangeForm.controls.minimumAgeDays.hasError('required')">
|
||||
{{"labels.inputs.Days From" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Days From' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{"labels.inputs.Days Till" | translate}}</mat-label>
|
||||
<input matInput type="number" formControlName="maximumAgeDays">
|
||||
<mat-label>{{ 'labels.inputs.Days Till' | translate }}</mat-label>
|
||||
<input matInput type="number" formControlName="maximumAgeDays" />
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!delinquencyRangeForm.valid" *mifosxHasPermission="'UPDATE_DELINQUENCY_RANGE'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!delinquencyRangeForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_DELINQUENCY_RANGE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+11
-14
@@ -1,24 +1,25 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_DELINQUENCY_RANGE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="deleteDelinquencyRange()" *mifosxHasPermission="'DELETE_DELINQUENCY_RANGE'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
(click)="deleteDelinquencyRange()"
|
||||
*mifosxHasPermission="'DELETE_DELINQUENCY_RANGE'"
|
||||
>
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Classification" | translate}}
|
||||
{{ 'labels.inputs.Classification' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -26,7 +27,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Days From" | translate}}
|
||||
{{ 'labels.inputs.Days From' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -34,17 +35,13 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{"labels.inputs.Days Till" | translate}}
|
||||
{{ 'labels.inputs.Days Till' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ delinquencyRangeData.maximumAgeDays }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+8
-18
@@ -1,47 +1,37 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_DELINQUENCY_RANGE'">
|
||||
<mat-icon matListIcon [routerLink]="['ranges']">
|
||||
<fa-icon icon="building" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['ranges']">{{'labels.heading.Manage Delinquency Ranges' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['ranges']">{{ 'labels.heading.Manage Delinquency Ranges' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="!arrowBooleans[0]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="arrowBooleans[0]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['ranges']">{{'labels.text.Define delinquency day ranges' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['ranges']">
|
||||
{{ 'labels.text.Define delinquency day ranges' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_DELINQUENCY_BUCKET'">
|
||||
<mat-icon matListIcon [routerLink]="['buckets']">
|
||||
<fa-icon icon="building" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['buckets']">{{'labels.heading.Manage Delinquency Buckets' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['buckets']">{{ 'labels.heading.Manage Delinquency Buckets' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="!arrowBooleans[1]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="arrowBooleans[1]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['buckets']">{{'labels.text.Define delinquency bucket as set of ranges' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['buckets']">
|
||||
{{ 'labels.text.Define delinquency bucket as set of ranges' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+54
-37
@@ -1,87 +1,104 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="taxComponentForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="taxComponentForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}}
|
||||
<strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Percentage' | translate}}</mat-label>
|
||||
<input type="number" matInput required formControlName="percentage">
|
||||
<mat-label>{{ 'labels.inputs.Percentage' | translate }}</mat-label>
|
||||
<input type="number" matInput required formControlName="percentage" />
|
||||
<mat-error *ngIf="taxComponentForm.controls.percentage.hasError('required')">
|
||||
{{'labels.inputs.Percentage ' | translate}} {{'labels.commons.is' | translate}}
|
||||
<strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Percentage ' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="taxComponentForm.controls.percentage.hasError('pattern') ||
|
||||
taxComponentForm.controls.percentage.hasError('max')">
|
||||
{{'labels.inputs.Percentage' | translate}} <strong>{{'labels.commons.should' | translate}}</strong> {{'labels.commons.be larger than 0 and at most 100' | translate}}
|
||||
<mat-error
|
||||
*ngIf="
|
||||
taxComponentForm.controls.percentage.hasError('pattern') ||
|
||||
taxComponentForm.controls.percentage.hasError('max')
|
||||
"
|
||||
>
|
||||
{{ 'labels.inputs.Percentage' | translate }} <strong>{{ 'labels.commons.should' | translate }}</strong>
|
||||
{{ 'labels.commons.be larger than 0 and at most 100' | translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Debit Account Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Debit Account Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="debitAccountType">
|
||||
<mat-option *ngFor="let debitAccountType of debitAccountTypeData" [value]="debitAccountType.id">
|
||||
{{ debitAccountType.value | translateKey:'inputs.accounting' }}
|
||||
{{ debitAccountType.value | translateKey: 'inputs.accounting' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mifosx-gl-account-selector *ngIf="debitAccountData.length > 0"
|
||||
<mifosx-gl-account-selector
|
||||
*ngIf="debitAccountData.length > 0"
|
||||
[inputFormControl]="taxComponentForm.controls.debitAcountId"
|
||||
[glAccountList]="debitAccountData" [required]="false" [inputLabel]="'Credit Account'">
|
||||
[glAccountList]="debitAccountData"
|
||||
[required]="false"
|
||||
[inputLabel]="'Credit Account'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Credit Account Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Credit Account Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="creditAccountType">
|
||||
<mat-option *ngFor="let creditAccountType of creditAccountTypeData" [value]="creditAccountType.id">
|
||||
{{ creditAccountType.value | translateKey:'inputs.accounting' }}
|
||||
{{ creditAccountType.value | translateKey: 'inputs.accounting' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mifosx-gl-account-selector *ngIf="creditAccountData.length > 0"
|
||||
<mifosx-gl-account-selector
|
||||
*ngIf="creditAccountData.length > 0"
|
||||
[inputFormControl]="taxComponentForm.controls.creditAcountId"
|
||||
[glAccountList]="creditAccountData" [required]="false" [inputLabel]="'Credit Account'">
|
||||
[glAccountList]="creditAccountData"
|
||||
[required]="false"
|
||||
[inputLabel]="'Credit Account'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-form-field (click)="startDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Start Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="startDatePicker" required
|
||||
formControlName="startDate">
|
||||
<mat-label>{{ 'labels.inputs.Start Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="startDatePicker"
|
||||
required
|
||||
formControlName="startDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #startDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="taxComponentForm.controls.startDate.hasError('required')">
|
||||
{{'labels.inputs.Start Date' | translate}} {{'labels.commons.is' | translate}}
|
||||
<strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Start Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!taxComponentForm.valid"
|
||||
*mifosxHasPermission="'CREATE_TAXCOMPONENT'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!taxComponentForm.valid"
|
||||
*mifosxHasPermission="'CREATE_TAXCOMPONENT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+34
-25
@@ -1,60 +1,69 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="taxComponentForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="taxComponentForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Percentage' | translate}}</mat-label>
|
||||
<input matInput required formControlName="percentage">
|
||||
<mat-label>{{ 'labels.inputs.Percentage' | translate }}</mat-label>
|
||||
<input matInput required formControlName="percentage" />
|
||||
<mat-error *ngIf="taxComponentForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Percentage' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Percentage' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="taxComponentData.creditAccountType.value">
|
||||
<mat-label>{{'labels.inputs.Credit Account Type' | translate}}</mat-label>
|
||||
<input matInput formControlName="creditAccountType">
|
||||
<mat-label>{{ 'labels.inputs.Credit Account Type' | translate }}</mat-label>
|
||||
<input matInput formControlName="creditAccountType" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="taxComponentData.creditAccount.name">
|
||||
<mat-label>{{'labels.inputs.Credit Account' | translate}}</mat-label>
|
||||
<input matInput formControlName="creditAccount">
|
||||
<mat-label>{{ 'labels.inputs.Credit Account' | translate }}</mat-label>
|
||||
<input matInput formControlName="creditAccount" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field (click)="startDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Start Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="startDatePicker" required formControlName="startDate">
|
||||
<mat-label>{{ 'labels.inputs.Start Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="startDatePicker"
|
||||
required
|
||||
formControlName="startDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #startDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="taxComponentForm.controls.startDate.hasError('required')">
|
||||
{{'labels.inputs.Start Date' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Start Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!taxComponentForm.valid" *mifosxHasPermission="'UPDATE_TAXCOMPONENT'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!taxComponentForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_TAXCOMPONENT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,50 +1,46 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_TAXCOMPONENT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Tax Component' | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_TAXCOMPONENT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Tax Component' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="mat-elevation-z8">
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">{{ taxComponent.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<ng-container matColumnDef="percentage">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Percentage' | translate }} %</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">{{ taxComponent.percentage | formatNumber }}</td>
|
||||
</ng-container>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Start Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">{{ taxComponent.startDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
<ng-container matColumnDef="glAccount">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">
|
||||
({{ taxComponent.creditAccount.glCode }}) {{ taxComponent.creditAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.name }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="percentage">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Percentage' | translate}} %</th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.percentage | formatNumber }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Start Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.startDate | dateFormat }} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="glAccount">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Account' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> ({{ taxComponent.creditAccount.glCode }}) {{ taxComponent.creditAccount.name }} </td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+11
-17
@@ -1,20 +1,16 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_TAXCOMPONENT'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Name' | translate}}
|
||||
{{ 'labels.inputs.Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -22,15 +18,13 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Percentage' | translate}}
|
||||
{{ 'labels.inputs.Percentage' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ taxComponentData.percentage | formatNumber }} %
|
||||
</div>
|
||||
<div fxFlex="50%">{{ taxComponentData.percentage | formatNumber }} %</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="taxComponentData.debitAccountType">
|
||||
{{'labels.inputs.Debit Account Type' | translate }}
|
||||
{{ 'labels.inputs.Debit Account Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="taxComponentData.debitAccountType">
|
||||
@@ -42,7 +36,8 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="taxComponentData.debitAccount">
|
||||
({{ 'labels.inputs.accounting.' + taxComponentData.debitAccount.glCode }}) {{ taxComponentData.debitAccount.name | translate }}
|
||||
({{ 'labels.inputs.accounting.' + taxComponentData.debitAccount.glCode }})
|
||||
{{ taxComponentData.debitAccount.name | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="taxComponentData.creditAccountType">
|
||||
@@ -50,7 +45,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="taxComponentData.creditAccountType">
|
||||
{{ taxComponentData.creditAccountType.value | translateKey:'catalogs' }}
|
||||
{{ taxComponentData.creditAccountType.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="taxComponentData.creditAccount">
|
||||
@@ -68,14 +63,13 @@
|
||||
<div fxFlex="50%">
|
||||
{{ taxComponentData.startDate | dateFormat }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+8
-18
@@ -1,47 +1,37 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_TAXCOMPONENT'">
|
||||
<mat-icon matListIcon [routerLink]="['tax-components']">
|
||||
<fa-icon icon="building" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['tax-components']">{{'labels.heading.Manage Tax Components' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['tax-components']">{{ 'labels.heading.Manage Tax Components' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="!arrowBooleans[0]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="arrowBooleans[0]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['tax-components']">{{'labels.heading.Define Tax Components' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['tax-components']">
|
||||
{{ 'labels.heading.Define Tax Components' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_TAXGROUP'">
|
||||
<mat-icon matListIcon [routerLink]="['tax-groups']">
|
||||
<fa-icon icon="building" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['tax-groups']">{{'labels.heading.Manage Tax Groups' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['tax-groups']">{{ 'labels.heading.Manage Tax Groups' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="!arrowBooleans[1]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="arrowBooleans[1]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['tax-groups']">{{'labels.heading.Define Tax Groups' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['tax-groups']">
|
||||
{{ 'labels.heading.Define Tax Groups' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+39
-30
@@ -1,72 +1,81 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="taxGroupForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="100%">
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="taxGroupForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h3 fxFlex="40%" class="mat-h3">{{'labels.inputs.Tax Components' | translate}}</h3>
|
||||
<h3 fxFlex="40%" class="mat-h3">{{ 'labels.inputs.Tax Components' | translate }}</h3>
|
||||
|
||||
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addTaxGroup()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="taxComponentsDataSource" [hidden]="taxComponentsDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">
|
||||
{{ taxComponent.taxComponentId | find: taxComponentOptions:'id':'name'}} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Start Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.startDate | dateFormat }}
|
||||
{{ taxComponent.taxComponentId | find: taxComponentOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Start Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">{{ taxComponent.startDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent; let taxComponentIndex = index">
|
||||
<button type="button" mat-icon-button color="primary" (click)="editTaxGroup(taxComponent, taxComponentIndex)">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editTaxGroup(taxComponent, taxComponentIndex)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button type="button" mat-icon-button color="warn" (click)="delete(taxComponentIndex)" matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="delete(taxComponentIndex)"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!taxGroupForm.valid" *mifosxHasPermission="'CREATE_TAXGROUP'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!taxGroupForm.valid"
|
||||
*mifosxHasPermission="'CREATE_TAXGROUP'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,80 +1,90 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="taxGroupForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="100%">
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="taxGroupForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h3 fxFlex="40%" class="mat-h3">{{'labels.inputs.Tax Components' | translate}}</h3>
|
||||
<h3 fxFlex="40%" class="mat-h3">{{ 'labels.inputs.Tax Components' | translate }}</h3>
|
||||
|
||||
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addTaxGroup()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="taxComponentsDataSource" [hidden]="taxComponentsDataSource.length === 0">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">
|
||||
{{ taxComponent.taxComponentId | find: taxComponentOptions:'id':'name'}} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Start Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.startDate | dateFormat }}
|
||||
{{ taxComponent.taxComponentId | find: taxComponentOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startDate">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Start Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">{{ taxComponent.startDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="endDate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.End Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.endDate ? (taxComponent.endDate | dateFormat) : '' }}
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.End Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent">
|
||||
{{ taxComponent.endDate ? (taxComponent.endDate | dateFormat) : '' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxComponent; let taxComponentIndex = index">
|
||||
<button type="button" mat-icon-button color="primary" (click)="editTaxGroup(taxComponent, taxComponentIndex)">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editTaxGroup(taxComponent, taxComponentIndex)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button type="button" mat-icon-button color="warn" *ngIf="taxComponent.isNew"
|
||||
(click)="delete(taxComponentIndex)" matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate}}"
|
||||
matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
*ngIf="taxComponent.isNew"
|
||||
(click)="delete(taxComponentIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!taxGroupForm.valid" *mifosxHasPermission="'UPDATE_TAXGROUP'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!taxGroupForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_TAXGROUP'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,35 +1,29 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_TAXGROUP'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Tax Groups' | translate }}
|
||||
{{ 'labels.buttons.Create Tax Groups' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let taxGroups"> {{ taxGroups.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let taxGroups">{{ taxGroups.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_TAXGROUP'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="33%" class="mat-body-strong">
|
||||
{{'labels.inputs.Name' | translate}}
|
||||
{{ 'labels.inputs.Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="67%">
|
||||
@@ -22,37 +18,31 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="34%" class="mat-body-strong">
|
||||
{{'labels.inputs.Tax Component' | translate}}
|
||||
{{ 'labels.inputs.Tax Component' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%" class="mat-body-strong">
|
||||
{{'labels.inputs.Start Date' | translate}}
|
||||
{{ 'labels.inputs.Start Date' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%" class="mat-body-strong">
|
||||
{{'labels.inputs.End Date' | translate}}
|
||||
{{ 'labels.inputs.End Date' | translate }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" class="content" *ngFor="let taxcomponent of taxGroupData.taxAssociations">
|
||||
<div fxFlex="34%">
|
||||
{{ taxcomponent.taxComponent.name }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%">
|
||||
{{ taxcomponent.startDate | dateFormat }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%" *ngIf="taxcomponent.endDate !== undefined || taxcomponent.endDate !== null">
|
||||
{{ taxcomponent.endDate | dateFormat }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" class="content" *ngFor="let taxcomponent of taxGroupData.taxAssociations">
|
||||
|
||||
<div fxFlex="34%">
|
||||
{{ taxcomponent.taxComponent.name }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%">
|
||||
{{ taxcomponent.startDate | dateFormat }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="33%" *ngIf="taxcomponent.endDate !== undefined || taxcomponent.endDate !== null">
|
||||
{{ taxcomponent.endDate | dateFormat }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+16
-14
@@ -1,13 +1,8 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="productMixForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Product' | translate }}</mat-label>
|
||||
<mat-select required formControlName="productId">
|
||||
@@ -16,7 +11,8 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="productMixForm.controls.productId.hasError('required')">
|
||||
{{ 'labels.inputs.Product' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -27,21 +23,27 @@
|
||||
{{ product.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="productMixForm.controls.restrictedProducts.hasError('required')" >
|
||||
{{'labels.commons.At least one restricted product' | translate }} <strong>{{'labels.commons.must be selected' | translate }}</strong>
|
||||
<mat-error *ngIf="productMixForm.controls.restrictedProducts.hasError('required')">
|
||||
{{ 'labels.commons.At least one restricted product' | translate }}
|
||||
<strong>{{ 'labels.commons.must be selected' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!productMixForm.valid" *mifosxHasPermission="'CREATE_PRODUCTMIX'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!productMixForm.valid"
|
||||
*mifosxHasPermission="'CREATE_PRODUCTMIX'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="productMixForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Product' | translate }}</mat-label>
|
||||
<input matInput formControlName="productId">
|
||||
<input matInput formControlName="productId" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="productData">
|
||||
@@ -21,20 +16,26 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="productMixForm.controls.restrictedProducts.hasError('required')">
|
||||
{{'labels.commons.At least one restricted product' | translate }} <strong>{{'labels.commons.must be selected' |translate }}</strong>
|
||||
{{ 'labels.commons.At least one restricted product' | translate }}
|
||||
<strong>{{ 'labels.commons.must be selected' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!productMixForm.valid" *mifosxHasPermission="'UPDATE_PRODUCTMIX'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!productMixForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_PRODUCTMIX'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
<div fxLayout="row" fxLayoutAlign="end" class="container m-b-20">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_PRODUCTMIX'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{'labels.buttons.Add' | translate}}
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="productName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Product Name' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let productMix"> {{ productMix.productName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Product Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let productMix">{{ productMix.productName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row" [routerLink]="[row.productId]"></tr>
|
||||
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
class="select-row"
|
||||
[routerLink]="[row.productId]"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,47 +1,42 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_PRODUCTMIX'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_PRODUCTMIX'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Delete' | translate}}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="mat-elevation-z8 inline-table">
|
||||
<table mat-table [dataSource]="allowedProductsDatasource" matSort>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header [ngClass]="'customWidthClass'">
|
||||
{{ 'labels.inputs.Allowed Products' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let product" [ngClass]="'customWidthClass'">{{ product.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<div class="mat-elevation-z8 inline-table">
|
||||
|
||||
<table mat-table [dataSource]="allowedProductsDatasource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header [ngClass]="'customWidthClass'">{{ 'labels.inputs.Allowed Products' | translate}}</th>
|
||||
<td mat-cell *matCellDef="let product" [ngClass]="'customWidthClass'"> {{ product.name }} </td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="allowedProductsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: allowedProductsDisplayedColumns;"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator #allowed [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 inline-table">
|
||||
|
||||
<table mat-table [dataSource]="restrictedProductsDatasource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Restricted products' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let product"> {{ product.name }} </td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="restrictedProductsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: restrictedProductsDisplayedColumns;"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator #restricted [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
<tr mat-header-row *matHeaderRowDef="allowedProductsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: allowedProductsDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator #allowed [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 inline-table">
|
||||
<table mat-table [dataSource]="restrictedProductsDatasource" matSort>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Restricted products' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let product">{{ product.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="restrictedProductsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: restrictedProductsDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator #restricted [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,209 +1,261 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
<div #loanProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_LOANPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['loan-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['loan-products']">{{ 'labels.heading.Loan Products' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="!arrowBooleans[0]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="arrowBooleans[0]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['loan-products']">
|
||||
{{ 'labels.text.Add new loan product or modify or inactivate loan product' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<div #loanProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_LOANPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['loan-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['loan-products']">{{'labels.heading.Loan Products' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="!arrowBooleans[0]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="arrowBooleans[0]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['loan-products']">{{'labels.text.Add new loan product or modify or inactivate loan product' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
<div #savingsProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_SAVINGSPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['saving-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['saving-products']">{{ 'labels.heading.Savings Products' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="!arrowBooleans[1]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="arrowBooleans[1]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['saving-products']">
|
||||
{{ 'labels.text.Add new savings product or modify or inactivate savings product' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<div #savingsProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_SAVINGSPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['saving-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['saving-products']">{{'labels.heading.Savings Products' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="!arrowBooleans[1]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="arrowBooleans[1]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['saving-products']">{{'labels.text.Add new savings product or modify or inactivate savings product' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
<div #shareProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_SHAREPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['share-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['share-products']">{{ 'labels.heading.Share Products' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="!arrowBooleans[2]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="arrowBooleans[2]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[2]" [routerLink]="['share-products']">
|
||||
{{ 'labels.text.Add new share product or modify or inactivate share product' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<div #shareProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_SHAREPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['share-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['share-products']">{{'labels.heading.Share Products' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="!arrowBooleans[2]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="arrowBooleans[2]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[2]" [routerLink]="['share-products']">{{'labels.text.Add new share product or modify or inactivate share product' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<div #charges>
|
||||
<mat-list-item *mifosxHasPermission="'READ_CHARGE'">
|
||||
<mat-icon matListIcon [routerLink]="['charges']">
|
||||
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['charges']">{{'labels.heading.Charges' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="!arrowBooleans[3]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="arrowBooleans[3]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[3]" [routerLink]="['charges']">{{'labels.text.Define charges/penalties for loan products, savings and deposit products' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
<div #charges>
|
||||
<mat-list-item *mifosxHasPermission="'READ_CHARGE'">
|
||||
<mat-icon matListIcon [routerLink]="['charges']">
|
||||
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['charges']">{{ 'labels.heading.Charges' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="!arrowBooleans[3]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="arrowBooleans[3]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[3]" [routerLink]="['charges']">
|
||||
{{ 'labels.text.Define charges/penalties for loan products, savings and deposit products' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['collaterals']">
|
||||
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['collaterals']">{{'labels.heading.Collateral Management' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['collaterals']">{{ 'labels.heading.Collateral Management' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(4)" *ngIf="!arrowBooleans[4]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(4)" *ngIf="arrowBooleans[4]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[4]" [routerLink]="['collaterals']">{{'labels.text.Define collaterals for Collateral Management' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[4]" [routerLink]="['collaterals']">
|
||||
{{ 'labels.text.Define collaterals for Collateral Management' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_DELINQUENCY_BUCKET'">
|
||||
<mat-icon matListIcon [routerLink]="['delinquency-bucket-configurations']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['delinquency-bucket-configurations']">{{'labels.heading.Delinquency Buckets' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['delinquency-bucket-configurations']">
|
||||
{{ 'labels.heading.Delinquency Buckets' | translate }}
|
||||
</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(5)" *ngIf="!arrowBooleans[5]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(5)" *ngIf="arrowBooleans[5]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[5]" [routerLink]="['delinquency-bucket-configurations']">{{'labels.text.Define delinquency day ranges and bucket set for loan products' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[5]" [routerLink]="['delinquency-bucket-configurations']">
|
||||
{{ 'labels.text.Define delinquency day ranges and bucket set for loan products' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_PRODUCTMIX'">
|
||||
<mat-icon matListIcon [routerLink]="['products-mix']">
|
||||
<fa-icon icon="random" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['products-mix']">{{'labels.heading.Products Mix' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['products-mix']">{{ 'labels.heading.Products Mix' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(6)" *ngIf="!arrowBooleans[6]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(6)" *ngIf="arrowBooleans[6]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[6]" [routerLink]="['products-mix']">{{'labels.text.Defines rules for taking multiple rules' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[6]" [routerLink]="['products-mix']">
|
||||
{{ 'labels.text.Defines rules for taking multiple rules' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<div #fixedDepositProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_FIXEDDEPOSITPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['fixed-deposit-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['fixed-deposit-products']">{{'labels.heading.Fixed Deposit Products' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="!arrowBooleans[7]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="arrowBooleans[7]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[7]" [routerLink]="['fixed-deposit-products']">{{'labels.text.Add, modify or inactivate a Fixed deposit product' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
<div #fixedDepositProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_FIXEDDEPOSITPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['fixed-deposit-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['fixed-deposit-products']">
|
||||
{{ 'labels.heading.Fixed Deposit Products' | translate }}
|
||||
</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="!arrowBooleans[7]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="arrowBooleans[7]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[7]" [routerLink]="['fixed-deposit-products']">
|
||||
{{ 'labels.text.Add, modify or inactivate a Fixed deposit product' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<div #recurringDepositProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_RECURRINGDEPOSITPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['recurring-deposit-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['recurring-deposit-products']">{{'labels.heading.Recurring Deposit Products' | translate}}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="!arrowBooleans[8]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="arrowBooleans[8]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[8]" [routerLink]="['recurring-deposit-products']">{{'labels.text.Add, modify or inactivate a Recurring Deposit product' | translate}}</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
<div #recurringDepositProducts>
|
||||
<mat-list-item *mifosxHasPermission="'READ_RECURRINGDEPOSITPRODUCT'">
|
||||
<mat-icon matListIcon [routerLink]="['recurring-deposit-products']">
|
||||
<fa-icon icon="briefcase" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['recurring-deposit-products']">
|
||||
{{ 'labels.heading.Recurring Deposit Products' | translate }}
|
||||
</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="!arrowBooleans[8]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="arrowBooleans[8]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[8]" [routerLink]="['recurring-deposit-products']">
|
||||
{{ 'labels.text.Add, modify or inactivate a Recurring Deposit product' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_TAXGROUP'">
|
||||
<mat-icon matListIcon [routerLink]="['tax-configurations']">
|
||||
<fa-icon icon="cogs" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['tax-configurations']">{{'labels.heading.Manage Tax Configurations' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['tax-configurations']">
|
||||
{{ 'labels.heading.Manage Tax Configurations' | translate }}
|
||||
</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(9)" *ngIf="!arrowBooleans[9]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(9)" *ngIf="arrowBooleans[9]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[9]" [routerLink]="['tax-configurations']">{{'labels.text.Define Tax components and Tax groups' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[9]" [routerLink]="['tax-configurations']">
|
||||
{{ 'labels.text.Define Tax components and Tax groups' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_FLOATINGRATE'">
|
||||
<mat-icon matListIcon [routerLink]="['floating-rates']">
|
||||
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['floating-rates']">{{'labels.heading.Floating Rates' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['floating-rates']">{{ 'labels.heading.Floating Rates' | translate }}</h4>
|
||||
<fa-icon (click)="arrowBooleansToggle(10)" *ngIf="!arrowBooleans[10]" icon="arrow-down" size="md"></fa-icon>
|
||||
<fa-icon (click)="arrowBooleansToggle(10)" *ngIf="arrowBooleans[10]" icon="arrow-up" size="md"></fa-icon>
|
||||
<p matLine *ngIf="arrowBooleans[10]" [routerLink]="['floating-rates']">{{'labels.text.Define floating rates for loan products' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[10]" [routerLink]="['floating-rates']">
|
||||
{{ 'labels.text.Define floating rates for loan products' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateCharges let-popover="popover">
|
||||
<h2>{{'labels.heading.Charges' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Two types of charges—fees and penalties' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Charges' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Two types of charges—fees and penalties' | translate }}</p>
|
||||
<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="primary" (click)="popover.close();previousStepCharges()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepCharges()">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
Close
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepCharges()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepCharges()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateLoanProducts let-popover="popover">
|
||||
<h2>{{'labels.heading.Loan Products' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Loan products define the rules, default settings' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Loan Products' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Loan products define the rules, default settings' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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();previousStepLoanProducts()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepLoanProducts()">{{'labels.buttons.Next' | translate }}</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(); previousStepLoanProducts()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepLoanProducts()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateSavingsProducts let-popover="popover">
|
||||
<h2>{{'labels.heading.Savings Products' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Savings products define the rules, default settings' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Savings Products' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Savings products define the rules, default settings' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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();previousStepSavingsProducts()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepSavingsProducts()">{{'labels.buttons.Next' | translate }}</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(); previousStepSavingsProducts()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepSavingsProducts()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateShareProducts let-popover="popover">
|
||||
<h2>{{'labels.heading.Share Products' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Share products define the rules, default settings' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Share Products' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Share products define the rules, default settings' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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();previousStepShareProducts()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepShareProducts()">{{'labels.buttons.Next' | translate }}</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(); previousStepShareProducts()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepShareProducts()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFixedDepositProducts let-popover="popover">
|
||||
<h2>{{'labels.heading.Fixed Deposit Products' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Fixed Deposit Products defines the rules, default settings' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Fixed Deposit Products' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Fixed Deposit Products defines the rules, default settings' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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();previousStepFixedDepositProducts()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepFixedDepositProducts()">{{'labels.buttons.Next' | translate }}</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(); previousStepFixedDepositProducts()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepFixedDepositProducts()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateRecurringDepositProducts let-popover="popover">
|
||||
<h2>{{'labels.heading.Recurring Deposit Products' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.Recurring Deposit products define the rules, default settings' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Recurring Deposit Products' | translate }}</h2>
|
||||
<p class="mw400">{{ 'labels.text.Recurring Deposit products define the rules, default settings' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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();previousStepRecurringDepositProducts()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepRecurringDepositProducts()">{{'labels.buttons.Next' | translate }}</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(); previousStepRecurringDepositProducts()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepRecurringDepositProducts()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+29
-39
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #recurringDepositProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,90 +21,82 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductDetailsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-details-step [recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
|
||||
<mifosx-recurring-deposit-product-details-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-details-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductCurrencyForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-currency-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-currency-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductTermsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-terms-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductSettingsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-settings-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-settings-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductInterestRateChartForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.INTEREST RATE CHART' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST RATE CHART' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-interest-rate-chart-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-interest-rate-chart-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-charges-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[currencyCode]="recurringDepositProductCurrencyForm.get('currencyCode')">
|
||||
[currencyCode]="recurringDepositProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-accounting-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate" [accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProductFormValid]="recurringDepositProductFormValid">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProductFormValid]="recurringDepositProductFormValid"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="recurringDepositProductFormValid" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-preview-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[chartSlabsDisplayedColumns]="recurringDepositProductInterestRateChartStep.chartSlabsDisplayedColumns"
|
||||
[accountingRuleData]="accountingRuleData" [recurringDepositProduct]="recurringDepositProduct"
|
||||
(submitEvent)="submit()">
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProduct]="recurringDepositProduct"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+29
-39
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #recurringDepositProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,90 +21,82 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductDetailsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-details-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
</mifosx-recurring-deposit-product-details-step>
|
||||
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-details-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductCurrencyForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-currency-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-currency-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductTermsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-terms-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductSettingsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-settings-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-settings-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductInterestRateChartForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.INTEREST RATE CHART' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INTEREST RATE CHART' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-interest-rate-chart-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-interest-rate-chart-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-charges-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[currencyCode]="recurringDepositProductCurrencyForm.get('currencyCode')">
|
||||
[currencyCode]="recurringDepositProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="recurringDepositProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-accounting-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate" [accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProductFormValid]="recurringDepositProductFormValidAndNotPrinstine">
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProductFormValid]="recurringDepositProductFormValidAndNotPrinstine"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="recurringDepositProductFormValidAndNotPrinstine" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-recurring-deposit-product-preview-step
|
||||
[recurringDepositProductsTemplate]="recurringDepositProductsTemplate"
|
||||
[chartSlabsDisplayedColumns]="recurringDepositProductInterestRateChartStep.chartSlabsDisplayedColumns"
|
||||
[accountingRuleData]="accountingRuleData" [recurringDepositProduct]="recurringDepositProduct"
|
||||
(submitEvent)="submit()">
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[recurringDepositProduct]="recurringDepositProduct"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-recurring-deposit-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+155
-86
@@ -1,10 +1,13 @@
|
||||
<form [formGroup]="recurringDepositProductAccountingForm">
|
||||
|
||||
<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-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
|
||||
<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">
|
||||
{{ 'labels.accounting.' + accountingRule | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
@@ -12,109 +15,163 @@
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div *ngIf="isCashOrAccrualAccounting()" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Assets' | translate }}</h4>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.savingsReferenceAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Saving reference'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving reference'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.feesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Fees Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Fees Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.penaltiesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Penalties Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Penalties Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Liabilities' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.savingsControlAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Saving control'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving control'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.transfersInSuspenseAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Savings transfers in suspense'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Savings transfers in suspense'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.interestPayableAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Interest Payable'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest Payable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Expenses' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Expenses' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.interestOnSavingsAccountId"
|
||||
[glAccountList]="expenseAccountData" [required]="true" [inputLabel]="'Interest on savings'">
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest on savings'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Income' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.incomeFromFeeAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from fees'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from fees'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="recurringDepositProductAccountingForm.controls.incomeFromPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from penalties'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from penalties'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules"></mat-checkbox>
|
||||
|
||||
<div *ngIf="recurringDepositProductAccountingForm.value.advancedAccountingRules" fxFlexFill fxLayout="row wrap"
|
||||
fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
*ngIf="recurringDepositProductAccountingForm.value.advancedAccountingRules"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<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 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="paymentChannelToFundSourceMappings.value"
|
||||
*ngIf="paymentChannelToFundSourceMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:paymentTypeData:'id':'name' }}
|
||||
{{ paymentFundSource.paymentTypeId | find: paymentTypeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:assetAccountData:'id':'name' }}
|
||||
{{ paymentFundSource.fundSourceAccountId | find: assetAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource; let i = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="edit('PaymentFundSource', paymentChannelToFundSourceMappings, i)">
|
||||
<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)">
|
||||
@@ -124,41 +181,47 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: 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>
|
||||
<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)">
|
||||
<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}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value"
|
||||
*ngIf="feeToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: chargeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ feesIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome; let i = index">
|
||||
<button mat-icon-button color="primary" (click)="edit('FeesIncome', feeToIncomeAccountMappings, i)">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
@@ -170,46 +233,56 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" *ngIf="existCharges()">
|
||||
|
||||
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Map Penalties to Specific Income Accounts' | translate}}
|
||||
<h4 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Map Penalties to Specific Income Accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value"
|
||||
*ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: penaltyData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ penaltyIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
|
||||
<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)">
|
||||
@@ -219,25 +292,21 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!recurringDepositProductFormValid">
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</form>
|
||||
|
||||
+21
-18
@@ -1,10 +1,11 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value"
|
||||
[value]="charge">
|
||||
<mat-option
|
||||
*ngFor="let charge of chargeData | chargesFilter: chargesDataSource : currencyCode.value"
|
||||
[value]="charge"
|
||||
>
|
||||
{{ charge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -13,43 +14,47 @@
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -58,19 +63,17 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+29
-15
@@ -1,46 +1,60 @@
|
||||
<form [formGroup]="recurringDepositProductCurrencyForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
|
||||
<mat-select formControlName="currencyCode" matTooltip = "{{ 'tooltips.The currency in which the deposit will be disbursed' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="currencyCode"
|
||||
matTooltip="{{ 'tooltips.The currency in which the deposit will be disbursed' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option *ngFor="let currency of currencyData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="digitsAfterDecimal" matTooltip = "{{ 'tooltips.Decimal places to be used to track and report' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Decimal Places' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="digitsAfterDecimal"
|
||||
matTooltip="{{ 'tooltips.Decimal places to be used to track and report' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Decimal Places' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOf" matTooltip = "{{ 'tooltips.Enter multiples of currency value' | translate}}">
|
||||
<mat-label>{{ 'labels.inputs.Currency in multiples of' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="inMultiplesOf"
|
||||
matTooltip="{{ 'tooltips.Enter multiples of currency value' | translate }}"
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency in multiples of' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency in multiples of' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+33
-15
@@ -1,42 +1,60 @@
|
||||
<form [formGroup]="recurringDepositProductDetailsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Product Name' | translate}} </mat-label>
|
||||
<input matInput formControlName="name" matTooltip="{{ 'tooltips.Product name is a unique identifier' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }} </mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="name"
|
||||
matTooltip="{{ 'tooltips.Product name is a unique identifier' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error *ngIf="recurringDepositProductDetailsForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="shortName" maxlength="4" matTooltip="{{ 'tooltips.Short name is a unique identifier' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Short Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="shortName"
|
||||
maxlength="4"
|
||||
matTooltip="{{ 'tooltips.Short name is a unique identifier' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error *ngIf="recurringDepositProductDetailsForm.controls.shortName.hasError('required')">
|
||||
{{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Short Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<textarea matInput formControlName="description" matTooltip="{{ 'tooltips.Description is used to provide additional information regarding the purpose' | translate}}" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
formControlName="description"
|
||||
matTooltip="{{
|
||||
'tooltips.Description is used to provide additional information regarding the purpose' | translate
|
||||
}}"
|
||||
cdkTextareaAutosize
|
||||
cdkAutosizeMinRows="2"
|
||||
></textarea>
|
||||
<mat-error *ngIf="recurringDepositProductDetailsForm.controls.description.hasError('required')">
|
||||
{{'labels.inputs.Description' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Description' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+141
-87
@@ -1,248 +1,302 @@
|
||||
<form [formGroup]="recurringDepositProductInterestRateChartForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h3 fxFlex="83%" 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="13%" fxLayout="row" fxLayoutAlign="start center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addChart()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" formArrayName="charts"
|
||||
*ngFor="let chart of charts.controls; let chartIndex = index">
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
formArrayName="charts"
|
||||
*ngFor="let chart of charts.controls; let chartIndex = index"
|
||||
>
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" [formGroupName]="chartIndex">
|
||||
|
||||
<div fxFlex="98%" fxLayout="row" fxLayoutAlign="end center">
|
||||
<button type="button" mat-icon-button color="warn" (click)="delete(charts, chartIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate}}" matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="delete(charts, chartIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete Interest Rate Chart' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="32%">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" matTooltip="{{ 'tooltips.The name is a unique identifier for the chart' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="name"
|
||||
matTooltip="{{ 'tooltips.The name is a unique identifier for the chart' | translate }}"
|
||||
required
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%" (click)="validFromDatePicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.Start Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="validFromDatePicker"
|
||||
formControlName="fromDate" required>
|
||||
<mat-label>{{ 'labels.inputs.Start Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="validFromDatePicker"
|
||||
formControlName="fromDate"
|
||||
required
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="validFromDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #validFromDatePicker></mat-datepicker>
|
||||
<mat-error>
|
||||
{{ 'labels.inputs.Start Date' | translate}} {{'labels.commons.is' | translate}}
|
||||
<strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Start Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%" (click)="endDatePicker.open()">
|
||||
<mat-label>{{ 'labels.inputs.End Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate">
|
||||
<mat-label>{{ 'labels.inputs.End Date' | translate }}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" formControlName="endDate" />
|
||||
<mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #endDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="65%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate}}</mat-label>
|
||||
<textarea matInput formControlName="description"
|
||||
matTooltip="{{ 'tooltips.The description is used to provide additional information' | translate}}"></textarea>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
formControlName="description"
|
||||
matTooltip="{{ 'tooltips.The description is used to provide additional information' | translate }}"
|
||||
></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="31%" fxLayout="row" fxLayoutAlign="space-between center">
|
||||
<mat-checkbox labelPosition="before" formControlName="isPrimaryGroupingByAmount">
|
||||
{{ 'labels.inputs.Is primary grouping by amount?' | translate}}
|
||||
{{ 'labels.inputs.Is primary grouping by amount?' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
</div>
|
||||
<div fxFlex="100%" class="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addChartSlab(chart.controls.chartSlabs)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add Slab' | translate}}
|
||||
{{ 'labels.buttons.Add Slab' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" *ngIf="chart.value.chartSlabs.length === 0">
|
||||
<h3 class="mat-h3">{{ "labels.heading.It is required to add at least one Slab" | translate}}</h3>
|
||||
<h3 class="mat-h3">{{ 'labels.heading.It is required to add at least one Slab' | translate }}</h3>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chart.value.chartSlabs"
|
||||
*ngIf="chart.value.chartSlabs.length !== 0" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chart.value.chartSlabs"
|
||||
*ngIf="chart.value.chartSlabs.length !== 0"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType |
|
||||
find:periodTypeData:'id':'value') }}
|
||||
{{
|
||||
chartSlab.fromPeriod +
|
||||
' - ' +
|
||||
chartSlab.toPeriod +
|
||||
' ' +
|
||||
(chartSlab.periodType | find: periodTypeData : 'id' : 'value')
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="editChartSlab(chart.controls.chartSlabs, chartSlabIndex)"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn" (click)="delete(chart.controls.chartSlabs, chartSlabIndex)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
<button mat-button color="primary"
|
||||
(click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="
|
||||
expandChartSlabIndex[chartIndex] =
|
||||
expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex
|
||||
"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length">
|
||||
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'">
|
||||
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="83%">
|
||||
{{ 'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="13%">
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="addIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex))"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives"
|
||||
*ngIf="chartSlab.incentives.length">
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chartSlab.incentives"
|
||||
*ngIf="chartSlab.incentives.length"
|
||||
>
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType | find:entityTypeData:'id':'value' }}
|
||||
{{ incentive.entityType | find: entityTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName | find:attributeNameData:'id':'value' }}
|
||||
{{ incentive.attributeName | find: attributeNameData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType | find:conditionTypeData:'id':'value' }}
|
||||
{{ incentive.conditionType | find: conditionTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<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="4">{{ incentive.attributeValue | find:clientTypeData:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue | find:clientClassificationData:'id':'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue | find: clientTypeData : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue | find: clientClassificationData : 'id' : 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType | find:incentiveTypeData:'id':'value'}}
|
||||
{{ incentive.incentiveType | find: incentiveTypeData : 'id' : 'value' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Interest' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive; let incentiveIndex = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="
|
||||
editIncentive(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)
|
||||
"
|
||||
>
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button color="warn"
|
||||
(click)="delete(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="delete(getIncentives(chart.controls.chartSlabs, chartSlabIndex), incentiveIndex)"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex];"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns" class="incentives-row"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+284
-146
@@ -1,431 +1,569 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ recurringDepositProduct.name }}</h2>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.currencyCode | find:recurringDepositProductsTemplate.currencyOptions:'code':'name' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.currencyCode | find: recurringDepositProductsTemplate.currencyOptions : 'code' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.digitsAfterDecimal }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.inMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.depositAmount + ' (Min: ' + (recurringDepositProduct.minDepositAmount ? recurringDepositProduct.minDepositAmount : recurringDepositProduct.depositAmount) + ', Max: ' + (recurringDepositProduct.maxDepositAmount ? recurringDepositProduct.maxDepositAmount : recurringDepositProduct.depositAmount) + ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.depositAmount +
|
||||
' (Min: ' +
|
||||
(recurringDepositProduct.minDepositAmount
|
||||
? recurringDepositProduct.minDepositAmount
|
||||
: recurringDepositProduct.depositAmount) +
|
||||
', Max: ' +
|
||||
(recurringDepositProduct.maxDepositAmount
|
||||
? recurringDepositProduct.maxDepositAmount
|
||||
: recurringDepositProduct.depositAmount) +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCompoundingPeriodType | find:recurringDepositProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.interestCompoundingPeriodType
|
||||
| find: recurringDepositProductsTemplate.interestCompoundingPeriodTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestPostingPeriodType | find:recurringDepositProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.interestPostingPeriodType
|
||||
| find: recurringDepositProductsTemplate.interestPostingPeriodTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCalculationType | find:recurringDepositProductsTemplate.interestCalculationTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.interestCalculationType
|
||||
| find: recurringDepositProductsTemplate.interestCalculationTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCalculationDaysInYearType | find:recurringDepositProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.interestCalculationDaysInYearType
|
||||
| find: recurringDepositProductsTemplate.interestCalculationDaysInYearTypeOptions : 'id' : 'value'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.lockinPeriodFrequency + ' ' + (recurringDepositProduct.lockinPeriodFrequencyType | find:recurringDepositProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.lockinPeriodFrequency +
|
||||
' ' +
|
||||
(recurringDepositProduct.lockinPeriodFrequencyType
|
||||
| find: recurringDepositProductsTemplate.lockinPeriodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.minDepositTerm + ' ' + (recurringDepositProduct.minDepositTermTypeId | find:recurringDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.minDepositTerm +
|
||||
' ' +
|
||||
(recurringDepositProduct.minDepositTermTypeId
|
||||
| find: recurringDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.inMultiplesOfDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.And thereafter, in Multiples of' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.inMultiplesOfDepositTerm + ' ' + (recurringDepositProduct.inMultiplesOfDepositTermTypeId | find:recurringDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.And thereafter, in Multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.inMultiplesOfDepositTerm +
|
||||
' ' +
|
||||
(recurringDepositProduct.inMultiplesOfDepositTermTypeId
|
||||
| find: recurringDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.maxDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.maxDepositTerm + ' ' + (recurringDepositProduct.maxDepositTermTypeId | find:recurringDepositProductsTemplate.periodFrequencyTypeOptions:'id':'value') }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.maxDepositTerm +
|
||||
' ' +
|
||||
(recurringDepositProduct.maxDepositTermTypeId
|
||||
| find: recurringDepositProductsTemplate.periodFrequencyTypeOptions : 'id' : 'value')
|
||||
}}</span>
|
||||
</div>
|
||||
<!-- For Pre-mature closure -->
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply Penal Interest (less)' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.preClosurePenalApplicable | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.preClosurePenalApplicable">
|
||||
<span fxFlex="40%">{{'labels.inputs.Penal Interest' | translate}} (%):</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.preClosurePenalInterest + '% (' + (recurringDepositProduct.preClosurePenalInterestOnTypeId | find:recurringDepositProductsTemplate.preClosurePenalInterestOnTypeOptions:'id':'value') + ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Penal Interest' | translate }} (%):</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.preClosurePenalInterest +
|
||||
'% (' +
|
||||
(recurringDepositProduct.preClosurePenalInterestOnTypeId
|
||||
| find: recurringDepositProductsTemplate.preClosurePenalInterestOnTypeOptions : 'id' : 'value') +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.isMandatoryDeposit !== undefined">
|
||||
<span fxFlex="40%">{{'labels.inputs.Recurring Deposit Type' | translate}}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.isMandatoryDeposit"> {{'labels.text.Mandatory' | translate}} </span>
|
||||
<span fxFlex="60%" *ngIf="!recurringDepositProduct.isMandatoryDeposit"> {{'labels.text.Voluntary' | translate}} </span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Recurring Deposit Type' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.isMandatoryDeposit">
|
||||
{{ 'labels.text.Mandatory' | translate }}
|
||||
</span>
|
||||
<span fxFlex="60%" *ngIf="!recurringDepositProduct.isMandatoryDeposit">
|
||||
{{ 'labels.text.Voluntary' | translate }}
|
||||
</span>
|
||||
</div>
|
||||
<!-- -->
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Tax Group' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.taxGroupId | find:recurringDepositProductsTemplate.taxGroupOptions:'id':'name' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Tax Group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.taxGroupId | find: recurringDepositProductsTemplate.taxGroupOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" *ngIf="recurringDepositProduct.charts.length !== 0">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Charts' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Interest Rate Charts' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngFor="let chart of recurringDepositProduct.charts; let chartIndex = index" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngFor="let chart of recurringDepositProduct.charts; let chartIndex = index"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<div fxFlexFill *ngIf="chart.name">
|
||||
<span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.From Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.From Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.fromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="chart.endDate">
|
||||
<span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.End Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.endDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="chart.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ chart.description }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Primary Grouping by Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.isPrimaryGroupingByAmount | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chart.chartSlabs" *ngIf="chart.chartSlabs.length !== 0" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chart.chartSlabs"
|
||||
*ngIf="chart.chartSlabs.length !== 0"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.fromPeriod + ' - ' + chartSlab.toPeriod + ' ' + (chartSlab.periodType | find:recurringDepositProductsTemplate.chartTemplate.periodTypes:'id':'value') }}
|
||||
{{
|
||||
chartSlab.fromPeriod +
|
||||
' - ' +
|
||||
chartSlab.toPeriod +
|
||||
' ' +
|
||||
(chartSlab.periodType
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.periodTypes : 'id' : 'value')
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.amountRangeFrom + ' - ' + chartSlab.amountRangeTo }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate | formatNumber }} %
|
||||
</td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">{{ chartSlab.annualInterestRate | formatNumber }} %</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-button color="primary" (click)="expandChartSlabIndex[chartIndex] = expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex" [disabled]="chartSlab.incentives.length === 0">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="
|
||||
expandChartSlabIndex[chartIndex] =
|
||||
expandChartSlabIndex[chartIndex] === chartSlabIndex ? null : chartSlabIndex
|
||||
"
|
||||
[disabled]="chartSlab.incentives.length === 0"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex[chartIndex] === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex" [attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length">
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives" [@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns[chartIndex].length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex[chartIndex] ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="23%">
|
||||
{{'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
|
||||
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType | find:recurringDepositProductsTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.entityType
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.entityTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName | find:recurringDepositProductsTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.attributeName
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.attributeNameOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType | find:recurringDepositProductsTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.conditionType
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.conditionTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
|
||||
<span *ngSwitchCase="2">{{ incentive.attributeValue | find:recurringDepositProductsTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="2">{{
|
||||
incentive.attributeValue
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.genderOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="3">{{ incentive.attributeValue }}</span>
|
||||
<span *ngSwitchCase="4">{{ incentive.attributeValue | find:recurringDepositProductsTemplate.chartTemplate.clientTypeOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue | find:recurringDepositProductsTemplate.chartTemplate.clientClassificationOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.clientTypeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue
|
||||
| find
|
||||
: recurringDepositProductsTemplate.chartTemplate.clientClassificationOptions
|
||||
: 'id'
|
||||
: 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType | find:recurringDepositProductsTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
|
||||
{{
|
||||
incentive.incentiveType
|
||||
| find: recurringDepositProductsTemplate.chartTemplate.incentiveTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex];"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns[chartIndex]"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns" class="incentives-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount }}
|
||||
{{ charge.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details *ngIf="!isNoneAccounting()"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
<mifosx-view-savings-accounting-details
|
||||
*ngIf="!isNoneAccounting()"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.advancedAccountingRules && (recurringDepositProduct.paymentChannelToFundSourceMappings?.length || recurringDepositProduct.feeToIncomeAccountMappings?.length || recurringDepositProduct.penaltyToIncomeAccountMappings?.length)" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
<div
|
||||
*ngIf="
|
||||
recurringDepositProduct.advancedAccountingRules &&
|
||||
(recurringDepositProduct.paymentChannelToFundSourceMappings?.length ||
|
||||
recurringDepositProduct.feeToIncomeAccountMappings?.length ||
|
||||
recurringDepositProduct.penaltyToIncomeAccountMappings?.length)
|
||||
"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fund Sources for Payment Channels' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.paymentChannelToFundSourceMappings">
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fund Sources for Payment Channels' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:recurringDepositProductsTemplate.paymentTypeOptions:'id':'name' }}
|
||||
{{
|
||||
paymentFundSource.paymentTypeId
|
||||
| find: recurringDepositProductsTemplate.paymentTypeOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:recurringDepositProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }}
|
||||
{{
|
||||
paymentFundSource.fundSourceAccountId
|
||||
| find: recurringDepositProductsTemplate.accountingMappingOptions.assetAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.feeToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.feeToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:recurringDepositProductsTemplate.chargeOptions:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: recurringDepositProductsTemplate.chargeOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:recurringDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
feesIncome.incomeAccountId
|
||||
| find: recurringDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.penaltyToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.penaltyToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:recurringDepositProductsTemplate.penaltyOptions:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: recurringDepositProductsTemplate.penaltyOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:recurringDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
penaltyIncome.incomeAccountId
|
||||
| find: recurringDepositProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submitEvent.emit()">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+69
-40
@@ -1,67 +1,90 @@
|
||||
<form [formGroup]="recurringDepositProductSettingsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="isMandatoryDeposit" class="margin-v">
|
||||
{{'labels.inputs.Is Mandatory Deposit' | translate}}
|
||||
{{ 'labels.inputs.Is Mandatory Deposit' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="adjustAdvanceTowardsFuturePayments" class="margin-v">
|
||||
{{'labels.inputs.Adjust advance payments toward future installments' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
labelPosition="before"
|
||||
formControlName="adjustAdvanceTowardsFuturePayments"
|
||||
class="margin-v"
|
||||
>
|
||||
{{ 'labels.inputs.Adjust advance payments toward future installments' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="allowWithdrawal" class="margin-v">
|
||||
{{'labels.inputs.Allow Withdrawals' | translate}}
|
||||
{{ 'labels.inputs.Allow Withdrawals' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Lock-in Period' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Lock-in Period' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="lockinPeriodFrequency" matTooltip="{{ 'tooltips.The number at which lock in period occurs' | translate}}" >
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="lockinPeriodFrequency"
|
||||
matTooltip="{{ 'tooltips.The number at which lock in period occurs' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Minimum Deposit Term' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Minimum Deposit Term' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositTerm" matTooltip="{{ 'tooltips.The number at which minimum deposit occurs' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="minDepositTerm"
|
||||
matTooltip="{{ 'tooltips.The number at which minimum deposit occurs' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Minimum Deposit Term Frequency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Minimum Deposit Term Frequency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Frequency Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="minDepositTermTypeId" required>
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Minimum Deposit Term Frequency Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Minimum Deposit Term Frequency Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.And thereafter, in Multiples of' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.And thereafter, in Multiples of' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="inMultiplesOfDepositTerm" matTooltip="{{ 'tooltips.The number at which multiple deposits occurs' | translate}}">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="inMultiplesOfDepositTerm"
|
||||
matTooltip="{{ 'tooltips.The number at which multiple deposits occurs' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="inMultiplesOfDepositTermTypeId">
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
@@ -69,15 +92,20 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Maximum Deposit Term' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Maximum Deposit Term' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Frequency' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDepositTerm" matTooltip="{{ 'tooltips.The number at which minimum deposit occurs' | translate}}">
|
||||
<mat-label>{{ 'labels.inputs.Frequency' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
formControlName="maxDepositTerm"
|
||||
matTooltip="{{ 'tooltips.The number at which minimum deposit occurs' | translate }}"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="maxDepositTermTypeId">
|
||||
<mat-option *ngFor="let periodFrequencyType of periodFrequencyTypeData" [value]="periodFrequencyType.id">
|
||||
{{ periodFrequencyType.value }}
|
||||
@@ -87,22 +115,24 @@
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="23%" class="mat-h4">{{'labels.heading.For Pre-mature closure' | translate}}</h4>
|
||||
<h4 fxFlex="23%" class="mat-h4">{{ 'labels.heading.For Pre-mature closure' | translate }}</h4>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="preClosurePenalApplicable" class="margin-v">
|
||||
{{'labels.inputs.Apply Penal Interest (less)' | translate}}
|
||||
{{ 'labels.inputs.Apply Penal Interest (less)' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Penal Interest' | translate}} (%)</mat-label>
|
||||
<input type="number" matInput formControlName="preClosurePenalInterest">
|
||||
<mat-label>{{ 'labels.inputs.Penal Interest' | translate }} (%)</mat-label>
|
||||
<input type="number" matInput formControlName="preClosurePenalInterest" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Period' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Period' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -111,32 +141,31 @@
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="withHoldTax" class="margin-v">
|
||||
{{'labels.inputs.Is Withhold Tax Applicable' | translate}}
|
||||
{{ 'labels.inputs.Is Withhold Tax Applicable' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="recurringDepositProductSettingsForm.value.withHoldTax">
|
||||
<mat-label>{{'labels.inputs.Tax Group' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Tax Group' | translate }}</mat-label>
|
||||
<mat-select formControlName="taxGroupId" required>
|
||||
<mat-option *ngFor="let taxGroup of taxGroupData" [value]="taxGroup.id">
|
||||
{{ taxGroup.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Tax Group' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Tax Group' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+39
-26
@@ -1,88 +1,101 @@
|
||||
<form [formGroup]="recurringDepositProductTermsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.inputs.Deposit Amount' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.inputs.Deposit Amount' | translate }}</h4>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositAmount">
|
||||
<mat-label>{{ 'labels.inputs.Minimum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="minDepositAmount" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Default' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="depositAmount" required>
|
||||
<mat-label>{{ 'labels.inputs.Default' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="depositAmount" required />
|
||||
<mat-error>
|
||||
{{'labels.inputs.Default' | translate}} {{'labels.inputs.Deposit Amount' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Default' | translate }} {{ 'labels.inputs.Deposit Amount' | translate }}
|
||||
{{ 'labels.commons.is' | translate }} <strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum' | translate}}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDepositAmount">
|
||||
<mat-label>{{ 'labels.inputs.Maximum' | translate }}</mat-label>
|
||||
<input type="number" matInput formControlName="maxDepositAmount" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Compounding Period' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Interest Compounding Period' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Compounding Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Compounding Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Posting Period' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Interest Posting Period' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Posting Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Posting Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Interest Calculated using' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Calculated using' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Calculated using' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Days in Year' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Days in Year' | translate }}</mat-label>
|
||||
<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 }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Days in Year' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Days in Year' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+79
-33
@@ -1,71 +1,117 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<div #buttonCreateRecurringProduct class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission='"CREATE_RECURRINGDEPOSITPRODUCT"'
|
||||
matTooltip="{{ 'tooltips.Create Recurring Deposit Product' | translate}}" matTooltipPosition="above">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Recurring Deposit Product' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div #buttonCreateRecurringProduct class="in-block">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[routerLink]="['create']"
|
||||
*mifosxHasPermission="'CREATE_RECURRINGDEPOSITPRODUCT'"
|
||||
matTooltip="{{ 'tooltips.Create Recurring Deposit Product' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Recurring Deposit Product' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" matTooltip="{{ 'tooltips.Add Filters' | translate}}" matTooltipPosition="left">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
(keyup)="applyFilter($event.target.value)"
|
||||
matTooltip="{{ 'tooltips.Add Filters' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #recurringProductsTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let recurringDepositProduct"> {{ recurringDepositProduct.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let recurringDepositProduct">{{ recurringDepositProduct.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="shortName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Short Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let recurringDepositProduct"> {{ recurringDepositProduct.shortName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Short Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let recurringDepositProduct">{{ recurringDepositProduct.shortName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateRecurringProduct let-popover="popover">
|
||||
<h2>{{'labels.heading.Create recurring deposit product' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.This option allows you to create new recurring product.' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Create recurring deposit product' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.This option allows you to create new recurring product.' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate}}</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()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter recurring deposit products.' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter recurring deposit products.' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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(templateButtonCreateRecurringProduct,buttonCreateRecurringProduct , 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateRecurringProductsTable,recurringProductsTable, 'top', true)">{{'labels.buttons.Next' | translate}}</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(templateButtonCreateRecurringProduct, buttonCreateRecurringProduct, 'bottom', true)
|
||||
"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateRecurringProductsTable, recurringProductsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateRecurringProductsTable let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.List of recurring deposit products in the organization' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629552/Recurring+Deposit" target="_blank">{{'labels.heading.Recurring Deposit Products' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of recurring deposit products in the organization' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629552/Recurring+Deposit" target="_blank">{{
|
||||
'labels.heading.Recurring Deposit Products' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+228
-153
@@ -1,293 +1,353 @@
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
|
||||
<button mat-raised-button color="primary" [routerLink]="['../edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ recurringDepositProduct.name }}</h2>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.heading.Currency' | translate}}:</span>
|
||||
<span fxFlex="60%">({{ recurringDepositProduct.currency.code }}) {{ recurringDepositProduct.currency.name }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.heading.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
>({{ recurringDepositProduct.currency.code }}) {{ recurringDepositProduct.currency.name }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.currency.decimalPlaces }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.currency.inMultiplesOf | formatNumber}}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.currency.inMultiplesOf | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Amount' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.depositAmount + ' (Min: ' + (recurringDepositProduct.minDepositAmount ? recurringDepositProduct.minDepositAmount : recurringDepositProduct.depositAmount) + ', Max: ' + (recurringDepositProduct.maxDepositAmount ? recurringDepositProduct.maxDepositAmount : recurringDepositProduct.depositAmount) + ')' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
recurringDepositProduct.depositAmount +
|
||||
' (Min: ' +
|
||||
(recurringDepositProduct.minDepositAmount
|
||||
? recurringDepositProduct.minDepositAmount
|
||||
: recurringDepositProduct.depositAmount) +
|
||||
', Max: ' +
|
||||
(recurringDepositProduct.maxDepositAmount
|
||||
? recurringDepositProduct.maxDepositAmount
|
||||
: recurringDepositProduct.depositAmount) +
|
||||
')'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCompoundingPeriodType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestPostingPeriodType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCalculationType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.interestCalculationDaysInYearType.value }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.lockinPeriodFrequency !== undefined">
|
||||
{{ recurringDepositProduct.lockinPeriodFrequency }}
|
||||
{{ recurringDepositProduct.lockinPeriodFrequencyType.value }}</span>
|
||||
{{ recurringDepositProduct.lockinPeriodFrequencyType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.minDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%"
|
||||
*ngIf="recurringDepositProduct.minDepositTerm !== undefined">{{ recurringDepositProduct.minDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.minDepositTerm !== undefined"
|
||||
>{{ recurringDepositProduct.minDepositTerm }}
|
||||
|
||||
{{ recurringDepositProduct.minDepositTermType.value }}</span>
|
||||
{{ recurringDepositProduct.minDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.maxDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Deposit Term' | translate}}:</span>
|
||||
<span fxFlex="60%"
|
||||
*ngIf="recurringDepositProduct.maxDepositTerm !== undefined">{{ recurringDepositProduct.maxDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Maximum Deposit Term' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.maxDepositTerm !== undefined"
|
||||
>{{ recurringDepositProduct.maxDepositTerm }}
|
||||
|
||||
{{ recurringDepositProduct.maxDepositTermType.value }}</span>
|
||||
{{ recurringDepositProduct.maxDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.inMultipleOfDepositTerm">
|
||||
<span fxFlex="40%">{{'labels.inputs.Deposit Term In multiple of' | translate}}:</span>
|
||||
<span fxFlex="60%"
|
||||
*ngIf="recurringDepositProduct.inMultipleOfDepositTerm !== undefined">{{ recurringDepositProduct.inMultipleOfDepositTerm }}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Deposit Term In multiple of' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.inMultipleOfDepositTerm !== undefined"
|
||||
>{{ recurringDepositProduct.inMultipleOfDepositTerm }}
|
||||
-
|
||||
{{ recurringDepositProduct.inMultipleOfDepositTermType.value }}</span>
|
||||
{{ recurringDepositProduct.inMultipleOfDepositTermType.value }}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.isMandatoryDeposit !== undefined">
|
||||
<span fxFlex="40%">{{'labels.inputs.Recurring Deposit Type' | translate}}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.isMandatoryDeposit"> {{'labels.text.Mandatory' | translate}} </span>
|
||||
<span fxFlex="60%" *ngIf="!recurringDepositProduct.isMandatoryDeposit"> {{'labels.text.Voluntary' | translate}} </span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Recurring Deposit Type' | translate }}:</span>
|
||||
<span fxFlex="60%" *ngIf="recurringDepositProduct.isMandatoryDeposit">
|
||||
{{ 'labels.text.Mandatory' | translate }}
|
||||
</span>
|
||||
<span fxFlex="60%" *ngIf="!recurringDepositProduct.isMandatoryDeposit">
|
||||
{{ 'labels.text.Voluntary' | translate }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.preClosurePenalInterest">
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply penal interest (less)' | translate}}:</span>
|
||||
<span fxFlex="60%"><span class="m-r-5">{{recurringDepositProduct.preClosurePenalInterest}}</span>%<span class="m-r-5">On</span>
|
||||
{{recurringDepositProduct.preClosurePenalInterestOnType.value}}
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply penal interest (less)' | translate }}:</span>
|
||||
<span fxFlex="60%"
|
||||
><span class="m-r-5">{{ recurringDepositProduct.preClosurePenalInterest }}</span
|
||||
>%<span class="m-r-5">On</span>
|
||||
{{ recurringDepositProduct.preClosurePenalInterestOnType.value }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax group' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.taxGroup.name }}</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.activeChart" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column" >
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Interest Rate Charts' | translate}}</h3>
|
||||
<div *ngIf="recurringDepositProduct.activeChart" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Interest Rate Charts' | translate }}</h3>
|
||||
|
||||
<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="recurringDepositProduct.activeChart.name">
|
||||
<span fxFlex="40%">{{'labels.inputs.Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.activeChart.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Valid from Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Valid from Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.activeChart.fromDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.activeChart.endDate">
|
||||
<span fxFlex="40%">{{'labels.inputs.End Date' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.End Date' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.activeChart.endDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.activeChart.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.activeChart.description }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Primary Grouping by Amount' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Primary Grouping by Amount' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ recurringDepositProduct.activeChart.isPrimaryGroupingByAmount | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.activeChart.chartSlabs" multiTemplateDataRows>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.activeChart.chartSlabs"
|
||||
multiTemplateDataRows
|
||||
>
|
||||
<ng-container matColumnDef="period">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Period' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Period' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
<div *ngIf="chartSlab.fromPeriod !== undefined">
|
||||
{{ chartSlab.fromPeriod }} - {{ chartSlab.toPeriod }} {{ chartSlab.periodType.value }}
|
||||
</div>
|
||||
<div *ngIf="chartSlab.fromPeriod === undefined">
|
||||
|
||||
</div>
|
||||
<div *ngIf="chartSlab.fromPeriod === undefined"> </div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amountRange">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount Range' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Range' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
<div *ngIf="chartSlab.amountRangeFrom !== undefined">
|
||||
{{ chartSlab.amountRangeFrom }} - {{ chartSlab.amountRangeTo }}
|
||||
</div>
|
||||
|
||||
<div *ngIf="chartSlab.amountRangeFrom === undefined">
|
||||
|
||||
</div>
|
||||
<div *ngIf="chartSlab.amountRangeFrom === undefined"> </div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="annualInterestRate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Interest' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Interest' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.annualInterestRate }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Description' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab">
|
||||
{{ chartSlab.description }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex">
|
||||
<button mat-button color="primary" (click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex">
|
||||
<button
|
||||
mat-button
|
||||
color="primary"
|
||||
(click)="expandChartSlabIndex = expandChartSlabIndex === chartSlabIndex ? null : chartSlabIndex"
|
||||
>
|
||||
<span *ngIf="expandChartSlabIndex !== chartSlabIndex">
|
||||
<fa-icon icon="eye" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.View Incentives' | translate}}
|
||||
{{ 'labels.buttons.View Incentives' | translate }}
|
||||
</span>
|
||||
<span *ngIf="expandChartSlabIndex === chartSlabIndex">
|
||||
<fa-icon icon="eye-slash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Hide Incentives' | translate}}
|
||||
{{ 'labels.buttons.Hide Incentives' | translate }}
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentives">
|
||||
<td mat-cell *matCellDef="let chartSlab; let chartSlabIndex = dataIndex" [attr.colspan]="chartSlabsDisplayedColumns.length">
|
||||
<div fxLayout="row wrap" fxFlexFill class="incentives" [@expandChartSlab]="chartSlabIndex === expandChartSlabIndex? 'expanded' : 'collapsed'">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let chartSlab; let chartSlabIndex = dataIndex"
|
||||
[attr.colspan]="chartSlabsDisplayedColumns.length"
|
||||
>
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxFlexFill
|
||||
class="incentives"
|
||||
[@expandChartSlab]="chartSlabIndex === expandChartSlabIndex ? 'expanded' : 'collapsed'"
|
||||
>
|
||||
<mat-card fxLayout="row wrap" fxFlexFill>
|
||||
|
||||
<h4 class="mat-h4" fxFlex="23%">
|
||||
{{'labels.heading.Incentives' | translate}}
|
||||
{{ 'labels.heading.Incentives' | translate }}
|
||||
</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="chartSlab.incentives">
|
||||
|
||||
<ng-container matColumnDef="entityType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Entity Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Entity Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.entityType | find:recurringDepositProductTemplate.chartTemplate.entityTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.entityType
|
||||
| find: recurringDepositProductTemplate.chartTemplate.entityTypeOptions : 'id' : 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.attributeName | find:recurringDepositProductTemplate.chartTemplate.attributeNameOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.attributeName
|
||||
| find
|
||||
: recurringDepositProductTemplate.chartTemplate.attributeNameOptions
|
||||
: 'id'
|
||||
: 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="conditionType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Condition Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Condition Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.conditionType | find:recurringDepositProductTemplate.chartTemplate.conditionTypeOptions:'id':'value' }}
|
||||
{{
|
||||
incentive.conditionType
|
||||
| find
|
||||
: recurringDepositProductTemplate.chartTemplate.conditionTypeOptions
|
||||
: 'id'
|
||||
: 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="attributeValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Attribute Value' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Attribute Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive" [ngSwitch]="incentive.attributeName">
|
||||
<span *ngSwitchCase="2">{{ incentive.attributeValue | find:recurringDepositProductTemplate.chartTemplate.genderOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="2">{{
|
||||
incentive.attributeValue
|
||||
| find: recurringDepositProductTemplate.chartTemplate.genderOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="3">{{ incentive.attributeValue }}</span>
|
||||
<span *ngSwitchCase="4">{{ incentive.attributeValue | find:recurringDepositProductTemplate.chartTemplate.clientTypeOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="5">{{ incentive.attributeValue | find:recurringDepositProductTemplate.chartTemplate.clientClassificationOptions:'id':'name' }}</span>
|
||||
<span *ngSwitchCase="4">{{
|
||||
incentive.attributeValue
|
||||
| find: recurringDepositProductTemplate.chartTemplate.clientTypeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
<span *ngSwitchCase="5">{{
|
||||
incentive.attributeValue
|
||||
| find
|
||||
: recurringDepositProductTemplate.chartTemplate.clientClassificationOptions
|
||||
: 'id'
|
||||
: 'name'
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incentiveType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Incentive Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Incentive Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.incentiveType | find:recurringDepositProductTemplate.chartTemplate.incentiveTypeOptions:'id':'value'}}
|
||||
{{
|
||||
incentive.incentiveType
|
||||
| find
|
||||
: recurringDepositProductTemplate.chartTemplate.incentiveTypeOptions
|
||||
: 'id'
|
||||
: 'value'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let incentive">
|
||||
{{ incentive.amount }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="incentivesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: incentivesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card>
|
||||
</div>
|
||||
</td>
|
||||
@@ -295,168 +355,183 @@
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chartSlabsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns;" class="incentives-row"></tr>
|
||||
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: chartSlabsIncentivesDisplayedColumns"
|
||||
class="incentives-row"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.charges.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="recurringDepositProduct.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="collectedon">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details class="container"
|
||||
[accountingRule]="recurringDepositProduct.accountingRule"
|
||||
[accountingMappings]="recurringDepositProduct.accountingMappings"
|
||||
<mifosx-view-savings-accounting-details
|
||||
class="container"
|
||||
[accountingRule]="recurringDepositProduct.accountingRule"
|
||||
[accountingMappings]="recurringDepositProduct.accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div fxFlexFill *ngIf="recurringDepositProduct.paymentChannelToFundSourceMappings?.length || recurringDepositProduct.feeToIncomeAccountMappings?.length || recurringDepositProduct.penaltyToIncomeAccountMappings?.length " fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Advanced Accounting Rules' | translate}}</h3>
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngIf="
|
||||
recurringDepositProduct.paymentChannelToFundSourceMappings?.length ||
|
||||
recurringDepositProduct.feeToIncomeAccountMappings?.length ||
|
||||
recurringDepositProduct.penaltyToIncomeAccountMappings?.length
|
||||
"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Configure Fund Sources for Payment Channels' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="recurringDepositProduct.paymentChannelToFundSourceMappings">
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>
|
||||
{{ 'labels.inputs.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentType.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="recurringDepositProduct.feeToIncomeAccountMappings">
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.feeToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="recurringDepositProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="recurringDepositProduct.penaltyToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="recurringDepositProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="recurringDepositProduct.penaltyToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+17
-11
@@ -1,23 +1,29 @@
|
||||
<mat-card class="product-card">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<nav mat-tab-nav-bar class="navigation-tabs">
|
||||
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
|
||||
[active]="general.isActive">
|
||||
{{'labels.heading.General' | translate}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./general']"
|
||||
routerLinkActive
|
||||
#general="routerLinkActive"
|
||||
[active]="general.isActive"
|
||||
>
|
||||
{{ 'labels.heading.General' | translate }}
|
||||
</a>
|
||||
<ng-container *ngFor="let recurringDepositDatatable of recurringDepositDatatables">
|
||||
<a mat-tab-link [routerLink]="['./datatables',recurringDepositDatatable.registeredTableName]" routerLinkActive
|
||||
#datatable="routerLinkActive" [active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + recurringDepositDatatable.registeredTableName">
|
||||
{{recurringDepositDatatable.registeredTableName}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./datatables', recurringDepositDatatable.registeredTableName]"
|
||||
routerLinkActive
|
||||
#datatable="routerLinkActive"
|
||||
[active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + recurringDepositDatatable.registeredTableName"
|
||||
>
|
||||
{{ recurringDepositDatatable.registeredTableName }}
|
||||
</a>
|
||||
</ng-container>
|
||||
</nav>
|
||||
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
+17
-29
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #savingProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,52 +21,47 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="savingProductDetailsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-details-step></mifosx-saving-product-details-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductCurrencyForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-currency-step [savingProductsTemplate]="savingProductsTemplate"></mifosx-saving-product-currency-step>
|
||||
|
||||
<mifosx-saving-product-currency-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
></mifosx-saving-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductTermsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-terms-step [savingProductsTemplate]="savingProductsTemplate"></mifosx-saving-product-terms-step>
|
||||
|
||||
<mifosx-saving-product-terms-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
></mifosx-saving-product-terms-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductSettingsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-settings-step [savingProductsTemplate]="savingProductsTemplate"></mifosx-saving-product-settings-step>
|
||||
|
||||
<mifosx-saving-product-settings-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
></mifosx-saving-product-settings-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-charges-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
[currencyCode]="savingProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-saving-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-accounting-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
@@ -77,24 +70,19 @@
|
||||
[savingProductFormValid]="savingProductFormValid"
|
||||
>
|
||||
</mifosx-saving-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="savingProductFormValid" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-preview-step
|
||||
[savingProductsTemplate]="savingProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[savingProduct]="savingProduct"
|
||||
[taskPermission]='"CREATE_SAVINGSPRODUCT"'
|
||||
[taskPermission]="'CREATE_SAVINGSPRODUCT'"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-saving-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+20
-30
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #savingProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,52 +21,49 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="savingProductDetailsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-details-step [savingProductsTemplate]="savingProductAndTemplate"></mifosx-saving-product-details-step>
|
||||
|
||||
<mifosx-saving-product-details-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
></mifosx-saving-product-details-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductCurrencyForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-currency-step [savingProductsTemplate]="savingProductAndTemplate"></mifosx-saving-product-currency-step>
|
||||
|
||||
<mifosx-saving-product-currency-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
></mifosx-saving-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductTermsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-terms-step [savingProductsTemplate]="savingProductAndTemplate"></mifosx-saving-product-terms-step>
|
||||
|
||||
<mifosx-saving-product-terms-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
></mifosx-saving-product-terms-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductSettingsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-saving-product-settings-step [savingProductsTemplate]="savingProductAndTemplate"></mifosx-saving-product-settings-step>
|
||||
|
||||
<mifosx-saving-product-settings-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
></mifosx-saving-product-settings-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-charges-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
[currencyCode]="savingProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-saving-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="savingProductAccountingForm" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-accounting-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
@@ -77,24 +72,19 @@
|
||||
[savingProductFormValid]="savingProductFormValidAndNotPristine"
|
||||
>
|
||||
</mifosx-saving-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="savingProductFormValidAndNotPristine" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-saving-product-preview-step
|
||||
[savingProductsTemplate]="savingProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[savingProduct]="savingProduct"
|
||||
[taskPermission]='"UPDATE_SAVINGSPRODUCT"'
|
||||
[taskPermission]="'UPDATE_SAVINGSPRODUCT'"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-saving-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+220
-135
@@ -1,10 +1,13 @@
|
||||
<form [formGroup]="savingProductAccountingForm">
|
||||
|
||||
<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-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
|
||||
<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">
|
||||
{{ 'labels.accounting.' + accountingRule | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
@@ -12,172 +15,249 @@
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div *ngIf="isCashOrAccrualAccounting()" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Assets' | translate }}</h4>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.savingsReferenceAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Saving reference'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving reference'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.overdraftPortfolioControlId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Overdraft portfolio'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Overdraft portfolio'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.feesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Fees Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Fees Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.penaltiesReceivableAccountId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Penalties Receivable'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Penalties Receivable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Liabilities' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.savingsControlAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Saving control'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Saving control'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.transfersInSuspenseAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Savings transfers in suspense'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Savings transfers in suspense'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isAccrualAccounting()"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isAccrualAccounting()"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.interestPayableAccountId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Interest Payable'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest Payable'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%" *ngIf="isDormancyTrackingActive.value"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
*ngIf="isDormancyTrackingActive.value"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.escheatLiabilityId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Escheat liability'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Escheat liability'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Expenses' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Expenses' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.interestOnSavingsAccountId"
|
||||
[glAccountList]="expenseAccountData" [required]="true" [inputLabel]="'Interest on savings'">
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Interest on savings'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.writeOffAccountId" [glAccountList]="expenseAccountData"
|
||||
[required]="true" [inputLabel]="'Write-off'">
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.writeOffAccountId"
|
||||
[glAccountList]="expenseAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Write-off'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Income' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.incomeFromFeeAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from fees'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from fees'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.incomeFromPenaltyAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from penalties'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from penalties'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="savingProductAccountingForm.controls.incomeFromInterestId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Overdraft Interest Income'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Overdraft Interest Income'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules">{{'labels.heading.Advanced Accounting Rules'
|
||||
| translate}}</mat-checkbox>
|
||||
|
||||
<div *ngIf="savingProductAccountingForm.value.advancedAccountingRules" fxFlexFill fxLayout="row wrap"
|
||||
fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-checkbox fxFlex="73%" formControlName="advancedAccountingRules">{{
|
||||
'labels.heading.Advanced Accounting Rules' | translate
|
||||
}}</mat-checkbox>
|
||||
|
||||
<div
|
||||
*ngIf="savingProductAccountingForm.value.advancedAccountingRules"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<div fxFlex="100%">
|
||||
<h4 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Configure Fund Sources for Payment Channels' | translate }}
|
||||
</h4>
|
||||
|
||||
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Configure Fund Sources for Payment Channels' | translate}}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)">
|
||||
<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]="paymentChannelToFundSourceMappings.value"
|
||||
*ngIf="paymentChannelToFundSourceMappings.value.length !== 0">
|
||||
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </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> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:combinedAccountData:'id':'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </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%" *ngIf="existCharges()">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('FeesIncome', feeToIncomeAccountMappings)">
|
||||
<div fxFlex="33%">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PaymentFundSource', paymentChannelToFundSourceMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="feeToIncomeAccountMappings.value"
|
||||
*ngIf="feeToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:chargeData:'id':'name' }}
|
||||
<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>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find: paymentTypeData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find: combinedAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let 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%" *ngIf="existCharges()">
|
||||
<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>{{ 'labels.inputs.Fees' | translate }}</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>{{ 'labels.inputs.Income Account' | translate }}</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>{{ 'labels.inputs.Actions' | translate }}</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>
|
||||
@@ -189,46 +269,56 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxFlex="100%" *ngIf="existCharges()">
|
||||
|
||||
<h4 fxFlex="63%" class="mat-h4">{{'labels.heading.Map Penalties to Specific Income Accounts' | translate}}
|
||||
<h4 fxFlex="63%" class="mat-h4">
|
||||
{{ 'labels.heading.Map Penalties to Specific Income Accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<div fxFlex="33%">
|
||||
<button type="button" mat-raised-button color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)">
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="add('PenaltyIncome', penaltyToIncomeAccountMappings)"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="penaltyToIncomeAccountMappings.value"
|
||||
*ngIf="penaltyToIncomeAccountMappings.value.length !== 0">
|
||||
|
||||
<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> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:penaltyData:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: penaltyData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:incomeAccountData:'id':'name' }}
|
||||
{{ penaltyIncome.incomeAccountId | find: incomeAccountData : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome; let i = index">
|
||||
<button mat-icon-button color="primary"
|
||||
(click)="edit('PenaltyIncome', penaltyToIncomeAccountMappings, i)">
|
||||
<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)">
|
||||
@@ -238,26 +328,21 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!savingProductFormValid">
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</form>
|
||||
|
||||
+23
-18
@@ -1,9 +1,11 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" [value]="charge">
|
||||
<mat-option
|
||||
*ngFor="let charge of chargeData | chargesFilter: chargesDataSource : currencyCode.value"
|
||||
[value]="charge"
|
||||
>
|
||||
{{ charge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -12,42 +14,47 @@
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -56,19 +63,17 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+29
-15
@@ -1,46 +1,60 @@
|
||||
<form [formGroup]="savingProductCurrencyForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
|
||||
<mat-select formControlName="currencyCode" matTooltip="{{ 'tooltips.The currency to be used' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="currencyCode"
|
||||
matTooltip="{{ 'tooltips.The currency to be used' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option *ngFor="let currency of currencyData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>r{{'labels.commons.equired' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>r{{ 'labels.commons.equired' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Track and report saving account' | translate}}" formControlName="digitsAfterDecimal" required>
|
||||
<mat-label>{{ 'labels.inputs.Decimal Places' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Track and report saving account' | translate }}"
|
||||
formControlName="digitsAfterDecimal"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Decimal Places' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Amount to be rounded off' | translate}}" formControlName="inMultiplesOf">
|
||||
<mat-label>{{ 'labels.inputs.Currency in multiples of' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Amount to be rounded off' | translate }}"
|
||||
formControlName="inMultiplesOf"
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency in multiples of' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency in multiples of' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+29
-14
@@ -1,39 +1,54 @@
|
||||
<form [formGroup]="savingProductDetailsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" matTooltip="{{ 'tooltips.A unique identifier for the saving product' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="name"
|
||||
matTooltip="{{ 'tooltips.A unique identifier for the saving product' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="shortName" matTooltip="{{ 'tooltips.A unique identifier for the saving product' | translate}}" maxlength="4" required>
|
||||
<mat-label>{{ 'labels.inputs.Short Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="shortName"
|
||||
matTooltip="{{ 'tooltips.A unique identifier for the saving product' | translate }}"
|
||||
maxlength="4"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Short Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<textarea matInput matTooltip="{{ 'tooltips.Provides additional information' | translate}}" formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Provides additional information' | translate }}"
|
||||
formControlName="description"
|
||||
cdkTextareaAutosize
|
||||
cdkAutosizeMinRows="2"
|
||||
></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+141
-96
@@ -1,302 +1,347 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ savingProduct.name }}</h2>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.currencyCode | find:savingProductsTemplate.currencyOptions:'code':'name' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.currencyCode | find: savingProductsTemplate.currencyOptions : 'code' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.digitsAfterDecimal }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.inMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Nominal Annual Interest' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRate | formatNumber }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType | find:savingProductsTemplate.interestCompoundingPeriodTypeOptions:'id':'value' | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.interestCompoundingPeriodType
|
||||
| find: savingProductsTemplate.interestCompoundingPeriodTypeOptions : 'id' : 'value'
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType | find:savingProductsTemplate.interestPostingPeriodTypeOptions:'id':'value' | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.interestPostingPeriodType
|
||||
| find: savingProductsTemplate.interestPostingPeriodTypeOptions : 'id' : 'value'
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType | find:savingProductsTemplate.interestCalculationTypeOptions:'id':'value' | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.interestCalculationType
|
||||
| find: savingProductsTemplate.interestCalculationTypeOptions : 'id' : 'value'
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType | find:savingProductsTemplate.interestCalculationDaysInYearTypeOptions:'id':'value' | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.interestCalculationDaysInYearType
|
||||
| find: savingProductsTemplate.interestCalculationDaysInYearTypeOptions : 'id' : 'value'
|
||||
| translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredOpeningBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Opening Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Opening Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.lockinPeriodFrequency + ' ' + (savingProduct.lockinPeriodFrequencyType | find:savingProductsTemplate.lockinPeriodFrequencyTypeOptions:'id':'value') | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.lockinPeriodFrequency +
|
||||
' ' +
|
||||
(savingProduct.lockinPeriodFrequencyType
|
||||
| find: savingProductsTemplate.lockinPeriodFrequencyTypeOptions : 'id' : 'value') | translateKey: 'catalogs'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply Withdrawal Fee for Transfers' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply Withdrawal Fee for Transfers' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.withdrawalFeeForTransfers | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minBalanceForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Balance Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Enforce Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Enforce Minimum Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.enforceMinRequiredBalance | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Tax Group' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.taxGroupId | find:savingProductsTemplate.taxGroupOptions:'id':'name' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Tax Group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.taxGroupId | find: savingProductsTemplate.taxGroupOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Is Overdraft Allowed' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Is Overdraft Allowed' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.allowOverdraft | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minOverdraftForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minOverdraftForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.nominalAnnualInterestRateOverdraft">
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft | formatNumber }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.overdraftLimit">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Enable Dormancy Tracking' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Enable Dormancy Tracking' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.isDormancyTrackingActive | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.isDormancyTrackingActive" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Inactive sub-status' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToInactive }}</span>
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Dormant sub-status' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToDormancy }}</span>
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Escheat' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Escheat' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToEscheat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details fxFlex="100%"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
<mifosx-view-savings-accounting-details
|
||||
fxFlex="100%"
|
||||
[accountingRule]="accountingRule"
|
||||
[accountingMappings]="accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div *ngIf="savingProduct.advancedAccountingRules && (savingProduct.paymentChannelToFundSourceMappings?.length || savingProduct.feeToIncomeAccountMappings?.length || savingProduct.penaltyToIncomeAccountMappings?.length)" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Advanced Accounting Rules' | translate}}</h3>
|
||||
<div
|
||||
*ngIf="
|
||||
savingProduct.advancedAccountingRules &&
|
||||
(savingProduct.paymentChannelToFundSourceMappings?.length ||
|
||||
savingProduct.feeToIncomeAccountMappings?.length ||
|
||||
savingProduct.penaltyToIncomeAccountMappings?.length)
|
||||
"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
<div *ngIf="savingProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fund Sources for Payment Channels' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.paymentChannelToFundSourceMappings">
|
||||
<div
|
||||
*ngIf="savingProduct.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fund Sources for Payment Channels' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="savingProduct.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentTypeId | find:savingProductsTemplate.paymentTypeOptions:'id':'name' }}
|
||||
{{ paymentFundSource.paymentTypeId | find: savingProductsTemplate.paymentTypeOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.fundSourceAccountId | find:savingProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }}
|
||||
{{
|
||||
paymentFundSource.fundSourceAccountId
|
||||
| find: savingProductsTemplate.accountingMappingOptions.assetAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="savingProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
<div
|
||||
*ngIf="savingProduct.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.feeToIncomeAccountMappings">
|
||||
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.chargeId | find:savingProductsTemplate.chargeOptions:'id':'name' }}
|
||||
{{ feesIncome.chargeId | find: savingProductsTemplate.chargeOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.incomeAccountId | find:savingProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
feesIncome.incomeAccountId
|
||||
| find: savingProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="savingProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.heading.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
<div
|
||||
*ngIf="savingProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.heading.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.penaltyToIncomeAccountMappings">
|
||||
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.chargeId | find:savingProductsTemplate.penaltyOptions:'id':'name' }}
|
||||
{{ penaltyIncome.chargeId | find: savingProductsTemplate.penaltyOptions : 'id' : 'name' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.incomeAccountId | find:savingProductsTemplate.accountingMappingOptions.incomeAccountOptions:'id':'name' }}
|
||||
{{
|
||||
penaltyIncome.incomeAccountId
|
||||
| find: savingProductsTemplate.accountingMappingOptions.incomeAccountOptions : 'id' : 'name'
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submitEvent.emit()" *mifosxHasPermission="taskPermission">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+145
-51
@@ -1,135 +1,229 @@
|
||||
<form [formGroup]="savingProductSettingsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Minimum Opening Balance' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Sets the minimum deposit amount' | translate}}" formControlName="minRequiredOpeningBalance">
|
||||
<mat-label>{{ 'labels.inputs.Minimum Opening Balance' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Sets the minimum deposit amount' | translate }}"
|
||||
formControlName="minRequiredOpeningBalance"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<span fxFlex="48%" fxHide.lt-md></span>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Lock-in Period' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Used to indicate the length of time' | translate}}" formControlName="lockinPeriodFrequency">
|
||||
<mat-label>{{ 'labels.inputs.Lock-in Period' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Used to indicate the length of time' | translate }}"
|
||||
formControlName="lockinPeriodFrequency"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-select formControlName="lockinPeriodFrequencyType">
|
||||
<mat-option *ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData" [value]="lockinPeriodFrequencyType.id">
|
||||
{{ lockinPeriodFrequencyType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let lockinPeriodFrequencyType of lockinPeriodFrequencyTypeData"
|
||||
[value]="lockinPeriodFrequencyType.id"
|
||||
>
|
||||
{{ lockinPeriodFrequencyType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" matTooltip="{{ 'tooltips.Indicates whether the withdrawal fee' | translate}}" formControlName="withdrawalFeeForTransfers" class="margin-v">
|
||||
{{'labels.inputs.Apply Withdrawal Fee for Transfers' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.Indicates whether the withdrawal fee' | translate }}"
|
||||
formControlName="withdrawalFeeForTransfers"
|
||||
class="margin-v"
|
||||
>
|
||||
{{ 'labels.inputs.Apply Withdrawal Fee for Transfers' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Balance Required for Interest Calculation' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Sets the balance required for interest calculation' | translate}}" formControlName="minBalanceForInterestCalculation">
|
||||
<mat-label>{{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Sets the balance required for interest calculation' | translate }}"
|
||||
formControlName="minBalanceForInterestCalculation"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" matTooltip="{{ 'tooltips.Indicates whether to enforce a minimum balance' | translate}}" formControlName="enforceMinRequiredBalance" class="margin-v">
|
||||
{{'labels.inputs.Enforce Minimum Balance' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.Indicates whether to enforce a minimum balance' | translate }}"
|
||||
formControlName="enforceMinRequiredBalance"
|
||||
class="margin-v"
|
||||
>
|
||||
{{ 'labels.inputs.Enforce Minimum Balance' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Minimum Balance' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Sets the minimum balance allowed for a saving account' | translate}}" formControlName="minRequiredBalance">
|
||||
<mat-label>{{ 'labels.inputs.Minimum Balance' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Sets the minimum balance allowed for a saving account' | translate }}"
|
||||
formControlName="minRequiredBalance"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" matTooltip="{{ 'tooltips.An boolean flag to attach' | translate}}" formControlName="withHoldTax" class="margin-v">
|
||||
{{'labels.inputs.Is Withhold Tax Applicable' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="48%"
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.An boolean flag to attach' | translate }}"
|
||||
formControlName="withHoldTax"
|
||||
class="margin-v"
|
||||
>
|
||||
{{ 'labels.inputs.Is Withhold Tax Applicable' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="savingProductSettingsForm.value.withHoldTax">
|
||||
<mat-label>{{'labels.inputs.Tax Group' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Tax Group' | translate }}</mat-label>
|
||||
<mat-select formControlName="taxGroupId" required>
|
||||
<mat-option *ngFor="let taxGroup of taxGroupData" [value]="taxGroup.id">
|
||||
{{ taxGroup.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Tax Group' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Tax Group' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Overdraft' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.inputs.Overdraft' | translate }}</h3>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" matTooltip="{{ 'tooltips.Indicates whether saving accounts based on this saving product' | translate}}" formControlName="allowOverdraft" class="margin-b">
|
||||
{{'labels.inputs.Is Overdraft Allowed' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="73%"
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.Indicates whether saving accounts based on this saving product' | translate }}"
|
||||
formControlName="allowOverdraft"
|
||||
class="margin-b"
|
||||
>
|
||||
{{ 'labels.inputs.Is Overdraft Allowed' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<div *ngIf="savingProductSettingsForm.value.allowOverdraft" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
*ngIf="savingProductSettingsForm.value.allowOverdraft"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Sets the overdraft required for interest calculation' | translate}}" formControlName="minOverdraftForInterestCalculation">
|
||||
<mat-label>{{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Sets the overdraft required for interest calculation' | translate }}"
|
||||
formControlName="minOverdraftForInterestCalculation"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Default interest rate on overdraft' | translate}}" formControlName="nominalAnnualInterestRateOverdraft">
|
||||
<mat-label>{{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Default interest rate on overdraft' | translate }}"
|
||||
formControlName="nominalAnnualInterestRateOverdraft"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Sets the maximum allowed overdraft amount' | translate}}" formControlName="overdraftLimit">
|
||||
<mat-label>{{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Sets the maximum allowed overdraft amount' | translate }}"
|
||||
formControlName="overdraftLimit"
|
||||
/>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h3 fxFlex="23%" class="mat-h3">{{'labels.inputs.Dormancy Tracking' | translate}}</h3>
|
||||
<h3 fxFlex="23%" class="mat-h3">{{ 'labels.inputs.Dormancy Tracking' | translate }}</h3>
|
||||
|
||||
<mat-checkbox fxFlex="73%" labelPosition="before" matTooltip="{{ 'tooltips.Enables definition and tracking inactive Savings Accounts' | translate}}" formControlName="isDormancyTrackingActive" class="margin-b">
|
||||
{{'labels.inputs.Enable Dormancy Tracking' | translate}}
|
||||
<mat-checkbox
|
||||
fxFlex="73%"
|
||||
labelPosition="before"
|
||||
matTooltip="{{ 'tooltips.Enables definition and tracking inactive Savings Accounts' | translate }}"
|
||||
formControlName="isDormancyTrackingActive"
|
||||
class="margin-b"
|
||||
>
|
||||
{{ 'labels.inputs.Enable Dormancy Tracking' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<div *ngIf="savingProductSettingsForm.value.isDormancyTrackingActive" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<div
|
||||
*ngIf="savingProductSettingsForm.value.isDormancyTrackingActive"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Number of Days to Inactive sub-status' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Inactive period to mark an account as Inactive' | translate}}" formControlName="daysToInactive" required>
|
||||
<mat-label>{{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Inactive period to mark an account as Inactive' | translate }}"
|
||||
formControlName="daysToInactive"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Number of Days to Inactive sub-status' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Number of Days to Dormant sub-status' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Inactive period to mark an account as Dormant' | translate}}" formControlName="daysToDormancy" required>
|
||||
<mat-label>{{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Inactive period to mark an account as Dormant' | translate }}"
|
||||
formControlName="daysToDormancy"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Number of Days to Dormant sub-status' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Number of Days to Escheat' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Inactive period to mark an account as Escheat' | translate}}" formControlName="daysToEscheat" required>
|
||||
<mat-label>{{ 'labels.inputs.Number of Days to Escheat' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Inactive period to mark an account as Escheat' | translate }}"
|
||||
formControlName="daysToEscheat"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Number of Days to Escheat' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Number of Days to Escheat' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+64
-29
@@ -1,76 +1,111 @@
|
||||
<form [formGroup]="savingProductTermsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Nominal Annual Interest' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.The default interest rate set' | translate}}" formControlName="nominalAnnualInterestRate" required>
|
||||
<mat-label>{{ 'labels.inputs.Nominal Annual Interest' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.The default interest rate set' | translate }}"
|
||||
formControlName="nominalAnnualInterestRate"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Nominal Annual Interest' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Nominal Annual Interest' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<span fxFlex="48%" fxHide.lt-md></span>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Compounding Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCompoundingPeriodType" matTooltip="{{ 'tooltips.The period at which interest rate' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData" [value]="interestCompoundingPeriodType.id">
|
||||
{{ interestCompoundingPeriodType.value | translateKey:'catalogs' }}
|
||||
<mat-label>{{ 'labels.inputs.Interest Compounding Period' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCompoundingPeriodType"
|
||||
matTooltip="{{ 'tooltips.The period at which interest rate' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCompoundingPeriodType of interestCompoundingPeriodTypeData"
|
||||
[value]="interestCompoundingPeriodType.id"
|
||||
>
|
||||
{{ interestCompoundingPeriodType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Compounding Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Compounding Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Posting Period' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestPostingPeriodType" matTooltip="{{ 'tooltips.Interest rate is posted or credited to a saving account' | translate}}" required>
|
||||
<mat-option *ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData" [value]="interestPostingPeriodType.id">
|
||||
{{ interestPostingPeriodType.value | translateKey:'catalogs' }}
|
||||
<mat-label>{{ 'labels.inputs.Interest Posting Period' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestPostingPeriodType"
|
||||
matTooltip="{{ 'tooltips.Interest rate is posted or credited to a saving account' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestPostingPeriodType of interestPostingPeriodTypeData"
|
||||
[value]="interestPostingPeriodType.id"
|
||||
>
|
||||
{{ interestPostingPeriodType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Posting Period' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Posting Period' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Interest Calculated using' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationType" matTooltip="{{ 'tooltips.The method used to calculate interest' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCalculationType of interestCalculationTypeData" [value]="interestCalculationType.id">
|
||||
{{ interestCalculationType.value | translateKey:'catalogs' }}
|
||||
<mat-label>{{ 'labels.inputs.Interest Calculated using' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCalculationType"
|
||||
matTooltip="{{ 'tooltips.The method used to calculate interest' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCalculationType of interestCalculationTypeData"
|
||||
[value]="interestCalculationType.id"
|
||||
>
|
||||
{{ interestCalculationType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Interest Calculated using' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Interest Calculated using' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Days in Year' | translate}}</mat-label>
|
||||
<mat-select formControlName="interestCalculationDaysInYearType" matTooltip="{{ 'tooltips.To calculate interest' | translate}}" required>
|
||||
<mat-option *ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData" [value]="interestCalculationDaysInYearType.id">
|
||||
{{ interestCalculationDaysInYearType.value | translateKey:'catalogs' }}
|
||||
<mat-label>{{ 'labels.inputs.Days in Year' | translate }}</mat-label>
|
||||
<mat-select
|
||||
formControlName="interestCalculationDaysInYearType"
|
||||
matTooltip="{{ 'tooltips.To calculate interest' | translate }}"
|
||||
required
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let interestCalculationDaysInYearType of interestCalculationDaysInYearTypeData"
|
||||
[value]="interestCalculationDaysInYearType.id"
|
||||
>
|
||||
{{ interestCalculationDaysInYearType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Days in Year' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Days in Year' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
@@ -1,70 +1,103 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<div #buttonSavingProduct class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_SAVINGSPRODUCT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.text.Create Savings Product' | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_SAVINGSPRODUCT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.text.Create Savings Product' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #savingProductTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let savingProduct"> {{ savingProduct.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let savingProduct">{{ savingProduct.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="shortName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Short Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let savingProduct"> {{ savingProduct.shortName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Short Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let savingProduct">{{ savingProduct.shortName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonSavingProduct let-popover="popover">
|
||||
<h2>{{'labels.text.Create Savings Product' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.This option allows you to create new savings product.' | translate}}</p>
|
||||
<h2>{{ 'labels.text.Create Savings Product' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.This option allows you to create new savings product.' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate}}</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()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter saving products.' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter saving products.' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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(templateButtonSavingProduct,buttonSavingProduct , 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateSavingProductTable,savingProductTable, 'top', true)">{{'labels.buttons.Next' | translate}}t</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(templateButtonSavingProduct, buttonSavingProduct, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateSavingProductTable, savingProductTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}t
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateSavingProductTable let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.List of saving products in the organization' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629497/Savings+Products" target="_blank">{{'labels.heading.Savings Products' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of saving products in the organization' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629497/Savings+Products" target="_blank">{{
|
||||
'labels.heading.Savings Products' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<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)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</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)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+104
-98
@@ -1,308 +1,314 @@
|
||||
<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'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{'labels.buttons.Edit' | translate}}
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="tab-container mat-typography">
|
||||
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h2 class="mat-h2" fxFlexFill>{{ savingProduct.name }}</h2>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Details' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Details' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Short Name' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Short Name' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.shortName }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.description">
|
||||
<span fxFlex="40%">{{'labels.inputs.Description' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Description' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.description }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Currency' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Currency' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.currency.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Decimal Places' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Decimal Places' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.currency.decimalPlaces }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Currency in multiples of' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Currency in multiples of' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.currency.inMultiplesOf }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Terms' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRate | formatNumber}} %</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Nominal Annual Interest' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRate | formatNumber }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Compounding Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType.value | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Compounding Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCompoundingPeriodType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Posting Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType.value | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Posting Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestPostingPeriodType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Interest Calculated using' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType.value | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Interest Calculated using' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Days in Year' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType.value | translateKey:'catalogs' }}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Days in Year' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.interestCalculationDaysInYearType.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Settings' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Settings' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredOpeningBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Opening Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Opening Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredOpeningBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.lockinPeriodFrequency">
|
||||
<span fxFlex="40%">{{'labels.inputs.Lock-in Period' | translate}}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.lockinPeriodFrequency + ' ' + savingProduct.lockinPeriodFrequencyType.value
|
||||
}}</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Lock-in Period' | translate }}:</span>
|
||||
<span fxFlex="60%">{{
|
||||
savingProduct.lockinPeriodFrequency + ' ' + savingProduct.lockinPeriodFrequencyType.value
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Apply Withdrawal Fee for Transfers' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Apply Withdrawal Fee for Transfers' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.withdrawalFeeForTransfers | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minBalanceForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Balance Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minBalanceForInterestCalculation | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Enforce Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Enforce Minimum Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.enforceMinRequiredBalance | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minRequiredBalance">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Balance' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Balance' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minRequiredBalance | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Withhold Tax is Applicable' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.withHoldTax | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.withHoldTax">
|
||||
<span fxFlex="40%">{{'labels.inputs.Tax Group' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Tax Group' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.taxGroup.name }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Is Overdraft Allowed' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Is Overdraft Allowed' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.allowOverdraft | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.minOverdraftForInterestCalculation">
|
||||
<span fxFlex="40%">{{'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.minOverdraftForInterestCalculation }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.nominalAnnualInterestRateOverdraft">
|
||||
<span fxFlex="40%">{{'labels.inputs.Nominal Annual Interest for Overdraft' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.nominalAnnualInterestRateOverdraft }} %</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.overdraftLimit">
|
||||
<span fxFlex="40%">{{'labels.inputs.Maximum Overdraft Amount Limit' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.overdraftLimit | formatNumber }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill>
|
||||
<span fxFlex="40%">{{'labels.inputs.Enable Dormancy Tracking' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Enable Dormancy Tracking' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.isDormancyTrackingActive | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.isDormancyTrackingActive" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Inactive sub-status' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToInactive }}</span>
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Dormant sub-status' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToDormancy }}</span>
|
||||
<span fxFlex="40%">{{'labels.inputs.Number of Days to Escheat' | translate}}:</span>
|
||||
<span fxFlex="40%">{{ 'labels.inputs.Number of Days to Escheat' | translate }}:</span>
|
||||
<span fxFlex="60%">{{ savingProduct.daysToEscheat }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="savingProduct.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Charges' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.charges">
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargesDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: chargesDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.heading.Accounting' | translate}}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Accounting' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<mifosx-view-savings-accounting-details fxFlex="100%"
|
||||
[accountingRule]="savingProduct.accountingRule"
|
||||
[accountingMappings]="savingProduct.accountingMappings"
|
||||
<mifosx-view-savings-accounting-details
|
||||
fxFlex="100%"
|
||||
[accountingRule]="savingProduct.accountingRule"
|
||||
[accountingMappings]="savingProduct.accountingMappings"
|
||||
>
|
||||
</mifosx-view-savings-accounting-details>
|
||||
|
||||
<div
|
||||
*ngIf="savingProduct.paymentChannelToFundSourceMappings?.length || savingProduct.feeToIncomeAccountMappings?.length || savingProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{'labels.inputs.Advanced Accounting Rules' | translate}}</h3>
|
||||
*ngIf="
|
||||
savingProduct.paymentChannelToFundSourceMappings?.length ||
|
||||
savingProduct.feeToIncomeAccountMappings?.length ||
|
||||
savingProduct.penaltyToIncomeAccountMappings?.length
|
||||
"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Advanced Accounting Rules' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div *ngIf="savingProduct.paymentChannelToFundSourceMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Fund Sources for Payment Channels' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="savingProduct.paymentChannelToFundSourceMappings">
|
||||
<div
|
||||
*ngIf="savingProduct.paymentChannelToFundSourceMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Fund Sources for Payment Channels' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="savingProduct.paymentChannelToFundSourceMappings"
|
||||
>
|
||||
<ng-container matColumnDef="paymentTypeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Payment Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Payment Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
{{ paymentFundSource.paymentType.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="fundSourceAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fund Source' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fund Source' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let paymentFundSource">
|
||||
({{ paymentFundSource.fundSourceAccount.glCode }}) {{ paymentFundSource.fundSourceAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="paymentFundSourceDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: paymentFundSourceDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="savingProduct.feeToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Fees to Specific Income Accounts' | translate}}</h4>
|
||||
<div
|
||||
*ngIf="savingProduct.feeToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Fees to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table [dataSource]="savingProduct.feeToIncomeAccountMappings">
|
||||
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Fees' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Fees' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
{{ feesIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let feesIncome">
|
||||
({{ feesIncome.incomeAccount.glCode }}) {{ feesIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div *ngIf="savingProduct.penaltyToIncomeAccountMappings?.length" fxFlexFill fxLayout="row wrap"
|
||||
fxLayout.lt-md="column">
|
||||
|
||||
<h4 class="mat-h4" fxFlexFill>{{'labels.inputs.Penalties to Specific Income Accounts' | translate}}</h4>
|
||||
|
||||
<table fxFlexFill class="mat-elevation-z1" mat-table
|
||||
[dataSource]="savingProduct.penaltyToIncomeAccountMappings">
|
||||
<div
|
||||
*ngIf="savingProduct.penaltyToIncomeAccountMappings?.length"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 class="mat-h4" fxFlexFill>{{ 'labels.inputs.Penalties to Specific Income Accounts' | translate }}</h4>
|
||||
|
||||
<table
|
||||
fxFlexFill
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="savingProduct.penaltyToIncomeAccountMappings"
|
||||
>
|
||||
<ng-container matColumnDef="chargeId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Penalty' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Penalty' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
{{ penaltyIncome.charge.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="incomeAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Income Account' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Income Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let penaltyIncome">
|
||||
({{ penaltyIncome.incomeAccount.glCode }}) {{ penaltyIncome.incomeAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: feesPenaltyIncomeDisplayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+17
-11
@@ -1,23 +1,29 @@
|
||||
<mat-card class="product-card">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<nav mat-tab-nav-bar class="navigation-tabs">
|
||||
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
|
||||
[active]="general.isActive">
|
||||
{{'labels.heading.General' | translate}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./general']"
|
||||
routerLinkActive
|
||||
#general="routerLinkActive"
|
||||
[active]="general.isActive"
|
||||
>
|
||||
{{ 'labels.heading.General' | translate }}
|
||||
</a>
|
||||
<ng-container *ngFor="let savingProductDatatable of savingProductDatatables">
|
||||
<a mat-tab-link [routerLink]="['./datatables',savingProductDatatable.registeredTableName]" routerLinkActive
|
||||
#datatable="routerLinkActive" [active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + savingProductDatatable.registeredTableName">
|
||||
{{savingProductDatatable.registeredTableName}}
|
||||
<a
|
||||
mat-tab-link
|
||||
[routerLink]="['./datatables', savingProductDatatable.registeredTableName]"
|
||||
routerLinkActive
|
||||
#datatable="routerLinkActive"
|
||||
[active]="datatable.isActive"
|
||||
*mifosxHasPermission="'READ_' + savingProductDatatable.registeredTableName"
|
||||
>
|
||||
{{ savingProductDatatable.registeredTableName }}
|
||||
</a>
|
||||
</ng-container>
|
||||
</nav>
|
||||
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
@@ -1,52 +1,63 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="createDividendForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field (click)="startDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Dividend Period Start Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="startDatePicker" required formControlName="dividendPeriodStartDate">
|
||||
<mat-label>{{ 'labels.inputs.Dividend Period Start Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="startDatePicker"
|
||||
required
|
||||
formControlName="dividendPeriodStartDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #startDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="createDividendForm.controls.dividendPeriodStartDate.hasError('required')">
|
||||
{{'labels.inputs.Starting Date' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Starting Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field (click)="endDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Dividend Period End Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="endDatePicker" required formControlName="dividendPeriodEndDate">
|
||||
<mat-label>{{ 'labels.inputs.Dividend Period End Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="endDatePicker"
|
||||
required
|
||||
formControlName="dividendPeriodEndDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #endDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="createDividendForm.controls.dividendPeriodEndDate.hasError('required')">
|
||||
{{'labels.inputs.End Date' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.End Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Dividend Amount' | translate}}</mat-label>
|
||||
<input matInput required formControlName="dividendAmount">
|
||||
<mat-label>{{ 'labels.inputs.Dividend Amount' | translate }}</mat-label>
|
||||
<input matInput required formControlName="dividendAmount" />
|
||||
<mat-error *ngIf="createDividendForm.controls.dividendAmount.hasError('required')">
|
||||
{{ 'labels.inputs.Amount' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Amount' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!createDividendForm.valid">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!createDividendForm.valid">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+15
-31
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #shareProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,60 +21,51 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="shareProductDetailsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-details-step></mifosx-share-product-details-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductCurrencyForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-currency-step [shareProductsTemplate]="shareProductsTemplate"></mifosx-share-product-currency-step>
|
||||
|
||||
<mifosx-share-product-currency-step
|
||||
[shareProductsTemplate]="shareProductsTemplate"
|
||||
></mifosx-share-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductTermsForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-terms-step></mifosx-share-product-terms-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductSettingsForm">
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-settings-step [shareProductsTemplate]="shareProductsTemplate"></mifosx-share-product-settings-step>
|
||||
|
||||
<mifosx-share-product-settings-step
|
||||
[shareProductsTemplate]="shareProductsTemplate"
|
||||
></mifosx-share-product-settings-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductMarketPriceForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.MARKET PRICE' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.MARKET PRICE' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-market-price-step></mifosx-share-product-market-price-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-charges-step
|
||||
[shareProductsTemplate]="shareProductsTemplate"
|
||||
[currencyCode]="shareProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-share-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductAccountingForm">
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-accounting-step
|
||||
[shareProductsTemplate]="shareProductsTemplate"
|
||||
@@ -84,24 +73,19 @@
|
||||
[shareProductFormValid]="shareProductFormValid"
|
||||
>
|
||||
</mifosx-share-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="shareProductFormValid" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-preview-step
|
||||
[shareProductsTemplate]="shareProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[shareProduct]="shareProduct"
|
||||
[taskPermission]='"CREATE_SHAREPRODUCT"'
|
||||
[taskPermission]="'CREATE_SHAREPRODUCT'"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-share-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,55 +1,58 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_SHAREDIVIDEND'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
Initiate Dividend
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_SHAREDIVIDEND'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
Initiate Dividend
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dividend">{{ dividend.productData.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="dividendPeriodStartDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Dividend Period Start Date' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Dividend Period Start Date' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let dividend">{{ dividend.dividendPeriodStartDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="dividendPeriodEndDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Dividend Period End Date' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Dividend Period End Date' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let dividend">{{ dividend.dividendPeriodEndDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Amount' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let dividend"> {{ dividend.amount }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dividend">{{ dividend.amount }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Status' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dividend">{{ dividend.status.value }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="showDividend(row.id, row.status.value)" class="select-row"></tr>
|
||||
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
(click)="showDividend(row.id, row.status.value)"
|
||||
class="select-row"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+24
-34
@@ -1,7 +1,5 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-horizontal-stepper class="mat-elevation-z8" labelPosition="bottom" #shareProductStepper>
|
||||
|
||||
<ng-template matStepperIcon="number">
|
||||
<fa-icon icon="pencil-alt" size="sm"></fa-icon>
|
||||
</ng-template>
|
||||
@@ -23,60 +21,57 @@
|
||||
</ng-template>
|
||||
|
||||
<mat-step [stepControl]="shareProductDetailsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DETAILS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.DETAILS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-details-step [shareProductsTemplate]="shareProductAndTemplate"></mifosx-share-product-details-step>
|
||||
|
||||
<mifosx-share-product-details-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
></mifosx-share-product-details-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductCurrencyForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CURRENCY' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CURRENCY' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-currency-step [shareProductsTemplate]="shareProductAndTemplate"></mifosx-share-product-currency-step>
|
||||
|
||||
<mifosx-share-product-currency-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
></mifosx-share-product-currency-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductTermsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.TERMS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.TERMS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-terms-step [shareProductsTemplate]="shareProductAndTemplate"></mifosx-share-product-terms-step>
|
||||
|
||||
<mifosx-share-product-terms-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
></mifosx-share-product-terms-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductSettingsForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.SETTINGS' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.SETTINGS' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-settings-step [shareProductsTemplate]="shareProductAndTemplate"></mifosx-share-product-settings-step>
|
||||
|
||||
<mifosx-share-product-settings-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
></mifosx-share-product-settings-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductMarketPriceForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.MARKET PRICE' | translate }}</ng-template>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.MARKET PRICE' | translate}}</ng-template>
|
||||
|
||||
<mifosx-share-product-market-price-step [shareProductsTemplate]="shareProductAndTemplate"></mifosx-share-product-market-price-step>
|
||||
|
||||
<mifosx-share-product-market-price-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
></mifosx-share-product-market-price-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.CHARGES' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.CHARGES' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-charges-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
[currencyCode]="shareProductCurrencyForm.get('currencyCode')"
|
||||
>
|
||||
</mifosx-share-product-charges-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="shareProductAccountingForm" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.ACCOUNTING' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.ACCOUNTING' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-accounting-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
@@ -84,24 +79,19 @@
|
||||
[shareProductFormValid]="shareProductFormValidAndNotPristine"
|
||||
>
|
||||
</mifosx-share-product-accounting-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
<mat-step state="preview" *ngIf="shareProductFormValidAndNotPristine" completed>
|
||||
|
||||
<ng-template matStepLabel>{{'labels.inputs.PREVIEW' | translate}}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.PREVIEW' | translate }}</ng-template>
|
||||
|
||||
<mifosx-share-product-preview-step
|
||||
[shareProductsTemplate]="shareProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[shareProduct]="shareProduct"
|
||||
[taskPermission]='"UPDATE_SHAREPRODUCT"'
|
||||
[taskPermission]="'UPDATE_SHAREPRODUCT'"
|
||||
(submitEvent)="submit()"
|
||||
>
|
||||
</mifosx-share-product-preview-step>
|
||||
|
||||
</mat-step>
|
||||
|
||||
</mat-horizontal-stepper>
|
||||
|
||||
</div>
|
||||
|
||||
+45
-23
@@ -1,64 +1,86 @@
|
||||
<form [formGroup]="shareProductAccountingForm">
|
||||
|
||||
<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-button *ngFor="let accountingRule of accountingRuleData; let i = index" [value]="i+1">
|
||||
<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">
|
||||
{{ 'labels.accounting.' + accountingRule | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<div *ngIf="shareProductAccountingForm.value.accountingRule === 2" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div
|
||||
*ngIf="shareProductAccountingForm.value.accountingRule === 2"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Assets' | translate }}</h4>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="shareProductAccountingForm.controls.shareReferenceId"
|
||||
[glAccountList]="assetAccountData" [required]="true" [inputLabel]="'Share reference'">
|
||||
[glAccountList]="assetAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Share reference'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Liabilities' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="shareProductAccountingForm.controls.shareSuspenseId"
|
||||
[glAccountList]="liabilityAccountData" [required]="true" [inputLabel]="'Share suspense control'">
|
||||
[glAccountList]="liabilityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Share suspense control'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Share Equity' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Share Equity' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="shareProductAccountingForm.controls.shareEquityId"
|
||||
[glAccountList]="equityAccountData" [required]="true" [inputLabel]="'Equity'">
|
||||
[glAccountList]="equityAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Equity'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
<h4 fxFlex="98%" class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<h4 fxFlex="98%" class="mat-h4">{{ 'labels.heading.Income' | translate }}</h4>
|
||||
|
||||
<mifosx-gl-account-selector fxFlex="48%"
|
||||
<mifosx-gl-account-selector
|
||||
fxFlex="48%"
|
||||
[inputFormControl]="shareProductAccountingForm.controls.incomeFromFeeAccountId"
|
||||
[glAccountList]="incomeAccountData" [required]="true" [inputLabel]="'Income from fees'">
|
||||
[glAccountList]="incomeAccountData"
|
||||
[required]="true"
|
||||
[inputLabel]="'Income from fees'"
|
||||
>
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext [disabled]="!shareProductFormValid">
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+23
-18
@@ -1,9 +1,11 @@
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Charge' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Charge' | translate }}</mat-label>
|
||||
<mat-select #charge>
|
||||
<mat-option *ngFor="let charge of chargeData | chargesFilter:chargesDataSource:currencyCode.value" [value]="charge">
|
||||
<mat-option
|
||||
*ngFor="let charge of chargeData | chargesFilter: chargesDataSource : currencyCode.value"
|
||||
[value]="charge"
|
||||
>
|
||||
{{ charge.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
@@ -12,42 +14,47 @@
|
||||
<div fxFlex="48%" fxFlexAlign="center">
|
||||
<button type="button" mat-raised-button color="primary" (click)="addCharge(charge)" [disabled]="!charge.value">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<table fxFlex="98%" class="mat-elevation-z1" mat-table [dataSource]="chargesDataSource" [hidden]="chargesDataSource.length === 0">
|
||||
|
||||
<table
|
||||
fxFlex="98%"
|
||||
class="mat-elevation-z1"
|
||||
mat-table
|
||||
[dataSource]="chargesDataSource"
|
||||
[hidden]="chargesDataSource.length === 0"
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Name' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.name + ', ' + charge.currency.displaySymbol }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeCalculationType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Type' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeCalculationType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="amount">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Amount' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.amount | formatNumber }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="chargeTimeType">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Collected On' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Collected On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
{{ charge.chargeTimeType.value | translateKey:'catalogs' }}
|
||||
{{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let charge">
|
||||
<button mat-icon-button color="warn" (click)="deleteCharge(charge)">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
@@ -56,19 +63,17 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+30
-15
@@ -1,46 +1,61 @@
|
||||
<form [formGroup]="shareProductCurrencyForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency' | translate}}</mat-label>
|
||||
<mat-select matTooltip="{{ 'tooltips.The currency to be used' | translate}}" formControlName="currencyCode" required>
|
||||
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
|
||||
<mat-select
|
||||
matTooltip="{{ 'tooltips.The currency to be used' | translate }}"
|
||||
formControlName="currencyCode"
|
||||
required
|
||||
>
|
||||
<mat-option *ngFor="let currency of currencyData" [value]="currency.code">
|
||||
{{ currency.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Decimal Places' | translate}}</mat-label>
|
||||
<input type="number" matTooltip="{{ 'tooltips.Track and report on share accounts' | translate}}" matInput formControlName="digitsAfterDecimal" required>
|
||||
<mat-label>{{ 'labels.inputs.Decimal Places' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matTooltip="{{ 'tooltips.Track and report on share accounts' | translate }}"
|
||||
matInput
|
||||
formControlName="digitsAfterDecimal"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Decimal Places' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Decimal Places' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Currency in multiples of' | translate}}</mat-label>
|
||||
<input type="number" matInput matTooltip="{{ 'tooltips.Amount to be rounded off' | translate}}" formControlName="inMultiplesOf" required>
|
||||
<mat-label>{{ 'labels.inputs.Currency in multiples of' | translate }}</mat-label>
|
||||
<input
|
||||
type="number"
|
||||
matInput
|
||||
matTooltip="{{ 'tooltips.Amount to be rounded off' | translate }}"
|
||||
formControlName="inMultiplesOf"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Currency in multiples of' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Currency in multiples of' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
+28
-14
@@ -1,39 +1,53 @@
|
||||
<form [formGroup]="shareProductDetailsForm">
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Product Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="name" matTooltip="{{ 'tooltips.A unique identifier for the share product' | translate}}" required>
|
||||
<mat-label>{{ 'labels.inputs.Product Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="name"
|
||||
matTooltip="{{ 'tooltips.A unique identifier for the share product' | translate }}"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Product Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Product Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Short Name' | translate}}</mat-label>
|
||||
<input matInput formControlName="shortName" matTooltip="{{ 'tooltips.A unique identifier for the share product' | translate}}" maxlength="4" required>
|
||||
<mat-label>{{ 'labels.inputs.Short Name' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
formControlName="shortName"
|
||||
matTooltip="{{ 'tooltips.A unique identifier for the share product' | translate }}"
|
||||
maxlength="4"
|
||||
required
|
||||
/>
|
||||
<mat-error>
|
||||
{{'labels.inputs.Short Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Short Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<textarea matInput formControlName="description" matTooltip="{{ 'tooltips.Provides additional information' | translate}}" required></textarea>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
formControlName="description"
|
||||
matTooltip="{{ 'tooltips.Provides additional information' | translate }}"
|
||||
required
|
||||
></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<button mat-raised-button matStepperPrevious disabled>
|
||||
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Previous' | translate}}
|
||||
{{ 'labels.buttons.Previous' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button matStepperNext>
|
||||
{{'labels.buttons.Next' | translate}}
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
<fa-icon icon="arrow-right" class="m-l-10"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user