From b8997c388b1d76cc9e09edce59bb6055460ab4b7 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 1 Apr 2020 18:39:49 -0400 Subject: [PATCH] add grid for displaying EDI messages for a selected account Signed-off-by: Galen Charlton --- .../provider/provider-edi-accounts.component.html | 12 +++++ .../provider/provider-edi-accounts.component.ts | 55 +++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-edi-accounts.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-edi-accounts.component.html index 34e5a31b42..6e8a3af86c 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-edi-accounts.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-edi-accounts.component.html @@ -28,8 +28,20 @@ + + + +

EDI messages for account {{selectedEdiAccountLabel}}

+ + +
+ boolean; deleteSelected: (rows: IdlObject[]) => void; + viewEdiMessages: boolean; + selectedEdiAccountId: number; + selectedEdiAccountLabel = ''; + permissions: {[name: string]: boolean}; // Size of create/edito dialog. Uses large by default. @@ -54,15 +61,20 @@ export class ProviderEdiAccountsComponent implements OnInit, AfterViewInit { constructor( private router: Router, private route: ActivatedRoute, + private changeDetector: ChangeDetectorRef, private net: NetService, private idl: IdlService, private auth: AuthService, + private pcrud: PcrudService, private providerRecord: ProviderRecordService, private toast: ToastService) { } ngOnInit() { this.gridSource = this.getDataSource() + this.ediMessagesSource = this.getEdiMessagesSource() + this.viewEdiMessages = false; + this.selectedEdiAccountId = null; this.cellTextGenerator = {}; this.notOneSelectedRow = (rows: IdlObject[]) => (rows.length !== 1); this.deleteSelected = (idlThings: IdlObject[]) => { @@ -126,6 +138,39 @@ export class ProviderEdiAccountsComponent implements OnInit, AfterViewInit { return gridSource; } + getEdiMessagesSource(): GridDataSource { + const gridSource = new GridDataSource(); + gridSource.getRows = (pager: Pager, sort: any[]) => { + const orderBy: any = {acqedim: 'create_time desc'}; + if (sort.length) { + orderBy.acqedim = sort[0].name + ' ' + sort[0].dir; + } + + // base query to grab everything + const base: Object = { + account: this.selectedEdiAccountId + }; + const query: any = new Array(); + query.push(base); + + // and add any filters + Object.keys(gridSource.filters).forEach(key => { + Object.keys(gridSource.filters[key]).forEach(key2 => { + query.push(gridSource.filters[key][key2]); + }); + }); + return this.pcrud.search('acqedim', + query, { + flesh: 3, + flesh_fields: {acqedim: ['account', 'purchase_order']}, + offset: pager.offset, + limit: pager.limit, + order_by: orderBy + }); + }; + return gridSource; + } + showEditDialog(providerEdiAccount: IdlObject): Promise { this.editDialog.mode = 'update'; this.editDialog.recordId = providerEdiAccount['id'](); @@ -185,6 +230,14 @@ export class ProviderEdiAccountsComponent implements OnInit, AfterViewInit { }); } + displayEdiMessages(providerEdiAccountFields: IdlObject[]) { + this.selectedEdiAccountId = providerEdiAccountFields[0].id(); + this.selectedEdiAccountLabel = providerEdiAccountFields[0].label(); + this.viewEdiMessages = true; + this.changeDetector.detectChanges(); + this.providerEdiMessagesGrid.reload(); + } + createNew() { this.editDialog.mode = 'create'; const edi_account = this.idl.create('acqedi'); -- 2.11.0