From ee97a1372766e13af18709b8f6df400e31a902a0 Mon Sep 17 00:00:00 2001 From: pines Date: Fri, 25 Aug 2006 15:16:04 +0000 Subject: [PATCH] non cat in house use git-svn-id: svn://svn.open-ils.org/ILS/trunk@5672 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../staff_client/chrome/content/main/constants.js | 1 + .../xul/staff_client/server/circ/in_house_use.js | 87 ++++++++++++++++++---- .../xul/staff_client/server/circ/in_house_use.xul | 5 +- 3 files changed, 76 insertions(+), 17 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/main/constants.js b/Open-ILS/xul/staff_client/chrome/content/main/constants.js index dd3ed39670..b4ff345bf6 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/constants.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/constants.js @@ -65,6 +65,7 @@ const api = { 'FM_AIHU_CREATE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.in_house_use.create' }, 'FM_ANCC_RETRIEVE_VIA_ID' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.non_cataloged_circulation.retrieve' }, 'FM_ANCC_RETRIEVE_VIA_USER' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.open_non_cataloged_circulation.user' }, + 'FM_ANCIHU_CREATE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.non_cat_in_house_use.create' }, 'FM_AOA_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.address.retrieve' }, 'FM_AOU_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_tree.retrieve' }, 'FM_AOU_RETRIEVE_RELATED_VIA_SESSION' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.full_path.retrieve' }, diff --git a/Open-ILS/xul/staff_client/server/circ/in_house_use.js b/Open-ILS/xul/staff_client/server/circ/in_house_use.js index 5773ae6f6f..1fac7bd261 100644 --- a/Open-ILS/xul/staff_client/server/circ/in_house_use.js +++ b/Open-ILS/xul/staff_client/server/circ/in_house_use.js @@ -48,6 +48,50 @@ circ.in_house_use.prototype = { ['command'], function() { obj.list.clipboard(); } ], + 'in_house_use_menu_placeholder' : [ + ['render'], + function(e) { + return function() { + JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils'); + var items = [ [ 'Barcode:' , 'barcode' ] ].concat( + util.functional.map_list( + util.functional.filter_list( + obj.data.list.cnct, + function(o) { + return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), obj.data.list.au[0].ws_ou()); + } + ), + function(o) { + return [ o.name(), o.id() ]; + } + ).sort() + ); + g.error.sdump('D_TRACE','items = ' + js2JSON(items)); + util.widgets.remove_children( e ); + var ml = util.widgets.make_menulist( + items + ); + e.appendChild( ml ); + ml.setAttribute('id','in_house_use_menulist'); + ml.setAttribute('accesskey',''); + ml.addEventListener( + 'command', + function(ev) { + var tb = obj.controller.view.in_house_use_barcode_entry_textbox; + if (ev.target.value == 'barcode') { + tb.disabled = false; + tb.value = ''; + tb.focus(); + } else { + tb.disabled = true; + tb.value = 'Non-Cataloged'; + } + }, false + ); + obj.controller.view.in_house_use_menu = ml; + }; + }, + ], 'in_house_use_barcode_entry_textbox' : [ ['keypress'], function(ev) { @@ -142,7 +186,13 @@ circ.in_house_use.prototype = { 'in_house_use' : function() { var obj = this; try { - var barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value; + var barcode; + if (obj.controller.view.in_house_use_menu.value == '' || obj.controller.view.in_house_use_menu.value == 'barcode') { + barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value; + } else { + barcode = ( obj.controller.view.in_house_use_menu.value ); + //barcode = obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name() + } var multiplier = Number( obj.controller.view.in_house_use_multiplier_textbox.value ); if (barcode == '') { @@ -167,20 +217,30 @@ circ.in_house_use.prototype = { JSAN.use('circ.util'); - var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]); - if (copy.ilsevent) { - switch(copy.ilsevent) { - case -1 : obj.error.standard_network_error_alert('In House Use Failed. If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface'); break; - case 1502: obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break; - default: throw(copy); + if (obj.controller.view.in_house_use_menu.value == 'barcode') { + + var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]); + if (copy.ilsevent) { + switch(copy.ilsevent) { + case -1 : obj.error.standard_network_error_alert('In House Use Failed. If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface'); break; + case 1502 /* ASSET_COPY_NOT_FOUND */ : obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break; + default: throw(copy); + } + return; } - return; - } + + var mods = obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY',[ copy.id() ]); + var result = obj.network.simple_request('FM_AIHU_CREATE', + [ ses(), { 'copyid' : copy.id(), 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ] + ); - var mods = obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY',[ copy.id() ]); - var result = obj.network.simple_request('FM_AIHU_CREATE', - [ ses(), { 'copyid' : copy.id(), 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ] - ); + } else { + var result = obj.network.simple_request('FM_ANCIHU_CREATE', + [ ses(), { 'non_cat_type' : obj.controller.view.in_house_use_menu.value, 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ] + ); + mods = new mvr(); mods.title( obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name()); + copy = new acp(); copy.barcode( '' ); + } obj.list.append( { @@ -194,6 +254,7 @@ circ.in_house_use.prototype = { //I could override map_row_to_column here } ); + if (typeof obj.on_in_house_use == 'function') { obj.on_in_house_use(result); } diff --git a/Open-ILS/xul/staff_client/server/circ/in_house_use.xul b/Open-ILS/xul/staff_client/server/circ/in_house_use.xul index 2997ec4e7a..679a381520 100644 --- a/Open-ILS/xul/staff_client/server/circ/in_house_use.xul +++ b/Open-ILS/xul/staff_client/server/circ/in_house_use.xul @@ -82,10 +82,7 @@