diff --git a/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.spec.ts b/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.spec.ts new file mode 100644 index 000000000..f7a21359e --- /dev/null +++ b/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LoanArrearDelinquencyResolver } from './loan-arrear-delinquency.resolver'; + +describe('LoanArrearDelinquencyResolver', () => { + let resolver: LoanArrearDelinquencyResolver; + + beforeEach(() => { + TestBed.configureTestingModule({}); + resolver = TestBed.inject(LoanArrearDelinquencyResolver); + }); + + it('should be created', () => { + expect(resolver).toBeTruthy(); + }); +}); diff --git a/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.ts b/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.ts new file mode 100644 index 000000000..85981c568 --- /dev/null +++ b/src/app/loans/common-resolvers/loan-arrear-delinquency.resolver.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; +import { SystemService } from 'app/system/system.service'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class LoanArrearDelinquencyResolver implements Resolve { + + /** + * @param {SystemService} systemService System service. + */ + constructor(private systemService: SystemService) { } + + /** + * Returns the loan-arrears-delinquency-display-data configuration data. + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + return this.systemService.getConfigurationByName('loan-arrears-delinquency-display-data'); + } +} diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index 9dc76d242..7512436d6 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -56,6 +56,7 @@ import { LoanDelinquencyTagsTabComponent } from './loans-view/loan-delinquency-t import { LoanReschedulesResolver } from './common-resolvers/loan-reschedules.resolver'; import { RescheduleLoanTabComponent } from './loans-view/reschedule-loan-tab/reschedule-loan-tab.component'; import { AdjustLoanChargeComponent } from './loans-view/loan-account-actions/adjust-loan-charge/adjust-loan-charge.component'; +import { LoanArrearDelinquencyResolver } from './common-resolvers/loan-arrear-delinquency.resolver'; /** Loans Route. */ const routes: Routes = [ @@ -77,7 +78,8 @@ const routes: Routes = [ component: LoansViewComponent, resolve: { loanDetailsData: LoanDetailsResolver, - loanDatatables: LoanDatatablesResolver + loanDatatables: LoanDatatablesResolver, + loanArrearsDelinquencyConfig: LoanArrearDelinquencyResolver }, children: [ { diff --git a/src/app/loans/loans-view/loans-view.component.html b/src/app/loans/loans-view/loans-view.component.html index 237b8b669..83e6d6b9e 100644 --- a/src/app/loans/loans-view/loans-view.component.html +++ b/src/app/loans/loans-view/loans-view.component.html @@ -26,32 +26,36 @@ {{entityType}} Name: {{loanDetailsData.clientName || loanDetailsData.groupName}}({{loanDetailsData.clientAccountNo}})
- - Loan Account Classification : {{loanDetailsData?.delinquencyRange.classification}}
-
- - Past Due Days : {{loanDetailsData?.delinquent.pastDueDays | formatNumber}}
-
- - Delinquent Days : {{loanDetailsData?.delinquent.delinquentDays | formatNumber}} - +
+ + Loan Account Classification : {{loanDetailsData?.delinquencyRange.classification}}
+
+ + Past Due Days : {{loanDetailsData?.delinquent.pastDueDays | formatNumber}}
+
+ + Delinquent Days : {{loanDetailsData?.delinquent.delinquentDays | formatNumber}} + +

Loan Account OverView

Current Balance: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.summary.totalOutstanding | formatNumber}}
- Arrears By: {{loanDetailsData.summary.totalOverdue | formatNumber}} +
+ Arrears By: {{loanDetailsData.summary.totalOverdue | formatNumber}} Not Provided -
- Arrears Since: {{loanDetailsData.summary.overdueSinceDate | - dateFormat}} - - - Overpaid By: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.totalOverpaid | formatNumber}} - +
+ Arrears Since: {{loanDetailsData.summary.overdueSinceDate | + dateFormat}} + + + Overpaid By: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.totalOverpaid | formatNumber}} + +
diff --git a/src/app/loans/loans-view/loans-view.component.ts b/src/app/loans/loans-view/loans-view.component.ts index 014179e6d..7c18f9550 100644 --- a/src/app/loans/loans-view/loans-view.component.ts +++ b/src/app/loans/loans-view/loans-view.component.ts @@ -27,6 +27,8 @@ export class LoansViewComponent implements OnInit { loanDatatables: any; /** Recalculate Interest */ recalculateInterest: any; + /** loan Arrears Delinquency config value */ + loanDisplayArrearsDelinquency: number; /** Status */ status: string; entityType: string; @@ -45,9 +47,10 @@ export class LoansViewComponent implements OnInit { private router: Router, public loansService: LoansService, public dialog: MatDialog) { - this.route.data.subscribe((data: { loanDetailsData: any, loanDatatables: any}) => { + this.route.data.subscribe((data: { loanDetailsData: any, loanDatatables: any, loanArrearsDelinquencyConfig: any}) => { this.loanDetailsData = data.loanDetailsData; this.loanDatatables = data.loanDatatables; + this.loanDisplayArrearsDelinquency = data.loanArrearsDelinquencyConfig.value || 0; this.loanStatus = this.loanDetailsData.status; }); this.loanId = this.route.snapshot.params['loanId']; diff --git a/src/app/system/configurations/global-configurations-tab/edit-configuration/edit-configuration.component.ts b/src/app/system/configurations/global-configurations-tab/edit-configuration/edit-configuration.component.ts index 27cee54b8..59481c53a 100644 --- a/src/app/system/configurations/global-configurations-tab/edit-configuration/edit-configuration.component.ts +++ b/src/app/system/configurations/global-configurations-tab/edit-configuration/edit-configuration.component.ts @@ -75,6 +75,9 @@ export class EditConfigurationComponent implements OnInit { const payload = { ...this.configurationForm.value }; + if (!this.configurationForm.value.stringValue) { + delete payload.stringValue; + } if (this.configurationForm.value.dateValue != null) { payload.locale = this.settingsService.language.code; payload.dateFormat = this.settingsService.dateFormat;