From: Galen Charlton Date: Thu, 9 Dec 2021 20:33:38 +0000 (-0500) Subject: LP#1942220: implement Link Invoice X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ca3a44dcb73329c9662c8b6c1d9d56c682db4feb;p=working%2FEvergreen.git LP#1942220: implement Link Invoice Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.html index 09d42eab55..8192118bb3 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.html @@ -3,6 +3,7 @@ + @@ -21,7 +22,7 @@ + [disabled]="isActivatedPo() || !selectedIds().length" i18n>Add Items to Selected Lineitems @@ -44,7 +45,9 @@ + [disabled]="!isActivatedPo() || !selectedIds().length" i18n>Create Invoice from Selected Lineitems + diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.ts index 6ec4c533cd..2f49dfe3a5 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.ts @@ -15,6 +15,7 @@ import {HoldingsService} from '@eg/staff/share/holdings/holdings.service'; import {CancelDialogComponent} from './cancel-dialog.component'; import {DeleteLineitemsDialogComponent} from './delete-lineitems-dialog.component'; import {AddCopiesDialogComponent} from './add-copies-dialog.component'; +import {LinkInvoiceDialogComponent} from './link-invoice-dialog.component'; import {ExportAttributesDialogComponent} from './export-attributes-dialog.component'; import {ClaimPolicyDialogComponent} from './claim-policy-dialog.component'; import {saveAs} from 'file-saver'; @@ -48,7 +49,7 @@ export class LineitemListComponent implements OnInit { picklistId: number = null; poId: number = null; - poAllowsNewCopies = false; + poWasActivated = false; poSubscription: Subscription; recordId: number = null; // lineitems related to a bib. @@ -117,6 +118,7 @@ export class LineitemListComponent implements OnInit { @ViewChild('cancelDialog') cancelDialog: CancelDialogComponent; @ViewChild('deleteLineitemsDialog') deleteLineitemsDialog: DeleteLineitemsDialogComponent; @ViewChild('addCopiesDialog') addCopiesDialog: AddCopiesDialogComponent; + @ViewChild('linkInvoiceDialog') linkInvoiceDialog: LinkInvoiceDialogComponent; @ViewChild('exportAttributesDialog') exportAttributesDialog: ExportAttributesDialogComponent; @ViewChild('claimPolicyDialog') claimPolicyDialog: ClaimPolicyDialogComponent; @@ -173,7 +175,7 @@ export class LineitemListComponent implements OnInit { }); this.poSubscription = this.poService.poRetrieved.subscribe(() => { - this.poAllowsNewCopies = this.po().order_date() ? false : true; + this.poWasActivated = this.po().order_date() ? true : false; }); } @@ -814,6 +816,21 @@ export class LineitemListComponent implements OnInit { window.location.href = path; } + linkInvoiceFromSelected() { + const liIds = this.selectedIds(); + if (liIds.length === 0) { return; } + + this.linkInvoiceDialog.liIds = liIds.map(i => Number(i)); + this.linkInvoiceDialog.open().subscribe(invId => { + if (!invId) { return; } + + const path = '/eg/staff/acq/legacy/invoice/view/' + invId + '?' + + liIds.map(x => 'attach_li=' + x.toString()).join('&'); + window.location.href = path; + }); + + } + markReceived(liIds: number[]) { if (liIds.length === 0) { return; } @@ -858,16 +875,15 @@ export class LineitemListComponent implements OnInit { }); } - // can add lineitems unless the PO has been activated at some - // point in the past - canAddLiCopies(): boolean { + // order was activated as some point in past + isActivatedPo(): boolean { if (this.picklistId) { - return true; + return false; // not an order } else { if (this.po()) { - this.poAllowsNewCopies = this.po().order_date() ? false : true; + this.poWasActivated = this.po().order_date() ? true : false; } - return this.poAllowsNewCopies; + return this.poWasActivated; } } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.module.ts b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.module.ts index 2503ee87c1..f39c674588 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.module.ts @@ -20,6 +20,7 @@ import {CreateAssetsComponent} from './create-assets.component'; import {CancelDialogComponent} from './cancel-dialog.component'; import {DeleteLineitemsDialogComponent} from './delete-lineitems-dialog.component'; import {AddCopiesDialogComponent} from './add-copies-dialog.component'; +import {LinkInvoiceDialogComponent} from './link-invoice-dialog.component'; import {ExportAttributesDialogComponent} from './export-attributes-dialog.component'; import {ClaimPolicyDialogComponent} from './claim-policy-dialog.component'; import {MarcEditModule} from '@eg/staff/share/marc-edit/marc-edit.module'; @@ -39,6 +40,7 @@ import {UploadComponent} from '../picklist/upload.component'; CancelDialogComponent, DeleteLineitemsDialogComponent, AddCopiesDialogComponent, + LinkInvoiceDialogComponent, ExportAttributesDialogComponent, ClaimPolicyDialogComponent, BriefRecordComponent, @@ -51,6 +53,7 @@ import {UploadComponent} from '../picklist/upload.component'; CancelDialogComponent, DeleteLineitemsDialogComponent, AddCopiesDialogComponent, + LinkInvoiceDialogComponent, ExportAttributesDialogComponent, ClaimPolicyDialogComponent ], diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.html new file mode 100644 index 0000000000..aa736ba5be --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.html @@ -0,0 +1,54 @@ + +
+ + + +
+
+ diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.ts new file mode 100644 index 0000000000..83b238c3e9 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/link-invoice-dialog.component.ts @@ -0,0 +1,20 @@ +import {Component, Input, ViewChild, TemplateRef, OnInit} from '@angular/core'; +import {NgbModal} from '@ng-bootstrap/ng-bootstrap'; +import {DialogComponent} from '@eg/share/dialog/dialog.component'; +import {IdlService, IdlObject} from '@eg/core/idl.service'; +import {ComboboxEntry} from '@eg/share/combobox/combobox.component'; + +@Component({ + selector: 'eg-acq-link-invoice-dialog', + templateUrl: './link-invoice-dialog.component.html' +}) + +export class LinkInvoiceDialogComponent extends DialogComponent { + @Input() liIds: number[] = []; + @Input() poId: number = null; + + provider: ComboboxEntry; + invoice: ComboboxEntry; + + constructor(private modal: NgbModal) { super(modal); } +} diff --git a/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.html b/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.html index bf01a4cb56..14c44b5792 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.html @@ -1,5 +1,6 @@ + receipt Create Invoice + | + + receipt + Link Invoice + | EDI Messages ({{ediMessageCount}}) diff --git a/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.ts index 5f2faa7543..7467bc6a55 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.ts @@ -15,7 +15,7 @@ import {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component'; import {PoService} from './po.service'; import {LineitemService} from '../lineitem/lineitem.service'; import {CancelDialogComponent} from '../lineitem/cancel-dialog.component'; - +import {LinkInvoiceDialogComponent} from '../lineitem/link-invoice-dialog.component'; @Component({ templateUrl: 'summary.component.html', @@ -47,6 +47,7 @@ export class PoSummaryComponent implements OnInit, OnDestroy { stateChangeSub: Subscription; @ViewChild('cancelDialog') cancelDialog: CancelDialogComponent; + @ViewChild('linkInvoiceDialog') linkInvoiceDialog: LinkInvoiceDialogComponent; @ViewChild('progressDialog') progressDialog: ProgressDialogComponent; @ViewChild('confirmFinalize') confirmFinalize: ConfirmDialogComponent; @@ -164,6 +165,19 @@ export class PoSummaryComponent implements OnInit, OnDestroy { }); } + linkInvoiceFromPo() { + + this.linkInvoiceDialog.poId = this.poId; + this.linkInvoiceDialog.open().subscribe(invId => { + if (!invId) { return; } + + const path = '/eg/staff/acq/legacy/invoice/view/' + invId + '?' + + 'attach_po=' + this.poId; + window.location.href = path; + }); + + } + setCanActivate() { this.canActivate = null; this.activationBlocks = [];