diff --git a/src/app/loans/common-resolvers/loan-action-button.resolver.ts b/src/app/loans/common-resolvers/loan-action-button.resolver.ts index 6d33d085da..b30835e434 100644 --- a/src/app/loans/common-resolvers/loan-action-button.resolver.ts +++ b/src/app/loans/common-resolvers/loan-action-button.resolver.ts @@ -99,7 +99,7 @@ export class LoanActionButtonResolver { return this.loansService.getLoanActionTemplate(loanId, 'reAmortization'); } else if (loanActionButton === 'Attach Loan Originator') { return this.organizationService.getLoanOriginators(); - } else if (loanActionButton === 'Update discount') { + } else if (loanActionButton === 'Discount Fee') { return this.loansService.getWorkingCapitalLoanDetails(loanId); } else { return undefined; 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 a132decfd9..6936a095fb 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 @@ -91,8 +91,7 @@

{{ 'labels.heading.Terms' | translate }}{{ 'labels.inputs.Total Payment Volume' | translate }}: {{ - loansAccount.totalPaymentVolume - | currency: loansAccountProductTemplate.currency.code : 'symbol-narrow' : '1.2-2' + loansAccount.totalPayment | currency: loansAccountProductTemplate.currency.code : 'symbol-narrow' : '1.2-2' }} {{ loansAccountProductTemplate.currency.code }} diff --git a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html index 7a1f13e079..f301154d07 100644 --- a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html +++ b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html @@ -27,16 +27,8 @@

@if (loanProductService.isWorkingCapital) { {{ 'labels.inputs.Total Payment Volume' | translate }} - - @if (loansAccountTermsForm.controls.totalPaymentVolume.hasError('highAmountValue')) { + + @if (loansAccountTermsForm.controls.totalPayment.hasError('highAmountValue')) { {{ 'labels.inputs.Total Payment' | translate }} {{ 'labels.commons.is' | translate }} {{ 'labels.commons.higher than allowed' | translate }} diff --git a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts index ac26af174d..674a11eb2f 100644 --- a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts +++ b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts @@ -355,7 +355,7 @@ export class LoansAccountTermsStepComponent extends LoanProductBaseComponent imp discount: this.loansAccountTermsData.discountProposed || this.loansAccountTermsData.discount || '', principalAmount: this.loansAccountTermsData.proposedPrincipal, periodPaymentRate: this.loansAccountTermsData.periodPaymentRate, - totalPaymentVolume: this.loansAccountTermsData.totalPaymentVolume, + totalPayment: this.loansAccountTermsData.totalPayment, repaymentEvery: this.loansAccountTermsData.repaymentEvery, repaymentFrequencyType: this.loansAccountTermsData.repaymentFrequencyType?.id, delinquencyGraceDays: this.loansAccountTermsData.delinquencyGraceDays, @@ -723,7 +723,7 @@ export class LoansAccountTermsStepComponent extends LoanProductBaseComponent imp amountValueValidator() ] ], - totalPaymentVolume: [ + totalPayment: [ '', [ Validators.required, diff --git a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html index d87c5a1a1b..8f950cbdec 100644 --- a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html +++ b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html @@ -117,6 +117,6 @@ @if (actions['Attach Loan Originator']) { } -@if (actions['Update discount']) { +@if (actions['Discount Fee']) { } diff --git a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts index 2ecf36bb4e..fe53b6dc50 100644 --- a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts +++ b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts @@ -137,7 +137,7 @@ export class LoanAccountActionsComponent { 'Buy Down Fee': boolean; 'Undo Write-off': boolean; 'Attach Loan Originator': boolean; - 'Update discount': boolean; + 'Discount Fee': boolean; } = { Close: false, 'Undo Approval': false, @@ -179,7 +179,7 @@ export class LoanAccountActionsComponent { 'Buy Down Fee': false, 'Undo Write-off': false, 'Attach Loan Originator': false, - 'Update discount': false + 'Discount Fee': false }; actionButtonData: any; diff --git a/src/app/loans/loans-view/loan-account-actions/update-discount/update-discount.component.ts b/src/app/loans/loans-view/loan-account-actions/update-discount/update-discount.component.ts index 6d7ca1ecad..435e578b23 100644 --- a/src/app/loans/loans-view/loan-account-actions/update-discount/update-discount.component.ts +++ b/src/app/loans/loans-view/loan-account-actions/update-discount/update-discount.component.ts @@ -18,12 +18,12 @@ import { amountValueValidator } from 'app/shared/validators/amount-value.validat import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; import { CdkTextareaAutosize } from '@angular/cdk/text-field'; import { LoanAccountActionsBaseComponent } from '../loan-account-actions-base.component'; -import { WorkingCapitalLoanDiscountUpdateRequest } from 'app/loans/loans.service'; import { Currency } from 'app/shared/models/general.model'; import { InputAmountComponent } from 'app/shared/input-amount/input-amount.component'; +import { WorkingCapitalLoanDiscountUpdateRequest } from 'app/loans/models/working-capital/working-capital-loan-account.model'; /** - * Update discount action for Working Capital Loan. + * Discount Fee action for Working Capital Loan. */ @Component({ selector: 'mifosx-update-discount', @@ -61,7 +61,7 @@ export class UpdateDiscountComponent extends LoanAccountActionsBaseComponent imp } this.updateDiscountForm = this.formBuilder.group({ transactionAmount: [ - this.dataObject?.discount ?? this.dataObject?.discountAmount ?? '', + this.dataObject?.discount ?? this.dataObject?.transactionAmount ?? '', [ Validators.required, Validators.min(0), @@ -91,18 +91,20 @@ export class UpdateDiscountComponent extends LoanAccountActionsBaseComponent imp dateFormat: this.settingsService.dateFormat }; - this.loanService.applyWorkingCapitalLoanAccountCommand(this.loanId, 'discountfee', payload).subscribe({ - next: () => { - this.alertService.alert({ - type: 'Success', - message: this.translateService.instant('labels.messages.workingCapitalDiscountUpdated') - }); - this.gotoLoanDefaultView(); - }, - error: (error: HttpErrorResponse) => { - this.submitErrorMessage = this.mapDiscountError(error); - } - }); + this.loanService + .executeWorkingCapitalLoanAccountTransactionsCommand(this.loanId, 'discountFee', payload) + .subscribe({ + next: () => { + this.alertService.alert({ + type: 'Success', + message: this.translateService.instant('labels.messages.workingCapitalDiscountUpdated') + }); + this.gotoLoanDefaultView(); + }, + error: (error: HttpErrorResponse) => { + this.submitErrorMessage = this.mapDiscountError(error); + } + }); } private mapDiscountError(error: HttpErrorResponse): string { diff --git a/src/app/loans/loans-view/loans-view.component.ts b/src/app/loans/loans-view/loans-view.component.ts index 2f520c35c1..4ad2e7c763 100644 --- a/src/app/loans/loans-view/loans-view.component.ts +++ b/src/app/loans/loans-view/loans-view.component.ts @@ -260,7 +260,7 @@ export class LoansViewComponent extends LoanProductBaseComponent implements OnIn this.buttonConfig = new LoansAccountButtonConfiguration(this.status, this.loanSubStatus); if (this.canShowWorkingCapitalDiscountUpdate()) { this.buttonConfig.addButton({ - name: 'Update discount', + name: 'Discount Fee', icon: 'edit', taskPermissionName: 'UPDATEDISCOUNT_WORKINGCAPITALLOAN' }); diff --git a/src/app/loans/loans-view/working-capital/loan-balances-tab/loan-balances-tab.component.ts b/src/app/loans/loans-view/working-capital/loan-balances-tab/loan-balances-tab.component.ts index ec323f8f07..708c76f73a 100644 --- a/src/app/loans/loans-view/working-capital/loan-balances-tab/loan-balances-tab.component.ts +++ b/src/app/loans/loans-view/working-capital/loan-balances-tab/loan-balances-tab.component.ts @@ -9,7 +9,6 @@ import { CurrencyPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { FormatNumberPipe } from '@pipes/format-number.pipe'; import { WorkingCapitalBalances } from 'app/loans/models/working-capital/working-capital-loan-account.model'; import { LoanProductBaseComponent } from 'app/products/loan-products/common/loan-product-base.component'; import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; @@ -20,7 +19,6 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; styleUrl: './loan-balances-tab.component.scss', imports: [ ...STANDALONE_SHARED_IMPORTS, - FormatNumberPipe, CurrencyPipe ], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/src/app/loans/loans.service.ts b/src/app/loans/loans.service.ts index adf01d36a4..4b98e97e50 100644 --- a/src/app/loans/loans.service.ts +++ b/src/app/loans/loans.service.ts @@ -15,14 +15,7 @@ import { Observable } from 'rxjs'; import { Dates } from 'app/core/utils/dates'; import { SettingsService } from 'app/settings/settings.service'; import { DisbursementData } from './models/loan-account.model'; - -export interface WorkingCapitalLoanDiscountUpdateRequest { - transactionAmount: number; - relatedResourceId: number; - note?: string; - locale: string; - dateFormat: string; -} +import { WorkingCapitalLoanDiscountUpdateRequest } from './models/working-capital/working-capital-loan-account.model'; /** * Loans service. @@ -383,6 +376,21 @@ export class LoansService { return this.http.post(`/working-capital-loans/${loanId}`, data, { params: httpParams }); } + executeWorkingCapitalLoanAccountTransactionsCommand( + accountId: string, + command: string, + data: any, + transactionId?: any + ): Observable { + const httpParams = new HttpParams().set('command', command); + if (transactionId !== null && transactionId !== undefined) { + return this.http.post(`/working-capital-loans/${accountId}/transactions/${transactionId}`, data, { + params: httpParams + }); + } + return this.http.post(`/working-capital-loans/${accountId}/transactions`, data, { params: httpParams }); + } + addInterestPauseToLoan(loanId: any, data?: any): Observable { return this.http.post(`/loans/${loanId}/interest-pauses`, data); } diff --git a/src/app/loans/models/working-capital/working-capital-loan-account.model.ts b/src/app/loans/models/working-capital/working-capital-loan-account.model.ts index 8305ac7e7d..fa08d5ed56 100644 --- a/src/app/loans/models/working-capital/working-capital-loan-account.model.ts +++ b/src/app/loans/models/working-capital/working-capital-loan-account.model.ts @@ -55,3 +55,11 @@ export interface WorkingCapitalBalances { totalDiscountFee?: number; overpaymentAmount?: number; } + +export interface WorkingCapitalLoanDiscountUpdateRequest { + transactionAmount: number; + relatedResourceId: number; + note?: string; + locale: string; + dateFormat: string; +} diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index 8327483e15..30415d8f9e 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -3137,6 +3137,7 @@ "Deposit": "Vklad", "Disburse": "Vyplatit", "Disburse to Savings": "Výplata na Úspory", + "Discount Fee": "Poplatek za slevu", "Edit Repayment Schedule": "Upravit splátkový kalendář", "Foreclosure": "Exekuce", "Frequent Postings": "Časté příspěvky", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 28fd21987c..d8cdbd3973 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -3139,6 +3139,7 @@ "Deposit": "Kaution", "Disburse": "Auszahlen", "Disburse to Savings": "An die Ersparnisse auszahlen", + "Discount Fee": "Rabattgebühr", "Edit Repayment Schedule": "Bearbeiten Sie den Rückzahlungsplan", "Foreclosure": "Zwangsvollstreckung", "Frequent Postings": "Häufige Beiträge", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index ba2ad50708..a1b1180ed6 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -3133,6 +3133,7 @@ "Deposit": "Deposit", "Disburse": "Disburse", "Disburse to Savings": "Disburse to Savings", + "Discount Fee": "Discount Fee", "Edit Repayment Schedule": "Edit Repayment Schedule", "Foreclosure": "Foreclosure", "Frequent Postings": "Frequent Postings", diff --git a/src/assets/translations/es-CL.json b/src/assets/translations/es-CL.json index 0cb48cc764..af1784adf7 100644 --- a/src/assets/translations/es-CL.json +++ b/src/assets/translations/es-CL.json @@ -3138,6 +3138,7 @@ "Deposit": "Depósito", "Disburse": "Desembolsar", "Disburse to Savings": "Desembolsar a Ahorros", + "Discount Fee": "Tarifa de Descuento", "Edit Repayment Schedule": "Editar calendario de pagos", "Foreclosure": "Juicio hipotecario", "Frequent Postings": "Publicaciones frecuentes", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index 1cfecdf0ba..27a9f16360 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -3130,6 +3130,7 @@ "Deposit": "Depósito", "Disburse": "Desembolsar", "Disburse to Savings": "Desembolsar a Ahorros", + "Discount Fee": "Tarifa de Descuento", "Edit Repayment Schedule": "Editar calendario de pagos", "Foreclosure": "Juicio hipotecario", "Frequent Postings": "Publicaciones frecuentes", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index dfab37f7a5..24cd11023d 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -3140,6 +3140,7 @@ "Deposit": "Dépôt", "Disburse": "Débourser", "Disburse to Savings": "Versement de l'épargne", + "Discount Fee": "Frais d'escompte", "Edit Repayment Schedule": "Modifier le calendrier de remboursement", "Foreclosure": "Forclusion", "Frequent Postings": "Publications fréquentes", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index 196fd10049..9a4cb04a01 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -3136,6 +3136,7 @@ "Deposit": "Depositare", "Disburse": "Sborsare", "Disburse to Savings": "Versare al risparmio", + "Discount Fee": "Commissione di Sconto", "Edit Repayment Schedule": "Modifica il piano di rimborso", "Foreclosure": "Pignoramento", "Frequent Postings": "Pubblicazioni frequenti", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index d51be6ec76..6b8be52d14 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -3137,6 +3137,7 @@ "Deposit": "보증금", "Disburse": "지불", "Disburse to Savings": "저축으로 지출", + "Discount Fee": "할인 수수료", "Edit Repayment Schedule": "상환 일정 편집", "Foreclosure": "유질", "Frequent Postings": "자주 게시되는 게시물", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index 791b3914c7..31e87bdc83 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -3136,6 +3136,7 @@ "Deposit": "Užstatas", "Disburse": "Išmokėti", "Disburse to Savings": "Išmokėkite santaupoms", + "Discount Fee": "Nuolaidų mokestis", "Edit Repayment Schedule": "Redaguoti grąžinimo grafiką", "Foreclosure": "Uždarymas", "Frequent Postings": "Dažni skelbimai", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index 78a43544c8..438b1f531d 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -3137,6 +3137,7 @@ "Deposit": "Depozīts", "Disburse": "Izmaksāt", "Disburse to Savings": "Izmaksa uzkrājumiem", + "Discount Fee": "Atlaides maksa", "Edit Repayment Schedule": "Rediģēt atmaksas grafiku", "Foreclosure": "Preces ierobežošana", "Frequent Postings": "Bieža publicēšana", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index 6e67c82860..9633953d96 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -3136,6 +3136,7 @@ "Deposit": "जम्मा", "Disburse": "वितरण गर्नुहोस्", "Disburse to Savings": "बचतमा वितरण गर्नुहोस्", + "Discount Fee": "छुट शुल्क", "Edit Repayment Schedule": "पुन: भुक्तानी तालिका सम्पादन गर्नुहोस्", "Foreclosure": "फोरक्लोजर", "Frequent Postings": "बारम्बार पोस्टिंगहरू", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index 8e229766a4..4643c4227a 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -3136,6 +3136,7 @@ "Deposit": "Depósito", "Disburse": "Desembolsar", "Disburse to Savings": "Desembolsar para poupança", + "Discount Fee": "Taxa de Desconto", "Edit Repayment Schedule": "Editar cronograma de reembolso", "Foreclosure": "Execução hipotecária", "Frequent Postings": "Postagens frequentes", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index 81b223d91e..0c59389fe2 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -3133,6 +3133,7 @@ "Deposit": "Amana", "Disburse": "Lipa", "Disburse to Savings": "Lipa kwa Akiba", + "Discount Fee": "Ada ya Punguzo", "Edit Repayment Schedule": "Badilisha Ratiba ya Ulipaji", "Foreclosure": "Foreclosure", "Frequent Postings": "Machapisho ya Mara kwa Mara",