From 102d9364798ff26ab96141534efba38946152935 Mon Sep 17 00:00:00 2001 From: Karan Takalkar Date: Mon, 29 Jun 2020 18:17:28 +0530 Subject: [PATCH] feat: savings account transactions (export) (#950) Fixes: #946 --- .../export-transactions.component.html | 35 ++++++++ .../export-transactions.component.scss | 5 ++ .../export-transactions.component.spec.ts | 25 ++++++ .../export-transactions.component.ts | 87 +++++++++++++++++++ .../transactions-tab.component.html | 2 +- .../transactions-tab.component.ts | 2 +- .../view-reciept/view-reciept.component.html | 1 - .../view-reciept/view-reciept.component.scss | 1 - src/app/savings/savings-routing.module.ts | 16 +++- src/app/savings/savings.module.ts | 4 +- 10 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.html create mode 100644 src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.scss create mode 100644 src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.spec.ts create mode 100644 src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.ts diff --git a/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.html b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.html new file mode 100644 index 000000000..81124a89e --- /dev/null +++ b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.html @@ -0,0 +1,35 @@ +
+ +
+ + + From Date + + + + + From date is required + + + + + To Date + + + + + To date is required + + + +
+ +
+ + +
+ +
+ + diff --git a/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.scss b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.scss new file mode 100644 index 000000000..a9fa6acab --- /dev/null +++ b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.scss @@ -0,0 +1,5 @@ +.generate-button { + max-height: 2%; + padding: 1% 0 2% 6%; + align-self: center; +} diff --git a/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.spec.ts b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.spec.ts new file mode 100644 index 000000000..9965db862 --- /dev/null +++ b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExportTransactionsComponent } from './export-transactions.component'; + +describe('ExportTransactionsComponent', () => { + let component: ExportTransactionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ExportTransactionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ExportTransactionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.ts b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.ts new file mode 100644 index 000000000..c8164c226 --- /dev/null +++ b/src/app/savings/savings-account-view/transactions-tab/export-transactions/export-transactions.component.ts @@ -0,0 +1,87 @@ +/** Angular Imports */ +import { Component, OnInit } from '@angular/core'; +import { DomSanitizer } from '@angular/platform-browser'; +import { FormBuilder, Validators } from '@angular/forms'; +import { DatePipe } from '@angular/common'; +import { ActivatedRoute } from '@angular/router'; + +/** Custom Services */ +import { ReportsService } from 'app/reports/reports.service'; + +/** + * Export Client Savings Transactions Component + */ +@Component({ + selector: 'mifosx-export-transactions', + templateUrl: './export-transactions.component.html', + styleUrls: ['./export-transactions.component.scss'] +}) +export class ExportTransactionsComponent implements OnInit { + + /** Minimum date allowed. */ + minDate = new Date(2000, 0, 1); + /** Maximum date allowed. */ + maxDate = new Date(); + /** Transactions Report Form */ + transactionsReportForm: any; + /** substitute for resolver */ + hideOutput = true; + /** trusted resource url for pentaho output */ + pentahoUrl: any; + /** Savings Account Id */ + savingsAccountId: any; + + /** + * Fetches savings account data from grandparent's `resolve` + * @param {DomSanitizer} sanitizer DOM Sanitizer + * @param {ReportsService} reportsService Reports Service + * @param {FormBuilder} formBuilder Form Builder + * @param {DatePipe} datePipe Date Pipe + * @param {ActivatedRoute} route Activated Route + */ + constructor(private sanitizer: DomSanitizer, + private reportsService: ReportsService, + private formBuilder: FormBuilder, + private datePipe: DatePipe, + private route: ActivatedRoute) { + this.route.parent.parent.data.subscribe((data: { savingsAccountData: any }) => { + this.savingsAccountId = data.savingsAccountData.accountNo; + }); + } + + + ngOnInit() { + this.createTransactionsReportForm(); + } + + /** + * Creates the transactions report form. + */ + createTransactionsReportForm() { + this.transactionsReportForm = this.formBuilder.group({ + 'fromDate': ['', Validators.required], + 'toDate': ['', Validators.required], + }); + } + + /** + * Generates client savings transactions report. + */ + generate() { + const data = { + 'output-type': 'PDF', + R_startDate: this.datePipe.transform(this.transactionsReportForm.value.fromDate, 'yyyy-MM-dd'), + R_endDate: this.datePipe.transform(this.transactionsReportForm.value.toDate, 'yyyy-MM-dd'), + R_savingsAccountId: this.savingsAccountId + }; + this.reportsService.getPentahoRunReportData({name: 'Client Saving Transactions'}, data, 'default', 'en', 'dd MMMM yyyy') + .subscribe( (res: any) => { + const contentType = res.headers.get('Content-Type'); + const file = new Blob([res.body], {type: contentType}); + const filecontent = URL.createObjectURL(file); + this.pentahoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(filecontent); + this.hideOutput = false; + }); + } + +} diff --git a/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.html b/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.html index 94a9ac143..5e26a95ac 100644 --- a/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.html +++ b/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.html @@ -6,7 +6,7 @@
- +
diff --git a/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.ts b/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.ts index 5b7013f1a..54ecfe033 100644 --- a/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.ts +++ b/src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.ts @@ -27,7 +27,7 @@ export class TransactionsTabComponent implements OnInit { * @param {ActivatedRoute} route Activated Route. */ constructor(private route: ActivatedRoute) { - this.route.parent.data.subscribe((data: { savingsAccountData: any }) => { + this.route.parent.parent.data.subscribe((data: { savingsAccountData: any }) => { this.transactionsData = data.savingsAccountData.transactions.filter((transaction: any) => !transaction.reversed); this.status = data.savingsAccountData.status.value; }); diff --git a/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.html b/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.html index 53fb30e94..24b0c9e8a 100644 --- a/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.html +++ b/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.html @@ -8,4 +8,3 @@ - diff --git a/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.scss b/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.scss index 75883acab..b88a8cdbc 100644 --- a/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.scss +++ b/src/app/savings/savings-account-view/transactions/view-reciept/view-reciept.component.scss @@ -5,4 +5,3 @@ margin-bottom: 2%; } } - diff --git a/src/app/savings/savings-routing.module.ts b/src/app/savings/savings-routing.module.ts index d81a3f76c..f4b7c3383 100644 --- a/src/app/savings/savings-routing.module.ts +++ b/src/app/savings/savings-routing.module.ts @@ -17,6 +17,7 @@ import { EditSavingsAccountComponent } from './edit-savings-account/edit-savings import { ViewTransactionComponent } from './savings-account-view/transactions/view-transaction/view-transaction.component'; import { ViewChargeComponent } from './savings-account-view/view-charge/view-charge.component'; import { ViewRecieptComponent } from './savings-account-view/transactions/view-reciept/view-reciept.component'; +import { ExportTransactionsComponent } from './savings-account-view/transactions-tab/export-transactions/export-transactions.component'; /** Custom Resolvers */ import { SavingsAccountViewResolver } from './common-resolvers/savings-account-view.resolver'; @@ -29,6 +30,7 @@ import { SavingsAccountChargeResolver } from './common-resolvers/savings-account import { SavingsAccountActionsResolver } from './common-resolvers/savings-account-actions.resolver'; import { SavingsTransactionRecieptResolver } from './common-resolvers/savings-transaction-reciept.resolver'; + const routes: Routes = [ { path: '', @@ -58,8 +60,18 @@ const routes: Routes = [ children: [ { path: 'transactions', - component: TransactionsTabComponent, - data: { title: extract('Savings Account Transactions'), breadcrumb: 'Transactions', routeParamBreadcrumb: false } + data: { title: extract('Savings Account Transactions'), breadcrumb: 'Transactions', routeParamBreadcrumb: false }, + children: [ + { + path: '', + component: TransactionsTabComponent + + }, + { + path: 'export', + component: ExportTransactionsComponent + } + ] }, { path: 'charges', diff --git a/src/app/savings/savings.module.ts b/src/app/savings/savings.module.ts index 6016e896c..b28deb7ef 100644 --- a/src/app/savings/savings.module.ts +++ b/src/app/savings/savings.module.ts @@ -43,6 +43,7 @@ import { AddChargeSavingsAccountComponent } from './saving-account-actions/add-c import { CloseSavingsAccountComponent } from './saving-account-actions/close-savings-account/close-savings-account.component'; import { ToggleWithholdTaxDialogComponent } from './savings-account-view/custom-dialogs/toggle-withhold-tax-dialog/toggle-withhold-tax-dialog.component'; import { ViewRecieptComponent } from './savings-account-view/transactions/view-reciept/view-reciept.component'; +import { ExportTransactionsComponent } from './savings-account-view/transactions-tab/export-transactions/export-transactions.component'; /** @@ -91,7 +92,8 @@ import { ViewRecieptComponent } from './savings-account-view/transactions/view-r AddChargeSavingsAccountComponent, CloseSavingsAccountComponent, ToggleWithholdTaxDialogComponent, - ViewRecieptComponent + ViewRecieptComponent, + ExportTransactionsComponent ], entryComponents: [ CalculateInterestDialogComponent,