From 49f52505f96cf1a6b5104d57db25e3589eb75e5e Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 24 Mar 2009 20:50:01 +0000 Subject: [PATCH] added a marc order record upload form for creating picklists and/or purchase orders from vendor records git-svn-id: svn://svn.open-ils.org/ILS/trunk@12658 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/css/skin/default.css | 3 + Open-ILS/web/js/ui/default/acq/picklist/upload.js | 118 +++++++++++++++++++++ .../web/templates/default/acq/picklist/upload.tt2 | 51 +++++++++ Open-ILS/web/templates/default/menu.tt2 | 4 + 4 files changed, 176 insertions(+) create mode 100644 Open-ILS/web/js/ui/default/acq/picklist/upload.js create mode 100644 Open-ILS/web/templates/default/acq/picklist/upload.tt2 diff --git a/Open-ILS/web/css/skin/default.css b/Open-ILS/web/css/skin/default.css index bb7f771c43..e7fceb5717 100644 --- a/Open-ILS/web/css/skin/default.css +++ b/Open-ILS/web/css/skin/default.css @@ -50,6 +50,9 @@ table { border-collapse: collapse; } .label { margin: 1px; } +.oils-generic-table th { padding:5px; font-weight: bold; } +.oils-generic-table td { padding:5px; } + /* local dojo style enhancements ----------------------------------- */ /* diff --git a/Open-ILS/web/js/ui/default/acq/picklist/upload.js b/Open-ILS/web/js/ui/default/acq/picklist/upload.js new file mode 100644 index 0000000000..d272854280 --- /dev/null +++ b/Open-ILS/web/js/ui/default/acq/picklist/upload.js @@ -0,0 +1,118 @@ +dojo.require('dojo.data.ItemFileReadStore'); +dojo.require('dijit.ProgressBar'); +dojo.require('dijit.form.CheckBox'); +dojo.require('dijit.form.TextBox'); +dojo.require('dijit.form.FilteringSelect'); +dojo.require('dijit.form.ComboBox'); +dojo.require('dijit.form.Button'); +dojo.require("dojo.io.iframe"); +dojo.require('openils.User'); +dojo.require('openils.widget.AutoFieldWidget'); +dojo.require('openils.acq.Picklist'); + +var VANDELAY_URL = '/vandelay-upload'; +var providerWidget; +var orderAgencyWidget; + +function init() { + dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken; + + new openils.widget.AutoFieldWidget({ + fmClass : 'acqpo', + fmField : 'provider', + limitPerms : ['CREATE_PICKLIST'], + parentNode : dojo.byId('acq-pl-upload-provider'), + }).build( + function(w) { providerWidget = w } + ); + + new openils.widget.AutoFieldWidget({ + fmClass : 'acqpo', + fmField : 'ordering_agency', + limitPerms : ['CREATE_PURCHASE_ORDER'], + parentNode : dojo.byId('acq-pl-upload-agency'), + }).build( + function(w) { orderAgencyWidget = w } + ); + + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'], + { async: true, + params: [openils.User.authtoken], + oncomplete : function(r) { + var list = openils.Util.readResponse(r); + acqPlUploadPlSelector.store = + new dojo.data.ItemFileReadStore({data:acqpl.toStoreData(list)}); + } + } + ); +} + +function acqUploadRecords() { + openils.Util.show('acq-pl-upload-progress'); + var picklist = acqPlUploadPlSelector.attr('value'); + if(picklist) { + // ComboBox value is the display string. find the actual picklist + // and create a new one if necessary + acqPlUploadPlSelector.store.fetch({ + query : {name:picklist}, + onComplete : function(items) { + if(items.length == 0) { + // create a new picklist for these items + openils.acq.Picklist.create( + {name:picklist, org_unit: orderAgencyWidget.attr('value')}, + function(plId) { acqSendUploadForm({picklist:plId}) } + ); + } else { + acqSendUploadForm({picklist:items[0].id}); + } + } + }); + } else { + acqSendUploadForm({}); + } +} + +function acqSendUploadForm(args) { + dojo.io.iframe.send({ + url: VANDELAY_URL, + method: "post", + handleAs: "html", + form: dojo.byId('acq-pl-upload-form'), + content : { + picklist : args.picklist, + provider : providerWidget.attr('value'), + ordering_agency : orderAgencyWidget.attr('value') + }, + handle: function(data, ioArgs){ + acqHandlePostUpload(data.documentElement.textContent); + } + }); +} + + +function acqHandlePostUpload(key) { + openils.Util.hide('acq-pl-upload-progress'); + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.process_upload_records'], + { async: true, + params: [openils.User.authtoken, key], + onresponse : function(r) { + var resp = openils.Util.readResponse(r); + if(resp.complete) { + if(resp.picklist) { + location.href = location.href + '/../view/' + resp.picklist.id(); + } else { + location.href = location.href + '/../../po/view/' + resp.purchase_order.id; + } + } else { + dojo.byId('acq-pl-upload-count').innerHTML = resp.count; + } + }, + } + ); +} + + +openils.Util.addOnLoad(init); + diff --git a/Open-ILS/web/templates/default/acq/picklist/upload.tt2 b/Open-ILS/web/templates/default/acq/picklist/upload.tt2 new file mode 100644 index 0000000000..a354469f95 --- /dev/null +++ b/Open-ILS/web/templates/default/acq/picklist/upload.tt2 @@ -0,0 +1,51 @@ +[% WRAPPER 'default/base.tt2' %] + + +

Upload


+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create Purchase Order + +
Provider
Context Org Unit
Add to Picklist + +
Records File
+ +
+ +
+
+ +
+[% END %] diff --git a/Open-ILS/web/templates/default/menu.tt2 b/Open-ILS/web/templates/default/menu.tt2 index 8aa39c9527..8282fe1af0 100644 --- a/Open-ILS/web/templates/default/menu.tt2 +++ b/Open-ILS/web/templates/default/menu.tt2 @@ -25,6 +25,10 @@ onClick="location.href = '[% ctx.base_uri %]/acq/picklist/bib_search';"> Title Search +
+ Load Records +
-- 2.11.0