Merge pull request #2662 from JaySoni1/WEB-113-glim-application-fails-to-submit

WEB-113 GLIM Application Fails to Submit
This commit is contained in:
Gopi Kishan
2025-10-05 19:47:57 +05:30
committed by GitHub
15 changed files with 65 additions and 11 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ import { Observable } from 'rxjs';
export class I18nService {
constructor(private translateService: TranslateService) {}
public translate(key: string): Observable<string> {
return this.translateService.get(key);
public translate(key: string, params?: object): Observable<string> {
return this.translateService.get(key, params);
}
}
@@ -1,5 +1,6 @@
/** Angular Imports */
import { Component, QueryList, ViewChild, ViewChildren } from '@angular/core';
import { I18nService } from 'app/core/i18n/i18n.service';
import { ActivatedRoute, Router } from '@angular/router';
/** Custom Services */
@@ -84,7 +85,8 @@ export class CreateGlimAccountComponent {
private loansService: LoansService,
private settingsService: SettingsService,
private clientService: ClientsService,
private dateUtils: Dates
private dateUtils: Dates,
private i18nService: I18nService
) {
this.route.data.subscribe((data: { loansAccountTemplate: any; groupsData: any }) => {
this.loansAccountTemplate = data.loansAccountTemplate;
@@ -212,7 +214,7 @@ export class CreateGlimAccountComponent {
/** Request Body Data */
buildRequestData(): any[] {
const requestData = [];
const memberSelected = this.selectedMembers.selectedMembers;
const memberSelected = this.selectedMembers?.selectedMembers ?? [];
const totalLoan = this.totalLoanAmount();
for (let index = 0; index < memberSelected.length; index++) {
requestData.push({
@@ -227,7 +229,7 @@ export class CreateGlimAccountComponent {
totalLoanAmount(): number {
let total = 0;
const memberSelected = this.selectedMembers.selectedMembers;
const memberSelected = this.selectedMembers?.selectedMembers ?? [];
for (let index = 0; index < memberSelected.length; index++) {
total += memberSelected[index].principal;
}
@@ -238,6 +240,30 @@ export class CreateGlimAccountComponent {
* Creates a new GLIM account.
*/
submit() {
this.selectedMembers = this.loansActiveClientMembers?.selectedClientMembers;
const memberSelected = this.loansActiveClientMembers?.selectedClientMembers?.selectedMembers ?? [];
if (!memberSelected.length) return;
const gsimMemberIds = new Set(this.dataSource.map((m: any) => Number(m.id)));
for (const member of memberSelected) {
const memberId = Number(member.id);
// Validate savings account ownership
const ownerId = Number(member.linkAccountOwnerId);
if (member.linkAccountId && member.linkAccountOwnerId && ownerId !== memberId) {
this.i18nService.translate('errors.linkedSavingsAccountOwnership').subscribe((msg: string) => {
this.notify({ defaultUserMessage: msg, errors: [] }, { memberId });
});
return;
}
// Validate GSIM membership
if (!gsimMemberIds.has(memberId)) {
this.i18nService.translate('errors.clientNotInGSIM', { id: memberId }).subscribe((msg: string) => {
this.notify({ defaultUserMessage: msg, errors: [] }, { memberId });
});
return;
}
}
// Use date format from settingsService for interestChargedFromDate
const data = this.buildRequestData();
this.loansService.createGlimAccount(data).subscribe((response: any) => {
const body = JSON.parse(response[0].body);
@@ -250,15 +276,17 @@ export class CreateGlimAccountComponent {
{ relativeTo: this.route }
);
} else {
this.notify(body, data);
this.notify(body, { batchSize: data.length });
}
});
}
notify(body: any, data: any) {
let message = body.defaultUserMessage + ' ';
while (body.errors?.length > 0) message += body.errors.pop().developerMessage + ' ';
message += 'Data: ' + JSON.stringify(data);
console.error(message);
notify(body: any, context?: { [k: string]: unknown }) {
const parts: string[] = [String(body?.defaultUserMessage ?? '')];
if (Array.isArray(body?.errors)) {
for (const e of body.errors) parts.push(String(e?.developerMessage ?? ''));
}
if (context) parts.push(`Context: ${JSON.stringify(context)}`);
console.error(parts.join(' ').trim());
}
}
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Přihlášen jako",
"Remember me": "Zapamatuj si mě",
"errors": {
"linkedSavingsAccountOwnership": "Propojený spořicí účet nepatří vybranému klientovi.",
"clientNotInGSIM": "Klient s ID {{id}} není přítomen v GSIM.",
"Capitalized Income amount adjusted already adjusted": "Výše kapitalizovaného příjmu již upravená",
"Capitalized Income Adjustment amount must be lower or equal to": "Částka úpravy kapitalizovaného příjmu musí být nižší nebo rovna",
"Buy Down Fee amount already adjusted": "Výše poplatku za odkup již byla upravena",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Angemeldet als",
"Remember me": "Erinnere dich an mich",
"errors": {
"linkedSavingsAccountOwnership": "Verknüpftes Sparkonto gehört nicht zum ausgewählten Kunden.",
"clientNotInGSIM": "Kunde mit der ID {{id}} ist nicht in GSIM vorhanden.",
"Capitalized Income amount adjusted already adjusted": "Kapitalisiertes Einkommen Betrag angepasst bereits angepasst",
"Capitalized Income Adjustment amount must be lower or equal to": "Der Betrag der kapitalisierten Einkommensanpassung muss kleiner oder gleich sein",
"Buy Down Fee amount already adjusted": "Kapitalisierte Erträge Betrag angepasst bereits angepasst",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Logged in as",
"Remember me": "Remember me",
"errors": {
"linkedSavingsAccountOwnership": "Linked savings account does not belong to the selected client.",
"clientNotInGSIM": "Client with ID {{id}} is not present in GSIM.",
"Capitalized Income amount adjusted already adjusted": "Capitalized Income amount already adjusted",
"Capitalized Income Adjustment amount must be lower or equal to": "Capitalized Income Adjustment amount must be lower or equal to",
"Buy Down Fee amount already adjusted": "Buy Down Fee amount already adjusted",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Conectado como",
"Remember me": "Recordar me",
"errors": {
"linkedSavingsAccountOwnership": "La cuenta de ahorro vinculada no pertenece al cliente seleccionado.",
"clientNotInGSIM": "El cliente con ID {{id}} no está presente en GSIM.",
"Capitalized Income amount adjusted already adjusted": "Monto de Ingreso Capitalizado ajustado ya ajustado",
"Capitalized Income Adjustment amount must be lower or equal to": "El monto del Ajuste de Ingreso Capitalizado debe ser menor o igual a",
"Buy Down Fee amount already adjusted": "Importe de la comisión de recompra ya ajustado",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Conectado como",
"Remember me": "Recordar me",
"errors": {
"linkedSavingsAccountOwnership": "La cuenta de ahorro vinculada no pertenece al cliente seleccionado.",
"clientNotInGSIM": "El cliente con ID {{id}} no está presente en GSIM.",
"Capitalized Income amount adjusted already adjusted": "Monto de Ingreso Capitalizado ajustado ya ajustado",
"Capitalized Income Adjustment amount must be lower or equal to": "El monto del Ajuste de Ingreso Capitalizado debe ser menor o igual a",
"Buy Down Fee amount already adjusted": "Importe de la comisión de recompra ya ajustado",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "connecté en tant que",
"Remember me": "Souviens-toi de moi",
"errors": {
"linkedSavingsAccountOwnership": "Le compte d'épargne lié n'appartient pas au client sélectionné.",
"clientNotInGSIM": "Le client avec l'ID {{id}} n'est pas membre du GSIM.",
"Capitalized Income amount adjusted already adjusted": "Montant du revenu capitalisé ajusté déjà ajusté",
"Capitalized Income Adjustment amount must be lower or equal to": "Le montant de l'ajustement du revenu capitalisé doit être inférieur ou égal à",
"Buy Down Fee amount already adjusted": "Montant de la commission de rachat déjà ajusté",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Collegato come",
"Remember me": "Ricordati di me",
"errors": {
"linkedSavingsAccountOwnership": "Il conto di risparmio collegato non appartiene al cliente selezionato.",
"clientNotInGSIM": "Il cliente con ID {{id}} non è presente in GSIM.",
"Capitalized Income amount adjusted already adjusted": "Importo del reddito capitalizzato rettificato già rettificato",
"Capitalized Income Adjustment amount must be lower or equal to": "L'importo dell'adeguamento del reddito capitalizzato deve essere inferiore o uguale a",
"Buy Down Fee amount already adjusted": "Importo della Buy Down Fee già adeguato",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "다음 계정으로 로그인됨",
"Remember me": "날 기억해",
"errors": {
"linkedSavingsAccountOwnership": "연결된 저축 계좌가 선택한 클라이언트에 속하지 않습니다.",
"clientNotInGSIM": "ID가 {{id}}인 클라이언트가 GSIM에 없습니다.",
"Capitalized Income amount adjusted already adjusted": "자본화된 소득 금액은 이미 조정되었습니다.",
"Capitalized Income Adjustment amount must be lower or equal to": "자본화된 소득 조정 금액은 다음보다 낮거나 같아야 합니다.",
"Buy Down Fee amount already adjusted": "이미 조정된 바이 다운 수수료 금액",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "prisijungęs kaip",
"Remember me": "Prisimink mane",
"errors": {
"linkedSavingsAccountOwnership": "Susieta taupomoji sąskaita nepriklauso pasirinktam klientui.",
"clientNotInGSIM": "Klientas su ID {{id}} nėra GSIM sistemoje.",
"Capitalized Income amount adjusted already adjusted": "Kapitalizuotų pajamų suma pakoreguota jau pakoreguota",
"Capitalized Income Adjustment amount must be lower or equal to": "Kapitalizuotų pajamų koregavimo suma turi būti mažesnė arba lygi",
"Buy Down Fee amount already adjusted": "Jau pakoreguota išpirkimo mokesčio suma",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "ielogojies Kā",
"Remember me": "Atceries mani",
"errors": {
"linkedSavingsAccountOwnership": "Saistītais krājkonts nepieder izvēlētajam klientam.",
"clientNotInGSIM": "Klients ar ID {{id}} nav GSIM sistēmā.",
"Capitalized Income amount adjusted already adjusted": "Kapitalizēto ienākumu summa jau koriģēta",
"Capitalized Income Adjustment amount must be lower or equal to": "Kapitalizēto ienākumu korekcijas summai ir jābūt mazākai vai vienādai ar",
"Buy Down Fee amount already adjusted": "Jau koriģētā atpirkšanas maksas summa",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "को रूपमा लग इन गरियो",
"Remember me": "मलाई सम्झनुहोस्",
"errors": {
"linkedSavingsAccountOwnership": "लिंक गरिएको बचत खाता चयनित ग्राहकको होइन।",
"clientNotInGSIM": "आईडी {{id}} भएको ग्राहक GSIM मा उपस्थित छैन।",
"Capitalized Income amount adjusted already adjusted": "क्यापिटलाइज्ड आय रकम पहिले नै समायोजन गरिएको छ",
"Capitalized Income Adjustment amount must be lower or equal to": "पूंजीकृत आय समायोजन रकम कम वा बराबर हुनुपर्छ",
"Buy Down Fee amount already adjusted": "बाइ डाउन शुल्क रकम पहिले नै समायोजन गरिएको छ।",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "logado como",
"Remember me": "Lembre de mim",
"errors": {
"linkedSavingsAccountOwnership": "A conta poupança vinculada não pertence ao cliente selecionado.",
"clientNotInGSIM": "O cliente com ID {{id}} não está presente no GSIM.",
"Capitalized Income amount adjusted already adjusted": "Valor da Renda Capitalizada ajustado já ajustado",
"Capitalized Income Adjustment amount must be lower or equal to": "O valor do ajuste de renda capitalizada deve ser menor ou igual a",
"Buy Down Fee amount already adjusted": "Montante da comissão de compra já ajustado",
+2
View File
@@ -3,6 +3,8 @@
"Logged in as": "Imeingia kama",
"Remember me": "Nikumbuke",
"errors": {
"linkedSavingsAccountOwnership": "Akaunti ya akiba iliyounganishwa haimilikiwi na mteja aliyechaguliwa.",
"clientNotInGSIM": "Mteja mwenye kitambulisho {{id}} hayupo kwenye GSIM.",
"Capitalized Income amount adjusted already adjusted": "Kiasi cha Mapato ya Mtaji kilichorekebishwa tayari kimerekebishwa",
"Capitalized Income Adjustment amount must be lower or equal to": "Kiasi cha Marekebisho ya Mapato ya Mtaji lazima kiwe chini au sawa na",
"Buy Down Fee amount already adjusted": "Kiasi cha Ada ya Kununua Chini tayari kimerekebishwa",