LP1956790 Support applying copy alerts via templates user/berick/lp1956790-copy-template-with-alerts
authorBill Erickson <berickxx@gmail.com>
Fri, 8 Jul 2022 15:17:51 +0000 (11:17 -0400)
committerBill Erickson <berickxx@gmail.com>
Fri, 8 Jul 2022 15:17:53 +0000 (11:17 -0400)
Fixes an issue where copy alerts contained within copy templates failed
to apply when using the new Angular holdings editor.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.ts
Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.service.ts

index 8b4c29b..402de23 100644 (file)
@@ -497,9 +497,38 @@ export class CopyAttrsComponent implements OnInit, AfterViewInit {
 
             if (field === 'statcats') {
                 Object.keys(value).forEach(catId => {
-                    this.statCatValues[+catId] = value[+catId];
-                    this.statCatChanged(+catId);
+                    if (value[+catId] !== null) {
+                        this.statCatValues[+catId] = value[+catId];
+                        this.statCatChanged(+catId);
+                    }
+                });
+                return;
+            }
+
+            // Copy alerts are stored as hashes of the bits we need.
+            // Templates can be used to create alerts, but not edit them.
+            if (field === 'copy_alerts' && Array.isArray(value)) {
+                value.forEach(a => {
+                    this.context.copyList().forEach(copy => {
+                        const newAlert = this.idl.create('aca');
+                        newAlert.isnew(true);
+                        newAlert.copy(copy.id());
+                        newAlert.alert_type(a.alert_type);
+                        newAlert.temp(a.temp);
+                        newAlert.note(a.note);
+                        newAlert.create_staff(this.auth.user().id());
+                        newAlert.create_time('now');
+
+                        if (Array.isArray(copy.copy_alerts())) {
+                            copy.copy_alerts().push(newAlert);
+                        } else {
+                            copy.copy_alerts([newAlert]);
+                        }
+
+                        copy.ischanged(true);
+                    });
                 });
+
                 return;
             }
 
index d898c3e..2306220 100644 (file)
@@ -226,6 +226,7 @@ export class VolCopyService {
         copy.parts([]);
         copy.tags([]);
         copy.notes([]);
+        copy.copy_alerts([]);
         copy.stat_cat_entries([]);
 
         return copy;