1 dojo.require('dojo.data.ItemFileReadStore');
2 dojo.require('dojo.data.ItemFileWriteStore');
3 dojo.require('dijit.ProgressBar');
4 dojo.require('dijit.form.CheckBox');
5 dojo.require('dijit.form.TextBox');
6 dojo.require('dijit.form.FilteringSelect');
7 dojo.require('dijit.form.ComboBox');
8 dojo.require('dijit.form.Button');
9 dojo.require("dojo.io.iframe");
10 dojo.require('openils.User');
11 dojo.require('openils.widget.AutoFieldWidget');
12 dojo.require('openils.acq.Picklist');
13 dojo.require('openils.XUL');
14 dojo.require('openils.PermaCrud');
16 var VANDELAY_URL = '/vandelay-upload';
18 var orderAgencyWidget;
20 var usingNewPl = false;
23 dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken;
25 new openils.widget.AutoFieldWidget({
28 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
29 parentNode : dojo.byId('acq-pl-upload-provider'),
31 function(w) { providerWidget = w }
34 new openils.widget.AutoFieldWidget({
36 fmField : 'ordering_agency',
37 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
38 parentNode : dojo.byId('acq-pl-upload-agency'),
40 function(w) { orderAgencyWidget = w }
43 vlAgent = new VLAgent();
46 fieldmapper.standardRequest(
47 ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
49 params: [openils.User.authtoken],
50 oncomplete : function(r) {
51 var list = openils.Util.readResponse(r);
52 acqPlUploadPlSelector.store =
53 new dojo.data.ItemFileWriteStore({data:acqpl.toStoreData(list)});
59 function acqUploadRecords() {
60 openils.Util.show('acq-pl-upload-progress');
61 var picklist = acqPlUploadPlSelector.attr('value');
63 // ComboBox value is the display string. find the actual picklist
64 // and create a new one if necessary
65 acqPlUploadPlSelector.store.fetch({
66 query : {name:picklist},
67 onComplete : function(items) {
68 if(items.length == 0) {
69 // create a new picklist for these items
71 openils.acq.Picklist.create(
72 {name:picklist, org_unit: orderAgencyWidget.attr('value')},
73 function(plId) { acqSendUploadForm({picklist:plId}) }
77 acqSendUploadForm({picklist:items[0].id[0]});
82 acqSendUploadForm({picklist:null});
86 function acqSendUploadForm(args) {
91 form: dojo.byId('acq-pl-upload-form'),
92 handle: function(data, ioArgs){
93 acqHandlePostUpload(data.documentElement.textContent, args.picklist);
99 function acqHandlePostUpload(key, plId) {
103 provider : providerWidget.attr('value'),
104 ordering_agency : orderAgencyWidget.attr('value'),
105 create_po : acqPlUploadCreatePo.attr('value'),
106 activate_po : acqPlUploadActivatePo.attr('value'),
107 vandelay : vlAgent.values()
110 fieldmapper.standardRequest(
111 ['open-ils.acq', 'open-ils.acq.process_upload_records'],
113 params: [openils.User.authtoken, key, args],
114 onresponse : function(r) {
116 vlAgent.handleResponse(
117 openils.Util.readResponse(r),
118 function(resp, res) {
120 openils.Util.hide('acq-pl-upload-complete-pl');
121 openils.Util.hide('acq-pl-upload-complete-po');
122 openils.Util.hide('acq-pl-upload-complete-q');
123 openils.Util.hide('acq-pl-upload-progress-bar');
124 openils.Util.show('acq-pl-upload-complete');
126 function activateLink(link, url, name) {
127 link = dojo.byId(link);
128 openils.Util.show(link);
129 if (name) link.innerHTML = name;
130 if (typeof xulG == 'undefined') { // browser
131 link.setAttribute('href', url);
133 link.setAttribute('href', 'javascript:;'); // for linky-ness
134 link.onclick = function() { openils.XUL.newTabEasy(url, null, null, true) };
138 if(res.picklist_url) {
139 activateLink('acq-pl-upload-complete-pl', res.picklist_url);
141 // if the user entered a new picklist, refetch the set to pick
142 // up the ID and redraw the list with the new one selected
144 var newPl = new openils.PermaCrud().retrieve('acqpl', resp.picklist.id());
145 acqPlUploadPlSelector.store.newItem(newPl.toStoreItem());
146 acqPlUploadPlSelector.attr('value', newPl.name());
151 activateLink('acq-pl-upload-complete-po', res.po_url);
155 activateLink('acq-pl-upload-complete-q', res.queue_url, resp.queue.name());
165 openils.Util.addOnLoad(init);