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 @@
+
+
+
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,