<eg-staff-banner bannerText="Cash Reports" i18n-bannerText>
</eg-staff-banner>
-<div>
- <div class="row">
- <div class="input-group">
- <div class="input-group-prepend">
- <div class="input-group-text" i18n>Start Date</div>
- <eg-date-select (onChangeAsDate)="onStartDateChange($event)"></eg-date-select>
+<div class="mb-5 text-center">
+ <div>
+ <div class="row col-lg-7 ml-auto mr-auto">
+ <div class="input-group col-lg-4 ml-auto mr-auto">
+ <div class="input-group-prepend">
+ <div class="input-group-text" i18n>Start Date</div>
+ <eg-date-select [initialDate]="today" (onChangeAsYmd)="onStartDateChange($event)"></eg-date-select>
+ </div>
</div>
- </div>
- <div class="input-group">
- <div class="input-group-prepend">
- <div class="input-group-text" i18n>End Date</div>
- <eg-date-select (onChangeAsDate)="onEndDateChange($event)"></eg-date-select>
+ <div class="input-group col-lg-4 ml-auto mr-auto">
+ <div class="input-group-prepend">
+ <div class="input-group-text" i18n>End Date</div>
+ <eg-date-select [initialDate]="today" (onChangeAsYmd)="onEndDateChange($event)"></eg-date-select>
+ </div>
</div>
</div>
- </div>
- <div class="input-group">
- <div class="input-group-prepend">
- <div class="input-group-text" i18n>Org Select</div>
- <eg-org-select (onChange)="onOrgChange($event)"></eg-org-select>
+ <div class="input-group mt-4 mb-3">
+ <div class="input-group-prepend col-lg-2 ml-auto mr-auto">
+ <div class="input-group-text" i18n>View reports for</div>
+ <eg-org-select [applyDefault]="true" (onChange)="onOrgChange($event)"></eg-org-select>
+ </div>
</div>
</div>
+ <button class="btn btn-primary col-lg-1" (click)="searchForData(startDate, endDate)">Submit</button>
+</div>
+<div class="mb-5">
+ <h3 class="text-center">Desk Payments</h3>
+ <eg-grid #deskPaymentgrid
+ [disableSelect]="true"
+ [disablePaging]="true"
+ [dataSource]="deskPaymentDataSource"
+ [sortable]="false">
+ <eg-grid-column [label]="'Workstation'" [name]="'workstation'" [index]="true" ></eg-grid-column>
+ <eg-grid-column [label]="'Cash Payment'" [name]="'cash_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Check Payment'" [name]="'check_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Credit Card Payment'" [name]="'credit_card_payment'" ></eg-grid-column>
+ </eg-grid>
+</div>
+<hr/>
+<div class="mb-3">
+ <h3 class="text-center">User Payments</h3>
+ <eg-grid #userPaymentgrid
+ [disableSelect]="true"
+ [disablePaging]="true"
+ [dataSource]="userPaymentDataSource"
+ [sortable]="false">
+ <eg-grid-column [label]="'User'" [name]="'usr'" [index]="true" ></eg-grid-column>
+ <eg-grid-column [label]="'Forgive Payment'" [name]="'forgive_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Work Payment'" [name]="'work_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Credit Payment'" [name]="'credit_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Goods Payment'" [name]="'goods_payment'" ></eg-grid-column>
+ <eg-grid-column [label]="'Account Adjustment'" [name]="'account_adjustment'" ></eg-grid-column>
+ </eg-grid>
</div>
-
-<eg-grid #deskPaymentgrid [idlClass]="deskIdlClass"
- [dataSource]="deskPaymentDataSource"
- [sortable]="true">
-</eg-grid>
-
-<eg-grid #userPaymentgrid [idlClass]="userIdlClass"
- [dataSource]="userPaymentDataSource"
- [sortable]="true">
-</eg-grid>
-
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;
@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) {
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);
}
}