Modify mark_damaged to use handle_mark_item_event and more.
authorJason Stephenson <jason@sigio.com>
Sat, 27 Oct 2018 13:25:13 +0000 (09:25 -0400)
committerJason Stephenson <jason@sigio.com>
Sat, 27 Oct 2018 13:25:13 +0000 (09:25 -0400)
Open-ILS/src/templates/staff/circ/share/circ_strings.tt2
Open-ILS/web/js/ui/default/staff/circ/services/circ.js

index 1ee2ab8..e5b1e1b 100644 (file)
@@ -35,6 +35,7 @@ s.MARK_ITEM_LAST_HOLD_COPY = '[% l("Item {{barcode}} is the last item to fill a
 s.MARK_ITEM_CONTINUE = '[% l("Do you wish to continue marking it {{status}}?") %]';
 s.MARK_ITEM_CHECKIN_CONTINUE = '[% l("Do you wish to check it in and continue marking it {{status}}?") %]';
 s.MARK_ITEM_ABORT_CONTINUE = '[% l("Do you wish to abort the transit and continue marking it {{status}}?") %]';
+s.MARK_ITEM_FAILURE = '[% l("Marking of item {{barcode}} with status {{status}} failed: {{textcode}}") %]'
 s.ABORT_TRANSIT_CONFIRM = '[% l("Cancel {{num_transits}} transits?") %]';
 s.ROUTE_TO_HOLDS_SHELF = '[% l("Holds Shelf") %]';
 s.ROUTE_TO_CATALOGING = '[% l("Cataloging") %]';
index 92d7c79..3a07c81 100644 (file)
@@ -1354,16 +1354,26 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
                                 handle_checkin: !$scope.applyFine
                         }).then(function(resp) {
                             if (evt = egCore.evt.parse(resp)) {
-                                doRefresh = false;
-                                console.debug("mark damaged more information required. Pushing back.");
-                                service.mark_damaged({
-                                    id: params.id,
-                                    barcode: params.barcode,
-                                    charge: evt.payload.charge,
-                                    circ: evt.payload.circ,
-                                    refresh: params.refresh
-                                });
-                                console.error('mark damaged failed: ' + evt);
+                                egCore.pcrud.retrieve('ccs', 14)
+                                    .then(function(resp) {
+                                        service.handle_mark_item_event(
+                                            {id : params.id, barcode : params.barcode},
+                                            resp,
+                                            {
+                                                apply_fines: $scope.applyFine,
+                                                override_amount: $scope.billArgs.charge,
+                                                override_btype: $scope.billArgs.type,
+                                                override_note: $scope.billArgs.note,
+                                                handle_checkin: !$scope.applyFine
+                                            },
+                                            evt);
+                                    }).then(function(resp) {
+                                        // noop?
+                                        //if (doRefresh) egItem.add_barcode_to_list(params.barcode);
+                                    }, function(resp) {
+                                        doRefresh = false;
+                                        console.error('mark damaged failed: ' + evt);
+                                    });
                             }
                         }).then(function() {
                             if (doRefresh) egItem.add_barcode_to_list(params.barcode);
@@ -1374,57 +1384,59 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
         }).result;
     }
 
