From 0c9cb26408f0197beef978106190cccb7c96a771 Mon Sep 17 00:00:00 2001 From: Zavier Banks Date: Wed, 29 Jan 2020 17:23:55 +0000 Subject: [PATCH] Lp 1859701 Currently porting over the dojo UI into the Angular UI. Signed-off-by: Zavier Banks --- .../local/cash-reports/cash-reports.component.html | 75 +++++++---- .../local/cash-reports/cash-reports.component.ts | 138 +++++++++++++++------ 2 files changed, 151 insertions(+), 62 deletions(-) diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.html b/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.html index 40af4779fa..260f7d718e 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.html @@ -2,36 +2,57 @@ -
-
-
-
-
Start Date
- +
+
+
+
+
+
Start Date
+ +
-
-
-
-
End Date
- +
+
+
End Date
+ +
-
-
-
-
Org Select
- +
+
+
View reports for
+ +
+ +
+
+

Desk Payments

+ + + + + + +
+
+
+

User Payments

+ + + + + + + +
- - - - - - - diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.ts index c7ee206bf5..7b4d63ac5b 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/local/cash-reports/cash-reports.component.ts @@ -2,23 +2,40 @@ import {Pager} from '@eg/share/util/pager'; import {Component, OnInit, Input, ViewChild} from '@angular/core'; import {GridComponent} from '@eg/share/grid/grid.component'; import {GridDataSource, GridColumn, GridRowFlairEntry} from '@eg/share/grid/grid'; -import {PcrudService} from '@eg/core/pcrud.service'; +import {IdlService} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; import {AuthService} from '@eg/core/auth.service'; +import {OrgService} from '@eg/core/org.service'; + + +class DeskTotals { + cash_payment = 0; + check_payment = 0; + credit_card_payment = 0; +}; + +class UserTotals { + forgive_payment = 0; + work_payment = 0; + credit_payment = 0; + goods_payment = 0; +}; @Component({ templateUrl: './cash-reports.component.html' }) - export class CashReportsComponent implements OnInit { initDone = false; deskPaymentDataSource: GridDataSource = new GridDataSource(); userPaymentDataSource: GridDataSource = new GridDataSource(); - deskIdlClass = 'mwps'; - userIdlClass = 'mups'; - selectedOrg: any; - startDate: any; - endDate: any; + deskIdlClass = 'mbp'; + userIdlClass = 'mbp'; + selectedOrg = this.org.get(this.auth.user().ws_ou()); + today = new Date(); + startDate = `${this.today.getFullYear()}-${String(this.today.getMonth() + 1).padStart(2, '0')}-${String(this.today.getDate()).padStart(2, '0')}`; + endDate = `${this.today.getFullYear()}-${String(this.today.getMonth() + 1).padStart(2, '0')}-${String(this.today.getDate()).padStart(2, '0')}`; + deskTotals = new DeskTotals(); + userTotals = new UserTotals(); // Default sort field, used when no grid sorting is applied. @Input() sortField: string; @@ -27,29 +44,88 @@ export class CashReportsComponent implements OnInit { @ViewChild('userPaymentgrid', { static: true }) userPaymentgrid: GridComponent; constructor( - private pcrud: PcrudService, + private idl: IdlService, private net: NetService, + private org: OrgService, private auth: AuthService){} - ngOnInit() {} + ngOnInit() { + this.searchForData(this.startDate, this.endDate); + } + + searchForData(start, end) { + this.fillGridData(this.deskIdlClass, 'deskPaymentDataSource', + this.net.request( + 'open-ils.circ', + 'open-ils.circ.money.org_unit.desk_payments', + this.auth.token(), this.selectedOrg.id(), start, end)); + this.fillGridData(this.userIdlClass,'userPaymentDataSource', + this.net.request( + 'open-ils.circ', + 'open-ils.circ.money.org_unit.user_payments', + this.auth.token(), this.selectedOrg.id(), start, end)); + } + + fillGridData(idlClass, dataSource, data) { + data.subscribe((result) => { + let dataForTotal; + if (idlClass === this.deskIdlClass) { + dataForTotal = this.getDeskTotal(result); + } else if(idlClass === this.userIdlClass) { + dataForTotal = this.getUserTotal(result); + } + if(result.length > 0) { + result.push(dataForTotal); + } + console.log(result) + this[dataSource].data = result; + //this[dataSource].requestPage(new Pager()); + // this[dataSource].getRows = (pager: Pager, sort: any[]) => { + // const searchOps = { + // offset: pager.offset, + // limit: pager.limit + // }; + // return new Observable(() => { + // return result; + // }); + // }; + // this.deskPaymentgrid.reload(); + // this.userPaymentgrid.reload(); + }); + } - findGridData(idlClass, dataSource) { - this[dataSource].getRows = (pager: Pager, sort: any[]) => { - const orderBy: any = {}; - if (sort.length) { - // Sort specified from grid - orderBy[idlClass] = sort[0].name + ' ' + sort[0].dir; - } else if (this.sortField) { - // Default sort field - orderBy[idlClass] = this.sortField; - }; - const searchOps = { - offset: pager.offset, - limit: pager.limit, - order_by: orderBy - }; - return this.pcrud.retrieveAll(idlClass, searchOps, {fleshSelectors: true}); - }; + getDeskTotal(idlObjects) { + this.deskTotals = new DeskTotals(); + if(idlObjects.length > 0) { + let idlObjectFormat = this.idl.create("mwps") + idlObjects.forEach((idlObject) => { + this.deskTotals['cash_payment'] += parseFloat(idlObject.cash_payment()); + this.deskTotals['check_payment'] += parseFloat(idlObject.check_payment()); + this.deskTotals['credit_card_payment'] += parseFloat(idlObject.credit_card_payment()); + }); + idlObjectFormat.cash_payment(this.deskTotals['cash_payment']); + idlObjectFormat.check_payment(this.deskTotals['check_payment']); + idlObjectFormat.credit_card_payment(this.deskTotals['credit_card_payment']); + return idlObjectFormat; + } + } + + getUserTotal(idlObjects) { + this.userTotals = new UserTotals(); + if(idlObjects.length > 0) { + let idlObjectFormat = this.idl.create("mups") + idlObjects.forEach((idlObject) => { + this.userTotals['forgive_payment'] += parseFloat(idlObject.forgive_payment()); + this.userTotals['work_payment'] += parseFloat(idlObject.work_payment()); + this.userTotals['credit_payment'] += parseFloat(idlObject.credit_payment()); + this.userTotals['goods_payment'] += parseFloat(idlObject.goods_payment()); + }); + idlObjectFormat.forgive_payment(this.userTotals['forgive_payment']); + idlObjectFormat.work_payment(this.userTotals['work_payment']); + idlObjectFormat.credit_payment(this.userTotals['credit_payment']); + idlObjectFormat.goods_payment(this.userTotals['goods_payment']); + return idlObjectFormat; + } } onStartDateChange(date) { @@ -62,14 +138,6 @@ export class CashReportsComponent implements OnInit { onOrgChange(org) { this.selectedOrg = org; - console.log(this.selectedOrg) - this.findGridData(this.deskIdlClass,'deskPaymentDataSource'); - this.findGridData(this.userIdlClass,'userPaymentDataSource'); - this.net.request('open-ils.circ', 'open-ils.circ.money.org_unit.user_payments', this.auth.token(), this.selectedOrg.id(), this.startDate, this.endDate).subscribe(result=>{ - console.log(result); - }); - this.net.request('open-ils.circ', 'open-ils.circ.money.org_unit.user_payments', this.auth.token(), this.selectedOrg.id(), this.startDate, this.endDate).subscribe(result=>{ - console.log(result); - }); + this.searchForData(this.startDate, this.endDate); } } -- 2.11.0