From b9a9a8694cffb51d49d722eefd582e4be1da90e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Alberto=20Hern=C3=A1ndez?= <44206706+josehernandezfintecheandomx@users.noreply.github.com> Date: Tue, 31 Jan 2023 18:36:36 -0600 Subject: [PATCH] Enhancement in loan payment views (#1667) Co-authored-by: Jose Alberto Hernandez --- .../loan-action-button.resolver.ts | 2 +- src/app/loans/loans-routing.module.ts | 4 +--- .../charges-tab/charges-tab.component.html | 4 ++-- .../charges-tab/charges-tab.component.ts | 2 +- .../make-repayment.component.html | 14 +++++++----- .../make-repayment.component.scss | 8 +++++++ .../prepay-loan/prepay-loan.component.html | 22 ++++++++++--------- .../prepay-loan/prepay-loan.component.scss | 8 +++++++ .../prepay-loan/prepay-loan.component.ts | 14 ++++++++++++ .../view-transaction.component.html | 4 ++-- src/app/loans/loans.service.ts | 11 ++++++++++ src/assets/styles/_form.scss | 5 +++++ 12 files changed, 73 insertions(+), 25 deletions(-) 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 84742accd..bbb9ef012 100644 --- a/src/app/loans/common-resolvers/loan-action-button.resolver.ts +++ b/src/app/loans/common-resolvers/loan-action-button.resolver.ts @@ -49,7 +49,7 @@ export class LoanActionButtonResolver implements Resolve { } else if (loanActionButton === 'Reschedule') { return this.loansService.rescheduleLoanTemplate(); } else if (loanActionButton === 'Prepay Loan') { - return this.loansService.getLoanActionTemplate(loanId, 'prepayLoan'); + return this.loansService.getLoanPrepayLoanActionTemplate(loanId, null); } else if (loanActionButton === 'Add Collateral') { return this.loansService.getLoanCollateralTemplate(loanId); } else if (loanActionButton === 'Disburse to Savings') { diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index a3deb25ac..f8f7b3ae2 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -73,14 +73,12 @@ const routes: Routes = [ { path: ':loanId', data: { title: extract('Loan View'), routeParamBreadcrumb: 'loanId' }, - resolve: { - loanDetailsData: LoanDetailsResolver - }, children: [ { path: '', component: LoansViewComponent, resolve: { + loanDetailsData: LoanDetailsResolver, loanDatatables: LoanDatatablesResolver }, children: [ diff --git a/src/app/loans/loans-view/charges-tab/charges-tab.component.html b/src/app/loans/loans-view/charges-tab/charges-tab.component.html index 3a875926d..a81ecc916 100644 --- a/src/app/loans/loans-view/charges-tab/charges-tab.component.html +++ b/src/app/loans/loans-view/charges-tab/charges-tab.component.html @@ -20,7 +20,7 @@ {{ charge.chargeTimeType.value }} - + Due as of {{ charge.dueDate | dateFormat }} @@ -32,7 +32,7 @@ Due - {{ charge.currency.displaySymbol }}{{ charge.amount| number }} + {{ charge.currency.displaySymbol }} {{ charge.amount| number }} diff --git a/src/app/loans/loans-view/charges-tab/charges-tab.component.ts b/src/app/loans/loans-view/charges-tab/charges-tab.component.ts index 97d4c73a9..5b25d213c 100644 --- a/src/app/loans/loans-view/charges-tab/charges-tab.component.ts +++ b/src/app/loans/loans-view/charges-tab/charges-tab.component.ts @@ -35,7 +35,7 @@ export class ChargesTabComponent implements OnInit { /** Status */ status: any; /** Columns to be displayed in charges table. */ - displayedColumns: string[] = ['name', 'feepenalty', 'paymentdueat', 'dueasof', 'calculationtype', 'due', 'paid', 'waived', 'outstanding', 'actions']; + displayedColumns: string[] = ['name', 'feepenalty', 'paymentdueat', 'dueDate', 'calculationtype', 'due', 'paid', 'waived', 'outstanding', 'actions']; /** Data source for charges table. */ dataSource: MatTableDataSource; diff --git a/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.html b/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.html index 6549c0435..b2fde0cd8 100644 --- a/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.html +++ b/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.html @@ -24,7 +24,7 @@ {{ 'Principal' | translate }} -
+
{{ dataObject.principalPortion | number }}
@@ -32,7 +32,7 @@ {{ 'Interest' | translate }}
-
+
{{ dataObject.interestPortion | number }}
@@ -40,7 +40,7 @@ {{ 'Fees' | translate }}
-
+
{{ dataObject.feeChargesPortion | number }}
@@ -48,14 +48,16 @@ {{ 'Penalties' | translate }}
-
+
{{ dataObject.penaltyChargesPortion | number }}
- + Transaction Amount - + {{ dataObject.currency.code }} + + Transaction Amount is required diff --git a/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.scss b/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.scss index 5aa0bac6f..ac8b3295a 100644 --- a/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.scss +++ b/src/app/loans/loans-view/loan-account-actions/make-repayment/make-repayment.component.scss @@ -5,3 +5,11 @@ .container { max-width: 37rem; } + +.right-input { + text-align: right; +} + +.right-label { + padding-right: 25px !important; +} diff --git a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.html b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.html index af4a38e3d..baf42e642 100644 --- a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.html +++ b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.html @@ -24,38 +24,40 @@ {{ 'Principal' | translate }} -
- {{ dataObject.principalPortion | number }} +
+ {{ prepayData.principalPortion | number }}
{{ 'Interest' | translate }}
-
- {{ dataObject.interestPortion | number }} +
+ {{ prepayData.interestPortion | number }}
{{ 'Fees' | translate }}
-
- {{ dataObject.feeChargesPortion | number }} +
+ {{ prepayData.feeChargesPortion | number }}
{{ 'Penalties' | translate }}
-
- {{ dataObject.penaltyChargesPortion | number }} +
+ {{ prepayData.penaltyChargesPortion | number }}
- + Transaction Amount - + {{ prepayData.currency.code }} + + Transaction Amount is required diff --git a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.scss b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.scss index 5aa0bac6f..ac8b3295a 100644 --- a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.scss +++ b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.scss @@ -5,3 +5,11 @@ .container { max-width: 37rem; } + +.right-input { + text-align: right; +} + +.right-label { + padding-right: 25px !important; +} diff --git a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.ts b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.ts index 89a69c9f2..d03300442 100644 --- a/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.ts +++ b/src/app/loans/loans-view/loan-account-actions/prepay-loan/prepay-loan.component.ts @@ -37,6 +37,8 @@ export class PrepayLoanComponent implements OnInit { /** Prepay Loan form. */ prepayLoanForm: FormGroup; + prepayData: any; + /** * @param {FormBuilder} formBuilder Form Builder. * @param {LoansService} loanService Loan Service. @@ -61,6 +63,7 @@ export class PrepayLoanComponent implements OnInit { this.maxDate = this.settingsService.businessDate; this.createprepayLoanForm(); this.setPrepayLoanDetails(); + this.prepayData = this.dataObject; } /** @@ -84,6 +87,17 @@ export class PrepayLoanComponent implements OnInit { this.prepayLoanForm.patchValue({ transactionAmount: this.dataObject.amount }); + this.prepayLoanForm.get('transactionDate').valueChanges.subscribe((transactionDate: string) => { + const prepayDate = this.dateUtils.formatDate(transactionDate, this.settingsService.dateFormat); + + this.loanService.getLoanPrepayLoanActionTemplate(this.loanId, prepayDate) + .subscribe((response: any) => { + this.prepayData = response; + this.prepayLoanForm.patchValue({ + transactionAmount: this.prepayData.amount + }); + }); + }); } /** diff --git a/src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.html b/src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.html index b7ba15d8f..e02dd7bd6 100644 --- a/src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.html +++ b/src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.html @@ -73,7 +73,7 @@
- {{ transactionData.amount | currency:transactionData.currency.code }} {{ transactionData.currency.code }} + {{ transactionData.amount | currency }} {{ transactionData.currency.code }}
@@ -110,7 +110,7 @@ Amount - {{ transactionRel.amount | currency:transactionData.currency.code }} {{ transactionData.currency.code }} + {{ transactionRel.amount | currency }} {{ transactionData.currency.code }} diff --git a/src/app/loans/loans.service.ts b/src/app/loans/loans.service.ts index 059670322..75a69d3f1 100644 --- a/src/app/loans/loans.service.ts +++ b/src/app/loans/loans.service.ts @@ -30,6 +30,17 @@ export class LoansService { return this.http.get(`/loans/${loanId}/transactions/template`, { params: httpParams }); } + getLoanPrepayLoanActionTemplate(loanId: string, transactionDate: string): Observable { + if (!transactionDate) { + transactionDate = this.dateUtils.formatDate(this.settingsService.businessDate, this.settingsService.dateFormat); + } + const httpParams = new HttpParams().set('command', 'prepayLoan') + .set('transactionDate', transactionDate) + .set('locale', this.settingsService.language.code) + .set('dateFormat', this.settingsService.dateFormat); + return this.http.get(`/loans/${loanId}/transactions/template`, { params: httpParams }); + } + getLoanForeclosureActionTemplate(loanId: string): Observable { const httpParams = new HttpParams() .set('command', 'foreclosure') diff --git a/src/assets/styles/_form.scss b/src/assets/styles/_form.scss index ae4b4a6ae..e07ce1d40 100644 --- a/src/assets/styles/_form.scss +++ b/src/assets/styles/_form.scss @@ -31,3 +31,8 @@ textarea.noresize { .mat-tab-body-content { margin-bottom: 20px; } + +.mat-datepicker-input { + margin-top: 5px; + margin-bottom: 5px; +}