diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index b61c650cb..ab5f49923 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -21,6 +21,7 @@ import { ChargesTabComponent } from './loans-view/charges-tab/charges-tab.compon 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'; +import { RepaymentScheduleTabComponent } from './loans-view/repayment-schedule-tab/repayment-schedule-tab.component'; const routes: Routes = [ { @@ -59,6 +60,14 @@ const routes: Routes = [ loanDetailsAssociationData: LoanDetailsChargesResolver } }, + { + path: 'repayment-schedule', + component: RepaymentScheduleTabComponent, + data: { title: extract('Repayment Schedule'), breadcrumb: 'Repayment 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 fb13c3695..5c1c8ba07 100644 --- a/src/app/loans/loans-view/loans-view.component.html +++ b/src/app/loans/loans-view/loans-view.component.html @@ -62,7 +62,10 @@ Original Schedule - + + + Repayment Schedule + Overdue Charges diff --git a/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.html b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.html new file mode 100644 index 000000000..5d2547cb9 --- /dev/null +++ b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.html @@ -0,0 +1,138 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# {{ ele.period }}   Days {{ ele.daysInPeriod }} Total Date {{ ele.dueDate | date}} Paid Date {{ ele.obligationsMetOnDate | date}}   + + Principal Due {{ ele.principalDue | number }} {{ repaymentScheduleDetails.totalPrincipalExpected | number }} Balance Of Loan {{ ele.principalLoanBalanceOutstanding | number }}   Interest {{ ele.interestOriginalDue | number}} {{ repaymentScheduleDetails.totalInterestCharged | number }} Fees {{ ele.feeChargesDue | number}} {{ repaymentScheduleDetails.totalFeeChargesCharged | number }} Penalties {{ ele.penaltyChargesDue | number}} {{ repaymentScheduleDetails.totalPenaltyChargesCharged | number }} Due {{ ele.totalDueForPeriod | number}} {{ repaymentScheduleDetails.totalRepaymentExpected | number }} Paid {{ ele.totalPaidForPeriod | number}} {{ repaymentScheduleDetails.totalRepayment | number }} In advance {{ ele.totalPaidInAdvanceForPeriod | number}} {{ repaymentScheduleDetails.totalPaidInAdvance | number }} Late {{ ele.totalPaidLateForPeriod | number}} {{ repaymentScheduleDetails.totalPaidLate | number }} Waived {{ ele.totalWaivedForPeriod | number}} {{ repaymentScheduleDetails.totalWaived | number }} Outstanding {{ ele.totalOutstandingForPeriod | number}} {{ repaymentScheduleDetails.totalOutstanding | number }} Loan Amount and Balance Total Cost of Loan Installment Totals
+ +
+ + \ No newline at end of file diff --git a/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.scss b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.scss new file mode 100644 index 000000000..6a37a3d69 --- /dev/null +++ b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.scss @@ -0,0 +1,12 @@ +table { + width: 100%; + margin: 3% 0%; +} + +.container { + padding-bottom: 2%; +} + +.check { + padding-left: 15px; +} \ No newline at end of file diff --git a/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.spec.ts b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.spec.ts new file mode 100644 index 000000000..f78fc41b0 --- /dev/null +++ b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RepaymentScheduleTabComponent } from './repayment-schedule-tab.component'; + +describe('RepaymentScheduleTabComponent', () => { + let component: RepaymentScheduleTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RepaymentScheduleTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RepaymentScheduleTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.ts b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.ts new file mode 100644 index 000000000..2ac6731ba --- /dev/null +++ b/src/app/loans/loans-view/repayment-schedule-tab/repayment-schedule-tab.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'mifosx-repayment-schedule-tab', + templateUrl: './repayment-schedule-tab.component.html', + styleUrls: ['./repayment-schedule-tab.component.scss'] +}) +export class RepaymentScheduleTabComponent implements OnInit { + + /** Loan Repayment Schedule Details Data */ + repaymentScheduleDetails: any; + /** Stores if there is any waived amount */ + isWaived: boolean; + /** Columns to be displayed in original schedule table. */ + displayedColumns: string[] = ['number', 'days', 'date', 'paiddate', 'check', 'principalDue', 'balanceOfLoan', 'interest', 'fees', 'penalties', 'due', 'paid', 'inadvance', 'late', 'waived', '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.repaymentScheduleDetails = data.loanDetailsAssociationData.repaymentSchedule; + console.log(this.repaymentScheduleDetails); + + }); + } + + ngOnInit() { + this.isWaived = this.repaymentScheduleDetails.totalWaived > 0; + } + +} diff --git a/src/app/loans/loans.module.ts b/src/app/loans/loans.module.ts index a0e8cb981..a815b0031 100644 --- a/src/app/loans/loans.module.ts +++ b/src/app/loans/loans.module.ts @@ -17,6 +17,7 @@ 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'; +import { RepaymentScheduleTabComponent } from './loans-view/repayment-schedule-tab/repayment-schedule-tab.component'; /** * Loans Module @@ -34,6 +35,7 @@ import { OriginalScheduleTabComponent } from './loans-view/original-schedule-tab ChargesTabComponent, OverdueChargesTabComponent, OriginalScheduleTabComponent, + RepaymentScheduleTabComponent, ], providers: [DatePipe], })