[stickyHeader]="true"
idlClass="acqinv" [dataSource]="gridSource">
+ <eg-grid-toolbar-action label="Print Selected Invoices" i18n-label
+ (onClick)="printSelectedInvoices($event)" [disableOnRows]="noSelectedRows">
+ </eg-grid-toolbar-action>
+
<eg-grid-column path="inv_ident" [cellTemplate]="inv_identTmpl"></eg-grid-column>
<eg-grid-column path="provider" [cellTemplate]="providerTmpl"></eg-grid-column>
<eg-grid-column path="shipper" [cellTemplate]="shipperTmpl"></eg-grid-column>
<eg-grid-column path="recv_date" [hidden]="true"></eg-grid-column>
</eg-grid>
+
+<eg-alert-dialog #printfail i18n-dialogBody
+ dialogBody="Could not print the selected invoices.">
+</eg-alert-dialog>
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';
gridSource: GridDataSource;
@ViewChild('acqSearchInvoicesGrid', { static: true }) invoiceResultsGrid: GridComponent;
+ @ViewChild('printfail', { static: true }) private printfail: AlertDialogComponent;
+
+ noSelectedRows: (rows: IdlObject[]) => boolean;
constructor(
private router: Router,
private route: ActivatedRoute,
+ private printer: PrintService,
+ private evt: EventService,
private net: NetService,
private auth: AuthService,
private acqSearch: AcqSearchService) {
ngOnInit() {
this.gridSource = this.acqSearch.getAcqSearchDataSource('invoice');
+ this.noSelectedRows = (rows: IdlObject[]) => (rows.length === 0);
}
+ printSelectedInvoices(rows: IdlObject[]) {
+ var that = this;
+ var html = "<style type='text/css'>.acq-invoice-" +
+ "voucher {page-break-after:always;}" +
+ "</style>\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'
+ })
+ );
+ }
}