From f56575c20061f5da3e7284023982aa9ac80c36f5 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Mon, 15 Jun 2026 21:37:33 -0500 Subject: [PATCH] WEB-1005: Loan account creation fix when change loan product --- .../create-loans-account.component.ts | 3 ++ .../loans-account-preview-step.component.html | 4 +-- .../loans-account-preview-step.component.ts | 36 ++++++++++++++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/app/loans/create-loans-account/create-loans-account.component.ts b/src/app/loans/create-loans-account/create-loans-account.component.ts index b53d78c4e9..adcf1a96ff 100644 --- a/src/app/loans/create-loans-account/create-loans-account.component.ts +++ b/src/app/loans/create-loans-account/create-loans-account.component.ts @@ -168,6 +168,9 @@ export class CreateLoansAccountComponent extends LoanProductBaseComponent implem setProductType($event: any): void { this.productType = $event; this.loanProductService.initialize(this.productType); + this.loansAccountProductTemplate = null; + this.productId = null; + this.cdr.detectChanges(); } setDatatables(): void { diff --git a/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.html b/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.html index 50afb4ce9b..c1bdc83779 100644 --- a/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.html +++ b/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.html @@ -120,7 +120,7 @@

{{ 'labels.heading.Terms' | translate }} {{ 'labels.inputs.Delinquency Start Type' | translate }}: - {{ camalize(loansAccount.delinquencyStartType) | translateKey: 'catalogs' }} + {{ camalize(delinquencyStartTypeOption?.value) | translateKey: 'catalogs' }} } @@ -151,7 +151,7 @@

{{ 'labels.heading.Terms' | translate }}{{ 'labels.inputs.Period Payment Frequency' | translate }}: {{ loansAccount.repaymentEvery }} - {{ camalize(loansAccount.repaymentFrequencyType) | translateKey: 'catalogs' }} } diff --git a/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.ts b/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.ts index 2cd322e5a2..285904896e 100644 --- a/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.ts +++ b/src/app/loans/loans-account-stepper/loans-account-preview-step/loans-account-preview-step.component.ts @@ -45,6 +45,7 @@ import { LoanProductBasicDetails } from 'app/loans/models/loan-product.model'; import { LongTextComponent } from 'app/shared/long-text/long-text.component'; import { Breach, NearBreach } from 'app/products/loan-products/models/loan-product.model'; import { BreachDisplayComponent } from 'app/shared/loan/breach-display/breach-display.component'; +import { OptionData, StringEnumOptionData } from 'app/shared/models/option-data.model'; /** * Create Loans Account Preview Step @@ -124,11 +125,17 @@ export class LoansAccountPreviewStepComponent extends LoanProductBaseComponent i dataSource: any; productEnableDownPayment = false; + repaymentFrequencyTypeOption: OptionData | null = null; + delinquencyStartTypeOption: StringEnumOptionData | null = null; + constructor() { super(); } ngOnChanges(changes: SimpleChanges): void { + if (!this.loansAccountProductTemplate?.product) { + return; + } this.productEnableDownPayment = this.loansAccountProductTemplate.product.enableDownPayment; if (this.activeClientMembers) { this.loanPurposeOptions = this.loansAccountProductTemplate.loanPurposeOptions; @@ -144,6 +151,30 @@ export class LoansAccountPreviewStepComponent extends LoanProductBaseComponent i .filter((member: any) => member.selected) .reduce((acc: number, member: any) => acc + (member.principal ?? 0), 0); } + if (this.loanProductService.isWorkingCapital) { + const options = this.loansAccountProductTemplate.options ?? {}; + this.repaymentFrequencyTypeOption = this.optionDataLookUp( + this.loansAccount?.repaymentFrequencyType, + options.periodFrequencyTypeOptions ?? [] + ); + this.delinquencyStartTypeOption = this.stringEnumOptionDataLookUp( + this.loansAccount?.delinquencyStartType, + options.delinquencyStartTypeOptions ?? [] + ); + } else { + this.repaymentFrequencyTypeOption = null; + this.delinquencyStartTypeOption = null; + } + } + + private optionDataLookUp(itemId: any, optionsData: any[]): OptionData | null { + const match = optionsData.find((o: any) => o.id === itemId); + return match ? { id: match.id, code: match.code, value: match.value || match.name } : null; + } + + private stringEnumOptionDataLookUp(itemId: any, optionsData: any[]): StringEnumOptionData | null { + const match = optionsData.find((o: any) => o.id === itemId || o.code === itemId); + return match ? { id: match.id, code: match.code, value: match.value } : null; } loanProductName(id: number): string { @@ -164,7 +195,10 @@ export class LoansAccountPreviewStepComponent extends LoanProductBaseComponent i return fund ? fund.name : ''; } - camalize(word: string) { + camalize(word: unknown): string { + if (typeof word !== 'string' || word.length === 0) { + return ''; + } return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); }