+    service.handle_mark_item_event = function(copy, status, args, event) {
+        var dlogTitle, dlogMessage;
+        switch (event.textcode) {
+        case 'ITEM_TO_MARK_CHECKED_OUT':
+            dlogTitle = egCore.strings.MARK_ITEM_CHECKED_OUT;
+            dlogMessage = egCore.strings.MARK_ITEM_CHECKIN_CONTINUE;
+            args.handle_checkin = 1;
+            break;
+        case 'ITEM_TO_MARK_IN_TRANSIT':
+            dlogTitle = egCore.strings.MARK_ITEM_TRANSIT;
+            dlogMessage = egCore.strings.MARK_ITEM_ABORT_CONTINUE;
+            args.handle_transit = 1;
+            break;
+        case 'ITEM_TO_MARK_LAST_HOLD_COPY':
+            dlogTitle = egCore.strings.MARK_ITEM_LAST_HOLD_COPY;
+            dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
+            args.handle_last_hold_copy = 1;
+            break;
+        case 'COPY_DELETE_WARNING':
+            dlogTitle = egCore.strings.MARK_ITEM_RESTRICT_DELETE;
+            dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
+            args.handle_copy_delete_warning = 1;
+            break;
+        case 'PERM_FAILURE':
+            console.error('Mark item ' + status.name() + ' for ' + copy.barcode + ' failed: ' +
+                          event);
+            return service.exit_alert(egCore.strings.PERMISSION_DENIED,
+                                      {permission : event.ilsperm});
+            break;
+        default:
+            console.error('Mark item ' + status.name() + ' for ' + copy.barcode + ' failed: ' +
+                          event);
+            return service.exit_alert(egCore.strings.MARK_ITEM_FAILURE,
+                                      {status : status.name(), barcode : copy.barcode,
+                                       textcode : event.textcode});
+            break;
+        }
+        return egConfirmDialog.open(
+            dlogTitle, dlogMessage,
+            {
+                barcode : copy.barcode,
+                status : status.name(),
+                ok : function () {},
+                cancel : function () {}
+            }
+        ).result.then(function() {
+            return service.mark_item(copy, status, args);
+        });
+    }
+
     service.mark_item = function(copy, markstatus, args) {
         if (!copy) return $q.when();
 
-        // Used later  handle events from the back end call.
-        function handle_event(copy, status, args, event) {
-            var dlogTitle, dlogMessage;
-            switch (event.textcode) {
-            case 'ITEM_TO_MARK_CHECKED_OUT':
-                dlogTitle = egCore.strings.MARK_ITEM_CHECKED_OUT;
-                dlogMessage = egCore.strings.MARK_ITEM_CHECKIN_CONTINUE;
-                args.handle_checkin = 1;
-                break;
-            case 'ITEM_TO_MARK_IN_TRANSIT':
-                dlogTitle = egCore.strings.MARK_ITEM_TRANSIT;
-                dlogMessage = egCore.strings.MARK_ITEM_ABORT_CONTINUE;
-                args.handle_transit = 1;
-                break;
-            case 'ITEM_TO_MARK_LAST_HOLD_COPY':
-                dlogTitle = egCore.strings.MARK_ITEM_LAST_HOLD_COPY;
-                dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
-                args.handle_last_hold_copy = 1;
-                break;
-            case 'COPY_DELETE_WARNING':
-                dlogTitle = egCore.strings.MARK_ITEM_RESTRICT_DELETE;
-                dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
-                args.handle_copy_delete_warning = 1;
-                break;
-            case 'PERM_FAILURE':
-                return service.exit_alert(egCore.strings.PERMISSION_DENIED,
-                                          event.ilsperm);
-                break;
-            default:
-                // TODO: Report failure to user.
-                console.error('Mark item ' + status.name() + ' for ' + copy.barcode + ' failed: ' +
-                              event);
-                return $q.reject();
-                break;
-            }
-            return egConfirmDialog.open(
-                dlogTitle, dlogMessage,
-                {
-                    barcode : copy.barcode,
-                    status : status.name(),
-                    ok : function () {},
-                    cancel : function () {}
-                }
-            ).result.then(function() {
-                return service.mark_item(copy, status, args);
-            });
-        }
-
         // If any new back end mark_item calls are added, also add
         // them here to use them from the staff client.
         // TODO: I didn't find any JS constants for copy status.
@@ -1457,7 +1469,8 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
             req = "open-ils.circ.mark_item_discard";
             break;
         case 14:
-            // Damaged is handled elsewhere.
+            // Damaged is for handling of events. It's main handler is elsewhere.
+            req = "open-ils.circ.mark_item_damages";
             break;
         }
 
@@ -1469,7 +1482,7 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
             args
         ).then(function(resp) {
             if (evt = egCore.evt.parse(resp)) {
-                return handle_event(copy, markstatus, args, evt);
+                return service.handle_mark_item_event(copy, markstatus, args, evt);
             }
         });
     }