LP1936233 Item status actions menu
authorBill Erickson <berickxx@gmail.com>
Tue, 20 Jul 2021 21:25:51 +0000 (17:25 -0400)
committerBill Erickson <berickxx@gmail.com>
Tue, 20 Jul 2021 21:25:51 +0000 (17:25 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/staff/cat/item/status.component.html
Open-ILS/src/eg2/src/app/staff/cat/item/status.component.ts
Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.module.ts

index 944e3e7..a888a8f 100644 (file)
@@ -16,6 +16,7 @@
 <eg-transfer-items #transferItems></eg-transfer-items>
 <eg-transfer-holdings #transferHoldings></eg-transfer-holdings>
 <eg-cancel-transit-dialog #cancelTransitDialog></eg-cancel-transit-dialog>
+<eg-mark-items-dialog #markItemsDialog></eg-mark-items-dialog>
 <eg-alert-dialog #transferAlert
   i18n-dialogTitle i18n-dialogBody
   dialogTitle="No Target Selected"
         i18n-group group="Edit" (entryClicked)="deleteItems([item])">
       </eg-grouped-menu-entry>
 
+      <!-- Mark -->
+      <eg-grouped-menu-entry i18n-label label="Mark Item as Damaged"
+        i18n-group group="Mark" (entryClicked)="markDamaged([item])">
+      </eg-grouped-menu-entry>
+      <eg-grouped-menu-entry i18n-label label="Mark Item as Discard/Weed"
+        i18n-group group="Mark" (entryClicked)="discardWeed([item])">
+      </eg-grouped-menu-entry>
+
+
       <!-- Show -->
       <eg-grouped-menu-entry i18n-label label="Show Record Holds"
         i18n-group group="Show" [newTab]="true"
index c7afeb6..541a8f8 100644 (file)
@@ -1,6 +1,6 @@
 import {Component, Input, OnInit, AfterViewInit, ViewChild} from '@angular/core';
 import {Router, ActivatedRoute, ParamMap} from '@angular/router';
-import {from, empty} from 'rxjs';
+import {from, of, empty} from 'rxjs';
 import {concatMap, tap} from 'rxjs/operators';
 import {IdlObject, IdlService} from '@eg/core/idl.service';
 import {PcrudService} from '@eg/core/pcrud.service';
@@ -42,6 +42,9 @@ import {MarkMissingDialogComponent
 import {AnonCacheService} from '@eg/share/util/anon-cache.service';
 import {ToastService} from '@eg/share/toast/toast.service';
 import {StringService} from '@eg/share/string/string.service';
+import {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component';
+import {MarkItemsDialogComponent
+    } from '@eg/staff/share/holdings/mark-items-dialog.component';
 
 @Component({
   templateUrl: 'status.component.html'
@@ -54,6 +57,7 @@ export class ItemStatusComponent implements OnInit, AfterViewInit {
     noSuchItem = false;
     item: IdlObject;
     tab: string;
+    discardCount = 0;
 
     @ViewChild('barcodeSelect') private barcodeSelect: BarcodeSelectComponent;
 
@@ -83,6 +87,8 @@ export class ItemStatusComponent implements OnInit, AfterViewInit {
         private progressDialog: ProgressDialogComponent;
     @ViewChild('cancelTransitDialog')
         private cancelTransitDialog: CancelTransitDialogComponent;
+    @ViewChild('markItemsDialog')
+        private markItemsDialog: MarkItemsDialogComponent;
 
     constructor(
         private router: Router,
@@ -401,6 +407,41 @@ export class ItemStatusComponent implements OnInit, AfterViewInit {
             window.open(`/eg/staff/acq/legacy/po/view/${resp.purchase_order()}`);
         });
     }
+
+    markDamaged(copies: IdlObject[]) {
+         const copyIds = copies
+            .filter(c => c.status() !== 14 /* Damaged */).map(c => c.id());
+
+        if (copyIds.length === 0) { return; }
+
+        let modified = false;
+
+        from(copyIds).pipe(concatMap(copyId => {
+
+            this.markDamagedDialog.copyId = copyId;
+            return this.markDamagedDialog.open({size: 'lg'})
+            .pipe(tap(ok => { if (ok) { modified = true; } }));
+
+        })).toPromise().then(_ => this.load());
+    }
+
+
+    discardWeed(copies: IdlObject[]) {
+        let modified = false;
+
+        this.markItemsDialog.markAs = 'discard';
+        this.markItemsDialog.copies = copies;
+        this.markItemsDialog.open()
+        .subscribe(
+            copyId => {
+                if (copyId !== null) { modified = true; }
+            },
+            null,
+            () => {
+                if (modified) { this.load(); }
+            }
+        );
+    }
 }
 
 
index ab914a1..2a56624 100644 (file)
@@ -11,6 +11,7 @@ import {ConjoinedItemsDialogComponent} from './conjoined-items-dialog.component'
 import {TransferItemsComponent} from './transfer-items.component';
 import {TransferHoldingsComponent} from './transfer-holdings.component';
 import {CopyAlertManagerDialogComponent} from './copy-alert-manager.component';
+import {MarkItemsDialogComponent} from './mark-items-dialog.component';
 
 @NgModule({
     declarations: [
@@ -22,6 +23,7 @@ import {CopyAlertManagerDialogComponent} from './copy-alert-manager.component';
       ConjoinedItemsDialogComponent,
       TransferItemsComponent,
       TransferHoldingsComponent,
+      MarkItemsDialogComponent,
       CopyAlertManagerDialogComponent
     ],
     imports: [
@@ -37,6 +39,7 @@ import {CopyAlertManagerDialogComponent} from './copy-alert-manager.component';
       ConjoinedItemsDialogComponent,
       TransferItemsComponent,
       TransferHoldingsComponent,
+      MarkItemsDialogComponent,
       CopyAlertManagerDialogComponent
     ],
     providers: [