From 78266f3e6a89d8de879ed1efd2bc9555c0f174c1 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 25 Mar 2020 11:45:05 -0400 Subject: [PATCH] add provider invoices component Signed-off-by: Galen Charlton --- .../staff/acq/provider/acq-provider.component.html | 4 +- .../app/staff/acq/provider/acq-provider.module.ts | 2 + .../acq/provider/provider-invoices.component.html | 45 +++++++++ .../acq/provider/provider-invoices.component.ts | 106 +++++++++++++++++++++ 4 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.html create mode 100644 Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.ts diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html index 56dd3ffb5d..4b5403169a 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html @@ -43,7 +43,9 @@ PROVIDER EDI TAB - PROVIDER INVOICES TAB + + + PROVIDER PURCHASE ORDERS TAB diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts index 51f61c44e8..743d3e283e 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts @@ -7,6 +7,7 @@ import {AcqProviderSummaryPaneComponent} from './summary-pane.component'; import {ProviderResultsComponent} from './provider-results.component'; import {ProviderAddressesComponent} from './provider-addresses.component'; import {ProviderContactsComponent} from './provider-contacts.component'; +import {ProviderInvoicesComponent} from './provider-invoices.component'; import {OrgFamilySelectModule} from '@eg/share/org-family-select/org-family-select.module'; import {FmRecordEditorModule} from '@eg/share/fm-editor/fm-editor.module'; import {ProviderRecordService} from './provider-record.service'; @@ -19,6 +20,7 @@ import {ProviderRecordService} from './provider-record.service'; ProviderResultsComponent, ProviderAddressesComponent, ProviderContactsComponent, + ProviderInvoicesComponent, AcqProviderSummaryPaneComponent ], imports: [ diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.html new file mode 100644 index 0000000000..9ed0529ce0 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.html @@ -0,0 +1,45 @@ + + + {{invoice.inv_ident()}} + + + + + {{invoice.provider().code()}} + + + + + {{invoice.shipper().code()}} + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.ts new file mode 100644 index 0000000000..6134a1b649 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-invoices.component.ts @@ -0,0 +1,106 @@ +import {Component, OnInit, AfterViewInit, Input, ViewChild} from '@angular/core'; +import {Observable} from 'rxjs'; +import {map} from 'rxjs/operators'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Pager} from '@eg/share/util/pager'; +import {IdlObject} from '@eg/core/idl.service'; +import {EventService} from '@eg/core/event.service'; +import {AlertDialogComponent} from '@eg/share/dialog/alert.component'; +import {PrintService} from '@eg/share/print/print.service'; +import {NetService} from '@eg/core/net.service'; +import {AuthService} from '@eg/core/auth.service'; +import {GridComponent} from '@eg/share/grid/grid.component'; +import {GridDataSource, GridCellTextGenerator} from '@eg/share/grid/grid'; +import {AcqSearchService, AcqSearchTerm, AcqSearch} from '../search/acq-search.service'; +import {ProviderRecord, ProviderRecordService} from './provider-record.service'; + +@Component({ + selector: 'eg-provider-invoices', + templateUrl: 'provider-invoices.component.html', + providers: [AcqSearchService] +}) +export class ProviderInvoicesComponent implements OnInit { + + @Input() initialSearchTerms: AcqSearchTerm[] = []; + + gridSource: GridDataSource; + @ViewChild('acqProviderInvoicesGrid', { static: true }) providerInvoicesGrid: GridComponent; + @ViewChild('printfail', { static: true }) private printfail: AlertDialogComponent; + + noSelectedRows: (rows: IdlObject[]) => boolean; + + cellTextGenerator: GridCellTextGenerator; + + constructor( + private router: Router, + private route: ActivatedRoute, + private printer: PrintService, + private evt: EventService, + private net: NetService, + private auth: AuthService, + private providerRecord: ProviderRecordService, + private acqSearch: AcqSearchService) { + } + + ngOnInit() { + this.gridSource = this.acqSearch.getAcqSearchDataSource('invoice'); + this.noSelectedRows = (rows: IdlObject[]) => (rows.length === 0); + this.cellTextGenerator = { + inv_ident: row => row.inv_ident(), + provider: row => row.provider().code(), + shipper: row => row.shipper().code(), + }; + } + + ngAfterViewInit() { + this.providerRecord.refreshCurrent().then(() => { + const provider = this.providerRecord.current(); + if (provider) { + setTimeout(() => { + this.acqSearch.setSearch({ + terms: [{ + field: 'acqinv:provider', + op: '', + value1: provider.id(), + value2: '', + }], + conjunction: 'all', + }); + this.providerInvoicesGrid.reload(); + }); + } + }); + } + + // TODO - copied from InvoiceResultsComponent, could be + // consolidated + printSelectedInvoices(rows: IdlObject[]) { + const that = this; + let html = '\n'; + this.net.request( + 'open-ils.acq', + 'open-ils.acq.invoice.print.html', + this.auth.token(), rows.map( invoice => invoice.id() ) + ).subscribe( + (res) => { + if (this.evt.parse(res)) { + console.error(res); + this.printfail.open(); + } else { + html += res.template_output().data(); + } + }, + (err) => { + console.error(err); + this.printfail.open(); + }, + () => this.printer.print({ + text: html, + printContext: 'default' + }) + ); + } + +} -- 2.11.0