WEB-747 Unable to approve or activate the GSIM account from group level (#3184)

This commit is contained in:
Soni Jay
2026-02-18 17:46:39 -06:00
committed by GitHub
parent b494c29821
commit b7e9068556
17 changed files with 172 additions and 22 deletions
@@ -43,10 +43,47 @@
<td mat-cell *matCellDef="let element">{{ element.parentPrincipalAmount }}</td>
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Status' | translate }}</th>
<td mat-cell *matCellDef="let element">
@if (element.status) {
<span [ngClass]="element.status.code | statusLookup">
{{ element.status.value }}
</span>
}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
<td mat-cell *matCellDef="let element">
@if (element.status?.submittedAndPendingApproval) {
<button
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['/loans-accounts', element.childLoanId, 'actions', 'Approve']"
>
<i class="fa fa-check"></i> {{ 'buttons.Approve' | translate }}
</button>
}
@if (element.status?.waitingForDisbursal) {
<button
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['/loans-accounts', element.childLoanId, 'actions', 'Disburse']"
>
<i class="fa fa-flag"></i> {{ 'buttons.Disburse' | translate }}
</button>
}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr
mat-row
[routerLink]="['../../', row.childLoanId, 'general']"
[routerLink]="['/loans-accounts', row.childLoanId, 'general']"
*matRowDef="let row; columns: displayedColumns"
></tr>
</table>
@@ -24,6 +24,8 @@ import {
} from '@angular/material/table';
import { ActivatedRoute, RouterLink } from '@angular/router';
import { NgClass } from '@angular/common';
import { StatusLookupPipe } from 'app/pipes/status-lookup.pipe';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
/**
@@ -44,7 +46,9 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
MatHeaderRowDef,
MatHeaderRow,
MatRowDef,
MatRow
MatRow,
NgClass,
StatusLookupPipe
]
})
export class GlimAccountComponent implements OnInit {
@@ -58,7 +62,9 @@ export class GlimAccountComponent implements OnInit {
'clientName',
'loanAccountNumber',
'clientPrincipalLoan',
'groupPrincipalLoan'
'groupPrincipalLoan',
'status',
'actions'
];
/** Data source for charge overview table. */
dataSource: MatTableDataSource<any>;
@@ -89,4 +95,12 @@ export class GlimAccountComponent implements OnInit {
setLoanClientChargeOverview() {
this.dataSource = new MatTableDataSource(this.glimOverviewData);
}
/**
* Stops the propagation to view pages.
* @param $event
*/
routeEdit($event: MouseEvent) {
$event.stopPropagation();
}
}
@@ -10,6 +10,45 @@
<div class="content-container">
<h2>{{ 'labels.heading.GSIM Account Overview' | translate }}</h2>
<!-- Group Summary Card -->
@if (savingAccountData) {
<mat-card class="m-b-20">
<mat-card-header>
<mat-card-title>{{ 'labels.heading.Group Summary' | translate }}</mat-card-title>
</mat-card-header>
<mat-card-content>
<div class="layout-row layout-wrap">
<div class="flex-50 m-b-10">
<strong>{{ 'labels.inputs.Group' | translate }}:</strong>
{{ groupsData?.groupName || ('labels.inputs.N/A' | translate) }}
</div>
<div class="flex-50 m-b-10">
<strong>{{ 'labels.inputs.Account Number' | translate }}:</strong>
{{ savingAccountData.accountNo }}
</div>
<div class="flex-50 m-b-10">
<strong>{{ 'labels.inputs.Product' | translate }}:</strong>
{{ savingAccountData.savingsProductName }}
</div>
<div class="flex-50 m-b-10">
<strong>{{ 'labels.inputs.Status' | translate }}:</strong>
<span [ngClass]="savingAccountData.status.code | statusLookup">
{{ savingAccountData.status.value }}
</span>
</div>
@if (savingAccountData.summary) {
<div class="flex-50 m-b-10">
<strong>{{ 'labels.inputs.Total Balance' | translate }}:</strong>
{{ savingAccountData.summary.accountBalance | number: '1.2-2' }}
</div>
}
</div>
</mat-card-content>
</mat-card>
}
<h3>{{ 'labels.heading.Member Accounts' | translate }}</h3>
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="clientDetails">
<th mat-header-cell *matHeaderCellDef>
@@ -47,7 +86,7 @@
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['../', 'savings-accounts', element.id, 'actions', 'Deposit']"
[routerLink]="['/savings-accounts', element.id, 'actions', 'Deposit']"
>
<i class="fa fa-arrow-up" matTooltip="{{ 'tooltips.Deposit' | translate }}"></i>
</button>
@@ -58,7 +97,7 @@
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['../', 'savings-accounts', element.id, 'actions', 'Withdrawal']"
[routerLink]="['/savings-accounts', element.id, 'actions', 'Withdrawal']"
>
<i class="fa fa-arrow-down" matTooltip="{{ 'tooltips.Withdraw' | translate }}"></i>
</button>
@@ -69,40 +108,40 @@
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['../../../', 'savings-accounts', element.id, 'actions', 'Approve']"
[routerLink]="['/savings-accounts', element.id, 'actions', 'Approve']"
>
<i class="fa fa-check" matTooltip="{{ 'tooltips.Approve' | translate }}"></i>
</button>
}
@if (!element.status.submittedAndPendingApproval && !element.status.active) {
@if (element.status.approved && !element.status.active) {
<button
class="account-action-button"
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['../../../', 'savings-accounts', element.id, 'actions', 'Undo Approval']"
>
<i class="fa fa-undo" matTooltip="{{ 'tooltips.Undo Approval' | translate }}"></i>
</button>
}
@if (!element.status.submittedAndPendingApproval && !element.status.active) {
<button
class="account-action-button"
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['../../', element.id, 'actions', 'Activate']"
[routerLink]="['/savings-accounts', element.id, 'actions', 'Activate']"
>
<i class="fa fa-check-circle" matTooltip="{{ 'tooltips.Activate' | translate }}"></i>
</button>
}
@if (element.status.approved && !element.status.active) {
<button
class="account-action-button"
mat-raised-button
color="primary"
(click)="routeEdit($event)"
[routerLink]="['/savings-accounts', element.id, 'actions', 'Undo Approval']"
>
<i class="fa fa-undo" matTooltip="{{ 'tooltips.Undo Approval' | translate }}"></i>
</button>
}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr
mat-row
[routerLink]="['../../', row.id, 'transactions']"
[routerLink]="['/savings-accounts', row.id, 'transactions']"
*matRowDef="let row; columns: displayedColumns"
></tr>
</table>
@@ -25,9 +25,26 @@ import {
import { ActivatedRoute, RouterLink } from '@angular/router';
import { NgClass } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { MatCard, MatCardHeader, MatCardTitle, MatCardContent } from '@angular/material/card';
import { StatusLookupPipe } from '../../pipes/status-lookup.pipe';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
interface SavingAccount {
accountNo: string;
savingsProductName?: string;
status: {
code: string;
value: string;
};
summary?: {
accountBalance: number;
};
}
interface GroupData {
groupName?: string;
}
/**
* GSIM Accounts Overview component.
*/
@@ -50,6 +67,10 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
MatRowDef,
MatRow,
MatPaginator,
MatCard,
MatCardHeader,
MatCardTitle,
MatCardContent,
StatusLookupPipe
]
})
@@ -70,9 +91,9 @@ export class GsimAccountComponent implements OnInit {
/** Charge Overview data */
gsimOverviewData: any;
savingAccountData: any;
savingAccountData: SavingAccount | null = null;
groupsData: any;
groupsData: GroupData | null = null;
/** Paginator for charge overview table. */
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+3
View File
@@ -1039,6 +1039,8 @@
"GLIM Account Overview": "Přehled účtu GLIM",
"GLIM Loans Account Overview": "Přehled úvěrového účtu GLIM",
"GSIM Account Overview": "Přehled účtu GSIM",
"Group Summary": "Shrnutí skupiny",
"Member Accounts": "Účty členů",
"General": "Všeobecné",
"Global Configuration options": "Možnosti globální konfigurace a jejich aktuální stav. Pro více podrobností klikněte",
"Group Details": "Podrobnosti o skupině",
@@ -1328,6 +1330,7 @@
"Account Number Preferences": "Předvolby čísla účtu",
"Total Repaid": "Celkem splaceno",
"Outstanding Balance": "Nesplacený zůstatek",
"Total Balance": "Celkový zůstatek",
"Interest Charged": "Účtované úroky",
"Account Overview": "Přehled účtu",
"Account Type": "Typ účtu",
+3
View File
@@ -1040,6 +1040,8 @@
"GLIM Account Overview": "GLIM-Kontoübersicht",
"GLIM Loans Account Overview": "Übersicht über das GLIM-Darlehenskonto",
"GSIM Account Overview": "Übersicht über das GSIM-Konto",
"Group Summary": "Gruppenzusammenfassung",
"Member Accounts": "Mitgliederkonten",
"General": "Allgemein",
"Global Configuration options": "Globale Konfigurationsoptionen und ihr aktueller Status. Für weitere Details klicken Sie",
"Group Details": "Gruppendetails",
@@ -1329,6 +1331,7 @@
"Account Number Preferences": "Kontonummerneinstellungen",
"Total Repaid": "Insgesamt zurückgezahlt",
"Outstanding Balance": "Ausstehender Saldo",
"Total Balance": "Gesamtsaldo",
"Interest Charged": "Berechnete Zinsen",
"Account Type": "Konto Typ",
"Account Usage": "Kontonutzung",
+3
View File
@@ -1053,6 +1053,8 @@
"GLIM Account Overview": "GLIM Account Overview",
"GLIM Loans Account Overview": "GLIM Loans Account Overview",
"GSIM Account Overview": "GSIM Account Overview",
"Group Summary": "Group Summary",
"Member Accounts": "Member Accounts",
"General": "General",
"Global Configuration options": "Global Configuration options and their current status. For more details click",
"Group Details": "Group Details",
@@ -1333,6 +1335,7 @@
"Account Number Preferences": "Account Number Preferences",
"Total Repaid": "Total Repaid",
"Outstanding Balance": "Outstanding Balance",
"Total Balance": "Total Balance",
"Interest Charged": "Interest Charged",
"Account Type": "Account Type",
"Account Usage": "Account Usage",
+3
View File
@@ -1040,6 +1040,8 @@
"GLIM Account Overview": "Resumen cuenta GLIM",
"GLIM Loans Account Overview": "Resumen cuenta de Créditos GLIM",
"GSIM Account Overview": "Resumen cuenta GSIM",
"Group Summary": "Resumen del Grupo",
"Member Accounts": "Cuentas de Miembros",
"General": "General",
"Global Configuration options": "Opciones de Configuración Global y su estado actual. Para más detalles haga clic",
"Group Details": "Detalles del grupo",
@@ -1329,6 +1331,7 @@
"Account Number Preferences": "Preferencias de número de cuenta",
"Total Repaid": "Total reembolsado",
"Outstanding Balance": "Saldo pendiente",
"Total Balance": "Saldo Total",
"Interest Charged": "Interés cobrado",
"Account Type": "Tipo de cuenta",
"Account Usage": "Uso de la cuenta",
+3
View File
@@ -1039,6 +1039,8 @@
"GLIM Account Overview": "Resumen cuenta GLIM",
"GLIM Loans Account Overview": "Resumen cuenta de Créditos GLIM",
"GSIM Account Overview": "Resumen cuenta GSIM",
"Group Summary": "Resumen del Grupo",
"Member Accounts": "Cuentas de Miembros",
"General": "General",
"Global Configuration options": "Opciones de Configuración Global y su estado actual. Para más detalles haga clic",
"Group Details": "Detalles del grupo",
@@ -1328,6 +1330,7 @@
"Account Number Preferences": "Preferencias de número de cuenta",
"Total Repaid": "Total reembolsado",
"Outstanding Balance": "Saldo pendiente",
"Total Balance": "Saldo Total",
"Interest Charged": "Interés cobrado",
"Account Type": "Tipo de cuenta",
"Account Usage": "Uso de la cuenta",
+3
View File
@@ -1043,6 +1043,8 @@
"GLIM Account Overview": "Aperçu du compte GLIM",
"GLIM Loans Account Overview": "Aperçu du compte de prêts GLIM",
"GSIM Account Overview": "Aperçu du compte GSIM",
"Group Summary": "Résumé du groupe",
"Member Accounts": "Comptes des membres",
"General": "Général",
"Global Configuration options": "Options de configuration globale et leur état actuel. Pour plus de détails cliquez",
"Group Details": "Détails du groupe",
@@ -1332,6 +1334,7 @@
"Account Number Preferences": "Préférences de numéro de compte",
"Total Repaid": "Total remboursé",
"Outstanding Balance": "Solde impayé",
"Total Balance": "Solde total",
"Interest Charged": "Intérêts facturés",
"Account Type": "Type de compte",
"Account Usage": "Utilisation du compte",
+3
View File
@@ -1039,6 +1039,8 @@
"GLIM Account Overview": "Panoramica dell'account GLIM",
"GLIM Loans Account Overview": "Panoramica del conto prestiti GLIM",
"GSIM Account Overview": "Panoramica dell'account GSMIM",
"Group Summary": "Riepilogo del Gruppo",
"Member Accounts": "Conti dei Membri",
"General": "Generale",
"Global Configuration options": "Opzioni di configurazione globale e loro stato attuale. Per maggiori dettagli clicca",
"Group Details": "Dettagli del gruppo",
@@ -1328,6 +1330,7 @@
"Account Number Preferences": "Preferenze numero di conto",
"Total Repaid": "Totale rimborsato",
"Outstanding Balance": "Saldo residuo",
"Total Balance": "Saldo Totale",
"Interest Charged": "Interessi addebitati",
"Account Type": "Tipo di account",
"Account Usage": "Utilizzo dell'account",
+3
View File
@@ -1040,6 +1040,8 @@
"GLIM Account Overview": "GLIM 계정 개요",
"GLIM Loans Account Overview": "GLIM 대출 계좌 개요",
"GSIM Account Overview": "GSIM 계정 개요",
"Group Summary": "그룹 요약",
"Member Accounts": "회원 계정",
"General": "일반적인",
"Global Configuration options": "글로벌 구성 옵션 및 현재 상태. 자세한 내용을 보려면 클릭하세요.",
"Group Details": "그룹 세부정보",
@@ -1330,6 +1332,7 @@
"Account Number Preferences": "계좌번호 기본 설정",
"Total Repaid": "총 상환액",
"Outstanding Balance": "미결제 잔액",
"Total Balance": "총 잔액",
"Interest Charged": "부과된 이자",
"Account Type": "계정 유형",
"Account Usage": "계정 사용량",
+3
View File
@@ -1038,6 +1038,8 @@
"GLIM Account Overview": "GLIM paskyros apžvalga",
"GLIM Loans Account Overview": "GLIM paskolų sąskaitos apžvalga",
"GSIM Account Overview": "GSIM paskyros apžvalga",
"Group Summary": "Grupės santrauka",
"Member Accounts": "Narių sąskaitos",
"General": "Generolas",
"Global Configuration options": "Visuotinės konfigūracijos parinktys ir jų dabartinė būsena. Norėdami gauti daugiau informacijos, spustelėkite",
"Group Details": "Grupės informacija",
@@ -1327,6 +1329,7 @@
"Account Number Preferences": "Sąskaitos numerio nuostatos",
"Total Repaid": "Iš viso grąžinta",
"Outstanding Balance": "Neapmokėtas likutis",
"Total Balance": "Bendras likutis",
"Interest Charged": "Priskaitsiuotos palūkanos",
"Account Type": "Paskyros tipas",
"Account Usage": "Paskyros naudojimas",
+3
View File
@@ -1040,6 +1040,8 @@
"GLIM Account Overview": "GLIM konta pārskats",
"GLIM Loans Account Overview": "GLIM aizdevumu konta pārskats",
"GSIM Account Overview": "GSIM konta pārskats",
"Group Summary": "Grupas kopsavilkums",
"Member Accounts": "Dalībnieku konti",
"General": "Ģenerālis",
"Global Configuration options": "Globālās konfigurācijas opcijas un to pašreizējais statuss. Lai iegūtu sīkāku informāciju, noklikšķiniet",
"Group Details": "Grupas informācija",
@@ -1329,6 +1331,7 @@
"Account Number Preferences": "Konta numura preferences",
"Total Repaid": "Kopā atmaksāts",
"Outstanding Balance": "Nesamaksātais atlikums",
"Total Balance": "Kopējais atlikums",
"Interest Charged": "Iekasētie procenti",
"Account Type": "Konta tips",
"Account Usage": "Konta lietojums",
+3
View File
@@ -1038,6 +1038,8 @@
"GLIM Account Overview": "GLIM खाता सिंहावलोकन",
"GLIM Loans Account Overview": "GLIM ऋण खाता सिंहावलोकन",
"GSIM Account Overview": "GSIM खाता अवलोकन",
"Group Summary": "समूह सारांश",
"Member Accounts": "सदस्य खाताहरू",
"General": "सामान्य",
"Global Configuration options": "ग्लोबल कन्फिगरेसन विकल्पहरू र तिनीहरूको हालको स्थिति। थप विवरणहरूको लागि क्लिक गर्नुहोस्",
"Group Details": "समूह विवरणहरू",
@@ -1327,6 +1329,7 @@
"Account Number Preferences": "खाता नम्बर प्राथमिकताहरू",
"Total Repaid": "कुल भुक्तानी गरिएको",
"Outstanding Balance": "बाँकी मौज्दात",
"Total Balance": "कुल मौज्दात",
"Interest Charged": "ब्याज लगाइएको",
"Account Type": "खाताको प्रकार",
"Account Usage": "खाता प्रयोग",
+3
View File
@@ -1039,6 +1039,8 @@
"GLIM Account Overview": "Visão geral da conta GLIM",
"GLIM Loans Account Overview": "Visão geral da conta de empréstimos GLIM",
"GSIM Account Overview": "Visão geral da conta GSIM",
"Group Summary": "Resumo do Grupo",
"Member Accounts": "Contas de Membros",
"General": "Em geral",
"Global Configuration options": "Opções de configuração global e seu status atual. Para mais detalhes clique",
"Group Details": "Detalhes do grupo",
@@ -1328,6 +1330,7 @@
"Account Number Preferences": "Preferências de número de conta",
"Total Repaid": "Total reembolsado",
"Outstanding Balance": "Saldo devedor",
"Total Balance": "Saldo Total",
"Interest Charged": "Juros cobrados",
"Account Type": "tipo de conta",
"Account Usage": "Uso da conta",
+3
View File
@@ -1037,6 +1037,8 @@
"GLIM Account Overview": "Muhtasari wa Akaunti ya GLIM",
"GLIM Loans Account Overview": "Muhtasari wa Akaunti ya Mikopo ya GLIM",
"GSIM Account Overview": "Muhtasari wa Akaunti ya GSIM",
"Group Summary": "Muhtasari wa Kikundi",
"Member Accounts": "Akaunti za Wajumbe",
"General": "Mkuu",
"Global Configuration options": "Chaguzi za Usanidi wa Ulimwenguni na hali yao ya sasa. Kwa maelezo zaidi bofya",
"Group Details": "Maelezo ya Kikundi",
@@ -1326,6 +1328,7 @@
"Account Number Preferences": "Mapendeleo ya Nambari ya Akaunti",
"Total Repaid": "Jumla iliyolipwa",
"Outstanding Balance": "Salio linalobaki",
"Total Balance": "Jumla ya Salio",
"Interest Charged": "Riba iliyotoza",
"Account Type": "Aina ya Akaunti",
"Account Usage": "Matumizi ya Akaunti",