From 9d1118fae7546d61707c3ff4a22ed6eea06244d0 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Sat, 27 Oct 2018 09:25:13 -0400 Subject: [PATCH] Modify mark_damaged to use handle_mark_item_event and more. --- .../templates/staff/circ/share/circ_strings.tt2 | 1 + .../web/js/ui/default/staff/circ/services/circ.js | 133 +++++++++++---------- 2 files changed, 74 insertions(+), 60 deletions(-) diff --git a/Open-ILS/src/templates/staff/circ/share/circ_strings.tt2 b/Open-ILS/src/templates/staff/circ/share/circ_strings.tt2 index 1ee2ab82e5..e5b1e1bce8 100644 --- a/Open-ILS/src/templates/staff/circ/share/circ_strings.tt2 +++ b/Open-ILS/src/templates/staff/circ/share/circ_strings.tt2 @@ -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") %]'; diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js index 92d7c7952c..3a07c8131f 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js +++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js @@ -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); } }); } -- 2.11.0