'FM_BLOB_RETRIEVE_VIA_Z3950_SEARCH' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.z3950.search_class' },
'FM_BLOB_RETRIEVE_VIA_Z3950_RAW_SEARCH' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.z3950.search_service' },
'RETRIEVE_Z3950_SERVICES' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.z3950.retrieve_services' },
+ 'MARK_ITEM_DAMAGED' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.mark_item_damaged' },
+ 'MARK_ITEM_MISSING' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.mark_item_missing' },
'MARK_ITEM_LOST' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.circulation.set_lost' },
'MARK_ITEM_CLAIM_RETURNED' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.circulation.set_claims_returned' },
'MODS_SLIM_METARECORD_RETRIEVE' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.biblio.metarecord.mods_slim.retrieve' },
cat.util = {};
cat.util.EXPORT_OK = [
- 'spawn_copy_editor', 'add_copies_to_bucket', 'show_in_opac', 'spawn_spine_editor', 'transfer_copies',
+ 'spawn_copy_editor', 'add_copies_to_bucket', 'show_in_opac', 'spawn_spine_editor', 'transfer_copies',
+ 'mark_item_missing', 'mark_item_damaged',
];
cat.util.EXPORT_TAGS = { ':all' : cat.util.EXPORT_OK };
}
}
+cat.util.mark_item_damaged = function(copy_ids) {
+ var error;
+ try {
+ JSAN.use('util.error'); error = new util.error();
+ JSAN.use('util.functional');
+ JSAN.use('util.network'); var network = new util.network();
+ var copies = network.simple_request('FM_ACP_FLESHED_BATCH_RETRIEVE', [ copy_ids ]);
+ if (typeof copies.ilsevent != 'undefined') throw(copies);
+ var magic_status = false;
+ for (var i = 0; i < copies.length; i++) {
+ var status = copies[i].status(); if (typeof status == 'object') status = status.id();
+ if (typeof my_constants.magical_statuses[ status ] != 'undefined') magic_status = true;
+ }
+ if (magic_status) {
+
+ error.yns_alert('Action failed. One or more of these items is in a special status (Checked Out, In Transit, etc.) and cannot be changed to the Damaged status.','Action failed.','OK',null,null,'Check here to confirm this message');
+
+ } else {
+
+ var r = error.yns_alert('Change the status for these items to Damaged? You will have to manually retrieve the last circulation if you need to bill a patron. Barcodes: ' + util.functional.map_list( copies, function(o) { return o.barcode(); } ).join(", "), 'Mark Damaged', 'OK', 'Cancel', null, 'Check here to confirm this action');
+
+ if (r == 0) {
+ var count = 0;
+ for (var i = 0; i < copies.length; i++) {
+ try {
+ var robj = network.simple_request('MARK_ITEM_DAMAGED',[ses(),copies[i].id()]);
+ if (typeof robj.ilsevent != 'undefined') throw(robj);
+ count++;
+ } catch(E) {
+ error.standard_unexpected_error_alert('Error marking item ' + copies[i].barcode() + ' damaged.',E);
+ }
+ }
+ alert(count == 1 ? 'Item marked Damaged' : count + ' items marked Damaged.');
+ }
+ }
+
+ } catch(E) {
+ if (error) error.standard_unexpected_error_alert('cat.util.mark_item_damaged',E); else alert('FIXME: ' + E);
+ }
+}
+
+cat.util.mark_item_missing = function(copy_ids) {
+ var error;
+ try {
+ JSAN.use('util.error'); error = new util.error();
+ JSAN.use('util.functional');
+ JSAN.use('util.network'); var network = new util.network();
+ var copies = network.simple_request('FM_ACP_FLESHED_BATCH_RETRIEVE', [ copy_ids ]);
+ if (typeof copies.ilsevent != 'undefined') throw(copies);
+ var magic_status = false;
+ for (var i = 0; i < copies.length; i++) {
+ var status = copies[i].status(); if (typeof status == 'object') status = status.id();
+ if (typeof my_constants.magical_statuses[ status ] != 'undefined') magic_status = true;
+ }
+ if (magic_status) {
+
+ error.yns_alert('Action failed. One or more of these items is in a special status (Checked Out, In Transit, etc.) and cannot be changed to the Missing status.','Action failed.','OK',null,null,'Check here to confirm this message');
+
+ } else {
+
+ var r = error.yns_alert('Change the status for these items to Missing? Barcodes: ' + util.functional.map_list( copies, function(o) { return o.barcode(); } ).join(", "), 'Mark Missing', 'OK', 'Cancel', null, 'Check here to confirm this action');
+
+ if (r == 0) {
+ var count = 0;
+ for (var i = 0; i < copies.length; i++) {
+ try {
+ var robj = network.simple_request('MARK_ITEM_MISSING',[ses(),copies[i].id()]);
+ if (typeof robj.ilsevent != 'undefined') throw(robj);
+ count++;
+ } catch(E) {
+ error.standard_unexpected_error_alert('Error marking item ' + copies[i].barcode() + ' missing.',E);
+ }
+ }
+ alert(count == 1 ? 'Item marked Missing' : count + ' items marked Missing.');
+ }
+ }
+
+ } catch(E) {
+ if (error) error.standard_unexpected_error_alert('cat.util.mark_item_missing',E); else alert('FIXME: ' + E);
+ }
+}
+
+
dump('exiting cat/util.js\n');
obj.controller.view.sel_opac.setAttribute('disabled','true');
obj.controller.view.sel_bucket.setAttribute('disabled','true');
obj.controller.view.sel_copy_details.setAttribute('disabled','true');
+ obj.controller.view.sel_mark_items_damaged.setAttribute('disabled','true');
+ obj.controller.view.sel_mark_items_missing.setAttribute('disabled','true');
obj.controller.view.sel_patron.setAttribute('disabled','true');
obj.controller.view.sel_spine.setAttribute('disabled','true');
obj.controller.view.sel_transit_abort.setAttribute('disabled','true');
obj.controller.view.sel_patron.setAttribute('disabled','false');
obj.controller.view.sel_bucket.setAttribute('disabled','false');
obj.controller.view.sel_copy_details.setAttribute('disabled','false');
+ obj.controller.view.sel_mark_items_damaged.setAttribute('disabled','false');
+ obj.controller.view.sel_mark_items_missing.setAttribute('disabled','false');
obj.controller.view.sel_spine.setAttribute('disabled','false');
obj.controller.view.sel_transit_abort.setAttribute('disabled','false');
obj.controller.view.sel_clip.setAttribute('disabled','false');
}
}
],
+ 'sel_mark_items_damaged' : [
+ ['command'],
+ function() {
+ JSAN.use('cat.util'); JSAN.use('util.functional');
+ cat.util.mark_item_damaged( util.functional.map_list( obj.selection_list, function(o) { return o.copy_id; } ) );
+ }
+ ],
+ 'sel_mark_items_missing' : [
+ ['command'],
+ function() {
+ JSAN.use('cat.util'); JSAN.use('util.functional');
+ cat.util.mark_item_missing( util.functional.map_list( obj.selection_list, function(o) { return o.copy_id; } ) );
+ }
+ ],
'sel_bucket' : [
['command'],
function() {
<command id="cmd_copy_status_done" />
<command id="save_columns" />
<command id="sel_copy_details" disabled="true"/>
+ <command id="sel_mark_items_damaged" disabled="true"/>
+ <command id="sel_mark_items_missing" disabled="true"/>
<command id="sel_patron" disabled="true"/>
<command id="sel_checkin" disabled="true"/>
<command id="sel_edit" disabled="true"/>
<menuitem command="sel_opac" label="Show in Catalog" accesskey="S" />
<menuitem command="sel_copy_details" label="Show Item Details" accesskey="I" />
<menuitem command="sel_patron" label="Show Last Few Circulations" accesskey="L"/>
+ <menuitem command="sel_mark_items_damaged" label="Mark Item Damaged" accesskey="D"/>
+ <menuitem command="sel_mark_items_missing" label="Mark Item Missing" accesskey="M"/>
<menuitem command="sel_edit" label="Edit Item Attributes" accesskey="E" />
<menuitem command="sel_transit_abort" label="Abort Transits" />
<menuitem command="sel_bucket" label="Add to Item Bucket" accesskey="A"/>
<menuitem command="sel_opac" label="Show in Catalog" accesskey="S" />
<menuitem command="sel_copy_details" label="Show Item Details" accesskey="I" />
<menuitem command="sel_patron" label="Show Last Few Circulations" accesskey="L"/>
+ <menuitem command="sel_mark_items_damaged" label="Mark Item Damaged" accesskey="D"/>
+ <menuitem command="sel_mark_items_missing" label="Mark Item Missing" accesskey="M"/>
<menuitem command="sel_edit" label="Edit Item Attributes" accesskey="E" />
<menuitem command="sel_transit_abort" label="Abort Transits" />
<menuitem command="sel_bucket" label="Add to Item Bucket" accesskey="A"/>