fix: Show members in GLIM and GSIM preview (#2334)
This shows a list of participating members in GLIM resp. GSIM preview step. It also changes "GLIM Loan" to "GLIM" in a menu item. Fixes: WEB-64
This commit is contained in:
+46
-7
@@ -42,11 +42,44 @@
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div fxFlex="98%" *ngIf="activeClientMembers">
|
||||
<! -- TODO: Display activeClientMembers -->
|
||||
</div>
|
||||
<ng-container *ngIf="activeClientMembers">
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Client Members' | translate }}</h3>
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
<div fxFlex="60%">
|
||||
<table mat-table #membersTable [dataSource]="dataSource">
|
||||
<!-- ID Column -->
|
||||
<ng-container matColumnDef="id">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Client ID' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.id }}</td>
|
||||
</ng-container>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
<!-- Name Column -->
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Client Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.displayName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<!-- Purpose Column -->
|
||||
<ng-container matColumnDef="purpose">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Loan Purpose' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.purpose }}</td>
|
||||
</ng-container>
|
||||
|
||||
<!-- Principal Column -->
|
||||
<ng-container matColumnDef="principal">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Original Loan' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.principal | currency: loansAccountProductTemplate.currency.code : 'symbol-narrow' : '1.2-2' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="membersDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: membersDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Terms' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
@@ -175,7 +208,7 @@
|
||||
<span fxFlex="60%"> {{ loansAccount.balloonRepaymentAmount | formatNumber }} </span>
|
||||
</div>
|
||||
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Moratorium' | translate }}</h3>
|
||||
<h3 class="mat-h3" fxFlexFill class="margin-t">{{ 'labels.heading.Moratorium' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
|
||||
@@ -214,7 +247,7 @@
|
||||
<span fxFlex="60%">{{ loansAccountProductTemplate?.daysInMonthType.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<div fxFlexFill *ngIf="loansAccount.charges.length" fxLayout="row wrap" fxLayout.lt-md="column" class="margin-t">
|
||||
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlexFill></mat-divider>
|
||||
@@ -279,7 +312,13 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loansAccountProductTemplate.overdueCharges.length" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<div
|
||||
fxFlexFill
|
||||
*ngIf="loansAccountProductTemplate.overdueCharges.length"
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
class="margin-t"
|
||||
>
|
||||
<h3 fxFlex="98%" class="mat-h3">{{ 'labels.heading.Overdue Charges' | translate }}</h3>
|
||||
|
||||
<mat-divider fxFlex="98%"></mat-divider>
|
||||
|
||||
+22
-5
@@ -17,7 +17,7 @@ export class LoansAccountPreviewStepComponent implements OnChanges {
|
||||
@Input() loansAccountProductTemplate: any;
|
||||
/** Loans Account Data */
|
||||
@Input() loansAccount: any;
|
||||
/** active Client Members in case of GSIM Account */
|
||||
/** active Client Members in case of GLIM Account */
|
||||
@Input() activeClientMembers?: any;
|
||||
|
||||
/** Submit Loans Account */
|
||||
@@ -38,6 +38,16 @@ export class LoansAccountPreviewStepComponent implements OnChanges {
|
||||
'amount',
|
||||
'collectedon'
|
||||
];
|
||||
/** Columns to be displayed in active members table. */
|
||||
membersDisplayedColumns: string[] = [
|
||||
'id',
|
||||
'name',
|
||||
'purpose',
|
||||
'principal'
|
||||
];
|
||||
|
||||
/** Loan Purpose Options */
|
||||
loanPurposeOptions: any[] = [];
|
||||
|
||||
/** Table Data Source */
|
||||
dataSource: any;
|
||||
@@ -48,11 +58,18 @@ export class LoansAccountPreviewStepComponent implements OnChanges {
|
||||
ngOnChanges(changes: SimpleChanges): void {
|
||||
this.productEnableDownPayment = this.loansAccountProductTemplate.product.enableDownPayment;
|
||||
if (this.activeClientMembers) {
|
||||
this.dataSource = new MatTableDataSource<any>(this.activeClientMembers);
|
||||
this.loansAccount.principalAmount = this.activeClientMembers.reduce(
|
||||
(acc: number, member: any) => acc + (member.principal ?? 0),
|
||||
0
|
||||
this.loanPurposeOptions = this.loansAccountProductTemplate.loanPurposeOptions;
|
||||
this.dataSource = new MatTableDataSource<any>(
|
||||
this.activeClientMembers
|
||||
.filter((member: any) => member.selected)
|
||||
.map((member: any) => ({
|
||||
...member,
|
||||
purpose: this.loanPurposeOptions.find((option) => option.id === member.loanPurposeId)?.name
|
||||
}))
|
||||
);
|
||||
this.loansAccount.principalAmount = this.activeClientMembers
|
||||
.filter((member: any) => member.selected)
|
||||
.reduce((acc: number, member: any) => acc + (member.principal ?? 0), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user