From b1b015833c7d526540360790d43e2e9c2960afb0 Mon Sep 17 00:00:00 2001 From: Muskan Khedia <36980003+muskankhedia@users.noreply.github.com> Date: Mon, 1 Jun 2020 20:12:56 +0530 Subject: [PATCH] feat: add loan view page (original schedule tab) (#834) Fixes: #812 --- src/app/loans/loans-routing.module.ts | 9 +++ .../loans-view/loans-view.component.html | 5 ++ .../original-schedule-tab.component.html | 72 +++++++++++++++++++ .../original-schedule-tab.component.scss | 8 +++ .../original-schedule-tab.component.spec.ts | 25 +++++++ .../original-schedule-tab.component.ts | 29 ++++++++ src/app/loans/loans.module.ts | 2 + 7 files changed, 150 insertions(+) create mode 100644 src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.html create mode 100644 src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.scss create mode 100644 src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.spec.ts create mode 100644 src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.ts diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index d68fa1563..b61c650cb 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -20,6 +20,7 @@ import { LoanNotesResolver } from './common-resolvers/loan-notes-resolver'; import { ChargesTabComponent } from './loans-view/charges-tab/charges-tab.component'; import { LoanDetailsChargesResolver } from './common-resolvers/loan-details-charges.resolver'; import { OverdueChargesTabComponent } from './loans-view/overdue-charges-tab/overdue-charges-tab.component'; +import { OriginalScheduleTabComponent } from './loans-view/original-schedule-tab/original-schedule-tab.component'; const routes: Routes = [ { @@ -50,6 +51,14 @@ const routes: Routes = [ loanDetailsData: LoanDetailsGeneralResolver } }, + { + path: 'original-schedule', + component: OriginalScheduleTabComponent, + data: { title: extract('Original Schedule'), breadcrumb: 'Original Schedule', routeParamBreadcrumb: false }, + resolve: { + loanDetailsAssociationData: LoanDetailsChargesResolver + } + }, { path: 'overdue-charges', component: OverdueChargesTabComponent, diff --git a/src/app/loans/loans-view/loans-view.component.html b/src/app/loans/loans-view/loans-view.component.html index 839330b25..fb13c3695 100644 --- a/src/app/loans/loans-view/loans-view.component.html +++ b/src/app/loans/loans-view/loans-view.component.html @@ -58,6 +58,11 @@ Account Details + + + Original Schedule + + Overdue Charges diff --git a/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.html b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.html new file mode 100644 index 000000000..a601d7806 --- /dev/null +++ b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.html @@ -0,0 +1,72 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Date {{ ele.dueDate | date}} Total Principal Due {{ ele.principalDue | number }} {{ originalScheduleDetails.totalPrincipalExpected | number }} Balance Of Loan {{ ele.principalLoanBalanceOutstanding | number }}   Interest {{ ele.interestOriginalDue | number}} {{ originalScheduleDetails.totalInterestCharged | number }} Fees {{ ele.feeChargesDue | number}} {{ originalScheduleDetails.totalFeeChargesCharged | number }} Penalties {{ ele.penaltyChargesDue | number}} {{ originalScheduleDetails.totalPenaltyChargesCharged | number }} Outstanding {{ ele.totalOutstandingForPeriod | number}} {{ originalScheduleDetails.totalRepaymentExpected | number }} Loan Amount and Balance Total Cost of Loan Installment Totals
+ +
diff --git a/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.scss b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.scss new file mode 100644 index 000000000..fc5525a0b --- /dev/null +++ b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.scss @@ -0,0 +1,8 @@ +table { + width: 100%; + margin: 3% 0%; +} + +.container { + padding-bottom: 2%; +} diff --git a/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.spec.ts b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.spec.ts new file mode 100644 index 000000000..c969d75d4 --- /dev/null +++ b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OriginalScheduleTabComponent } from './original-schedule-tab.component'; + +describe('OriginalScheduleTabComponent', () => { + let component: OriginalScheduleTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OriginalScheduleTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OriginalScheduleTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.ts b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.ts new file mode 100644 index 000000000..6ba72878e --- /dev/null +++ b/src/app/loans/loans-view/original-schedule-tab/original-schedule-tab.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'mifosx-original-schedule-tab', + templateUrl: './original-schedule-tab.component.html', + styleUrls: ['./original-schedule-tab.component.scss'] +}) +export class OriginalScheduleTabComponent implements OnInit { + + /** Loan Details Data */ + originalScheduleDetails: any; + /** Columns to be displayed in original schedule table. */ + displayedColumns: string[] = ['date', 'principalDue', 'balanceOfLoan', 'interest', 'fees', 'penalties', 'outstanding']; + + /** + * Retrieves the loans with associations data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe(( data: { loanDetailsAssociationData: any }) => { + this.originalScheduleDetails = data.loanDetailsAssociationData.originalSchedule; + }); + } + + ngOnInit() { + } + +} diff --git a/src/app/loans/loans.module.ts b/src/app/loans/loans.module.ts index 7391eb795..a0e8cb981 100644 --- a/src/app/loans/loans.module.ts +++ b/src/app/loans/loans.module.ts @@ -16,6 +16,7 @@ import { AccountDetailsComponent } from './loans-view/account-details/account-de import { NotesTabComponent } from './loans-view/notes-tab/notes-tab.component'; import { ChargesTabComponent } from './loans-view/charges-tab/charges-tab.component'; import { OverdueChargesTabComponent } from './loans-view/overdue-charges-tab/overdue-charges-tab.component'; +import { OriginalScheduleTabComponent } from './loans-view/original-schedule-tab/original-schedule-tab.component'; /** * Loans Module @@ -32,6 +33,7 @@ import { OverdueChargesTabComponent } from './loans-view/overdue-charges-tab/ove NotesTabComponent, ChargesTabComponent, OverdueChargesTabComponent, + OriginalScheduleTabComponent, ], providers: [DatePipe], })