From c9ff1438a3e167e02883968740c67bf2fc1423cb Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Mon, 6 Jan 2025 19:13:52 -0500 Subject: [PATCH] fix: Loan product charge-off reasons accounting mappings --- .../loan-product-summary.component.ts | 2 +- .../edit-loan-product.component.ts | 4 --- ...oan-product-accounting-step.component.html | 9 ++++--- .../loan-product-accounting-step.component.ts | 26 ++++++++++++++++--- src/assets/env.js | 8 +++--- 5 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts index a13a7e481..d6331d21d 100644 --- a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts +++ b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts @@ -256,7 +256,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges { optionData = { id: o.id, code: o.code, - value: o.value + value: o.value || o.name }; } }); diff --git a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts index c3dfae91f..1d3034e72 100644 --- a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts +++ b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts @@ -61,16 +61,12 @@ export class EditLoanProductComponent implements OnInit { private advancedPaymentStrategy: AdvancedPaymentStrategy) { this.route.data.subscribe((data: { loanProductAndTemplate: any, configurations: any }) => { this.loanProductAndTemplate = data.loanProductAndTemplate; - console.log(this.loanProductAndTemplate); const assetAccountData = this.loanProductAndTemplate.accountingMappingOptions.assetAccountOptions || []; const liabilityAccountData = this.loanProductAndTemplate.accountingMappingOptions.liabilityAccountOptions || []; this.loanProductAndTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions = assetAccountData.concat(liabilityAccountData); this.itemsByDefault = loanProducts.setItemsByDefault(data.configurations); this.loanProductAndTemplate['itemsByDefault'] = this.itemsByDefault; - // this.loanProductAndTemplate = loanProducts.updateLoanProductDefaults(this.loanProductAndTemplate, true); - - console.log(this.loanProductAndTemplate); }); } diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html index 99a75e0ec..00ffe5115 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html @@ -302,7 +302,7 @@ > - @@ -353,7 +353,7 @@ - @@ -410,7 +410,7 @@ > - @@ -429,6 +429,7 @@ type="button" mat-raised-button color="primary" + [disabled]="!allowAddChargeOffReasonExpense" (click)="add('ChargeOffReasonExpense', chargeOffReasonToExpenseAccountMappings)" > @@ -466,7 +467,7 @@ > - diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts index feee03d1b..8ac3c97c2 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts @@ -34,6 +34,9 @@ export class LoanProductAccountingStepComponent implements OnInit { assetAndLiabilityAccountData: any; chargeOffReasonOptions: any; + currentFormValues: any[] = []; + allowAddChargeOffReasonExpense = true; + paymentFundSourceDisplayedColumns: string[] = ['paymentTypeId', 'fundSourceAccountId', 'actions']; feesPenaltyIncomeDisplayedColumns: string[] = ['chargeId', 'incomeAccountId', 'actions']; chargeOffReasonExpenseDisplayedColumns: string[] = ['chargeOffReasonCodeValueId', 'expenseAccountId', 'actions']; @@ -215,11 +218,24 @@ export class LoanProductAccountingStepComponent implements OnInit { } add(formType: string, formArray: UntypedFormArray) { + this.currentFormValues = []; + if (formType == 'ChargeOffReasonExpense') { + this.allowAddChargeOffReasonExpense = true; + formArray.value.forEach((item: any) => this.currentFormValues.push(item.chargeOffReasonCodeValueId)); + if (this.chargeOffReasonOptions.length == this.currentFormValues.length) { + this.allowAddChargeOffReasonExpense = false; + return; + } + } const data = { ...this.getData(formType), pristine: false }; const dialogRef = this.dialog.open(FormDialogComponent, { data }); dialogRef.afterClosed().subscribe((response: any) => { if (response.data) { formArray.push(response.data); + if (formType == 'ChargeOffReasonExpense') { + this.allowAddChargeOffReasonExpense = (formArray.value.length < this.chargeOffReasonOptions.length); + } + this.setLoanProductAccountingFormDirty(); } }); @@ -236,13 +252,16 @@ export class LoanProductAccountingStepComponent implements OnInit { }); } - delete(formArray: UntypedFormArray, index: number) { + delete(formType: string, formArray: UntypedFormArray, index: number) { const dialogRef = this.dialog.open(DeleteDialogComponent, { data: { deleteContext: this.translateService.instant('labels.text.this') } }); dialogRef.afterClosed().subscribe((response: any) => { if (response.delete) { formArray.removeAt(index); + if (formType == 'ChargeOffReasonExpense') { + this.allowAddChargeOffReasonExpense = (formArray.value.length < this.chargeOffReasonOptions.length); + } this.setLoanProductAccountingFormDirty(); } }); @@ -324,12 +343,13 @@ export class LoanProductAccountingStepComponent implements OnInit { } getChargeOffReasonExpenseFormfields(values?: any) { + const reasonOptions = this.chargeOffReasonOptions.filter((item: any) => !this.currentFormValues.includes(item.id)); const formfields: FormfieldBase[] = [ new SelectBase({ controlName: 'chargeOffReasonCodeValueId', label: 'Charge-off reason', - value: values ? values.chargeOffReasonCodeValueId : this.chargeOffReasonOptions[0].id, - options: { label: 'name', value: 'id', data: this.chargeOffReasonOptions }, + value: values ? values.chargeOffReasonCodeValueId : reasonOptions[0].id, + options: { label: 'name', value: 'id', data: reasonOptions }, required: true, order: 1 }), diff --git a/src/assets/env.js b/src/assets/env.js index cb564c1b9..334e1c240 100644 --- a/src/assets/env.js +++ b/src/assets/env.js @@ -2,14 +2,14 @@ window["env"] = window["env"] || {}; // BackEnd Environment variables - window["env"]["fineractApiUrls"] = 'https://ps-test.dev.alluvial.cloud'; - window["env"]["fineractApiUrl"] = 'https://ps-test.dev.alluvial.cloud'; + window["env"]["fineractApiUrls"] = ''; + window["env"]["fineractApiUrl"] = ''; window["env"]["apiProvider"] = ''; window["env"]["apiVersion"] = ''; - window["env"]["fineractPlatformTenantId"] = 'pstest'; - window["env"]["fineractPlatformTenantIds"] = 'pstest'; + window["env"]["fineractPlatformTenantId"] = ''; + window["env"]["fineractPlatformTenantIds"] = ''; // Language Environment variables window["env"]["defaultLanguage"] = '';