Display Loan Arrears and Delinquency information using the global configuration (#1706)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
This commit is contained in:
co-authored by
Jose Alberto Hernandez
parent
c5de9ba30c
commit
1e9444cd20
@@ -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();
|
||||
});
|
||||
});
|
||||
@@ -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<boolean> {
|
||||
|
||||
/**
|
||||
* @param {SystemService} systemService System service.
|
||||
*/
|
||||
constructor(private systemService: SystemService) { }
|
||||
|
||||
/**
|
||||
* Returns the loan-arrears-delinquency-display-data configuration data.
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
resolve(route: ActivatedRouteSnapshot): Observable<any> {
|
||||
return this.systemService.getConfigurationByName('loan-arrears-delinquency-display-data');
|
||||
}
|
||||
}
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -26,32 +26,36 @@
|
||||
{{entityType}} Name: {{loanDetailsData.clientName ||
|
||||
loanDetailsData.groupName}}<span class="m-l-10">({{loanDetailsData.clientAccountNo}})</span><br />
|
||||
</span>
|
||||
<span class="loans-overview" *ngIf="loanDetailsData.delinquencyRange">
|
||||
Loan Account Classification : {{loanDetailsData?.delinquencyRange.classification}}<br />
|
||||
</span>
|
||||
<span class="loans-overview"
|
||||
*ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.pastDueDays > 0">
|
||||
Past Due Days : {{loanDetailsData?.delinquent.pastDueDays | formatNumber}}<br />
|
||||
</span>
|
||||
<span class="loans-overview" *ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.delinquentDays > 0
|
||||
&& loanDetailsData.delinquent.pastDueDays != loanDetailsData.delinquent.delinquentDays">
|
||||
Delinquent Days : {{loanDetailsData?.delinquent.delinquentDays | formatNumber}}
|
||||
</span>
|
||||
<div *ngIf="loanDisplayArrearsDelinquency != 1">
|
||||
<span class="loans-overview" *ngIf="loanDetailsData.delinquencyRange">
|
||||
Loan Account Classification : {{loanDetailsData?.delinquencyRange.classification}}<br />
|
||||
</span>
|
||||
<span class="loans-overview"
|
||||
*ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.pastDueDays > 0">
|
||||
Past Due Days : {{loanDetailsData?.delinquent.pastDueDays | formatNumber}}<br />
|
||||
</span>
|
||||
<span class="loans-overview" *ngIf="loanDetailsData.delinquent && loanDetailsData.delinquent.delinquentDays > 0
|
||||
&& loanDetailsData.delinquent.pastDueDays != loanDetailsData.delinquent.delinquentDays">
|
||||
Delinquent Days : {{loanDetailsData?.delinquent.delinquentDays | formatNumber}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="loanDetailsData.summary" class="loans-overview mat-typography" fxFlex="40%">
|
||||
<h3> Loan Account OverView </h3>
|
||||
<span>Current Balance: {{loanDetailsData.currency.displaySymbol}}
|
||||
{{loanDetailsData.summary.totalOutstanding | formatNumber}}</span><br>
|
||||
<span *ngIf="loanDetailsData.inArrears">Arrears By: {{loanDetailsData.summary.totalOverdue | formatNumber}}
|
||||
<div *ngIf="loanDisplayArrearsDelinquency < 2">
|
||||
<span *ngIf="loanDetailsData.inArrears">Arrears By: {{loanDetailsData.summary.totalOverdue | formatNumber}}
|
||||
<span *ngIf="!(loanDetailsData.summary.totalOverdue>=0)">Not Provided</span>
|
||||
</span><br>
|
||||
<span *ngIf="loanDetailsData.inArrears">Arrears Since: {{loanDetailsData.summary.overdueSinceDate |
|
||||
dateFormat}}
|
||||
</span>
|
||||
<span *ngIf="loanDetailsData.totalOverpaid && loanDetailsData.totalOverpaid > 0">
|
||||
Overpaid By: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.totalOverpaid | formatNumber}}
|
||||
</span>
|
||||
</span><br>
|
||||
<span *ngIf="loanDetailsData.inArrears">Arrears Since: {{loanDetailsData.summary.overdueSinceDate |
|
||||
dateFormat}}
|
||||
</span>
|
||||
<span *ngIf="loanDetailsData.totalOverpaid && loanDetailsData.totalOverpaid > 0">
|
||||
Overpaid By: {{loanDetailsData.currency.displaySymbol}} {{loanDetailsData.totalOverpaid | formatNumber}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span fxFlex="auto"></span>
|
||||
|
||||
@@ -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'];
|
||||
|
||||
+3
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user