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);
}).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.
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;
}
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);
}
});
}