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;
24 vlAgent = new VLAgent();
32 new openils.widget.AutoFieldWidget({
35 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
36 parentNode : dojo.byId('acq-pl-upload-provider'),
40 vlAgent.readCachedValue(w, 'provider', true);
44 new openils.widget.AutoFieldWidget({
46 fmField : 'ordering_agency',
47 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
48 parentNode : dojo.byId('acq-pl-upload-agency'),
52 vlAgent.readCachedValue(w, 'ordering_agency');
53 dojo.connect(orderAgencyWidget, 'onChange', setDefaultFiscalYear);
57 vlAgent.readCachedValue(acqPlUploadCreatePo, 'create_po');
58 vlAgent.readCachedValue(acqPlUploadActivatePo, 'activate_po');
60 fieldmapper.standardRequest(
61 ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
63 params: [openils.User.authtoken],
64 oncomplete : function(r) {
65 var list = openils.Util.readResponse(r);
66 acqPlUploadPlSelector.store =
67 new dojo.data.ItemFileWriteStore({data:acqpl.toStoreData(list)});
73 function setDefaultFiscalYear(org) {
74 org = org || orderAgencyWidget.attr('value');
76 // NOTE: Evergreen does not yet offer an interface for managing
77 // fiscal years. For now, make the fiscal year selector persistant
78 vlAgent.readCachedValue(acqUploadYearSelector, 'fiscal_year');
83 fieldmapper.standardRequest(
84 ['open-ils.acq', 'open-ils.acq.org_unit.current_fiscal_year'],
85 { params : [openils.User.authtoken, org],
87 oncomplete : function(r) {
88 var year = openils.Util.readResponse(r);
89 acqUploadYearSelector.attr('value', year);
96 function acqUploadRecords() {
98 // persist widget values
99 vlAgent.writeCachedValue(acqPlUploadCreatePo, 'create_po');
100 vlAgent.writeCachedValue(acqPlUploadActivatePo, 'activate_po');
101 vlAgent.writeCachedValue(providerWidget, 'provider');
102 vlAgent.writeCachedValue(orderAgencyWidget, 'ordering_agency');
103 vlAgent.writeCachedValue(acqUploadYearSelector, 'fiscal_year');
105 openils.Util.show('acq-pl-upload-progress');
106 var picklist = acqPlUploadPlSelector.attr('value');
108 // ComboBox value is the display string. find the actual picklist
109 // and create a new one if necessary
110 acqPlUploadPlSelector.store.fetch({
111 query : {name:picklist},
112 onComplete : function(items) {
113 if(items.length == 0) {
114 // create a new picklist for these items
116 openils.acq.Picklist.create(
117 {name:picklist, org_unit: orderAgencyWidget.attr('value')},
118 function(plId) { acqSendUploadForm({picklist:plId}) }
122 acqSendUploadForm({picklist:items[0].id[0]});
127 acqSendUploadForm({picklist:null});
131 function acqSendUploadForm(args) {
132 dojo.io.iframe.send({
136 form: dojo.byId('acq-pl-upload-form'),
137 handle: function(data, ioArgs){
138 acqHandlePostUpload(data.documentElement.textContent, args.picklist);
144 function acqHandlePostUpload(key, plId) {
148 provider : providerWidget.attr('value'),
149 ordering_agency : orderAgencyWidget.attr('value'),
150 create_po : acqPlUploadCreatePo.attr('value'),
151 activate_po : acqPlUploadActivatePo.attr('value'),
152 vandelay : vlAgent.values(),
153 fiscal_year : acqUploadYearSelector.attr('value')
156 fieldmapper.standardRequest(
157 ['open-ils.acq', 'open-ils.acq.process_upload_records'],
159 params: [openils.User.authtoken, key, args],
160 onresponse : function(r) {
162 vlAgent.handleResponse(
163 openils.Util.readResponse(r),
164 function(resp, res) {
166 openils.Util.hide('acq-pl-upload-complete-pl');
167 openils.Util.hide('acq-pl-upload-complete-po');
168 openils.Util.hide('acq-pl-upload-complete-q');
169 openils.Util.hide('acq-pl-upload-progress-bar');
170 openils.Util.show('acq-pl-upload-complete');
172 function activateLink(link, url, name) {
173 link = dojo.byId(link);
174 openils.Util.show(link);
175 if (name) link.innerHTML = name;
176 if (typeof xulG == 'undefined') { // browser
177 link.setAttribute('href', url);
179 link.setAttribute('href', 'javascript:;'); // for linky-ness
180 link.onclick = function() { openils.XUL.newTabEasy(url, null, null, true) };
184 if(res.picklist_url) {
185 activateLink('acq-pl-upload-complete-pl', res.picklist_url);
187 // if the user entered a new picklist, refetch the set to pick
188 // up the ID and redraw the list with the new one selected
190 var newPl = new openils.PermaCrud().retrieve('acqpl', resp.picklist.id());
191 acqPlUploadPlSelector.store.newItem(newPl.toStoreItem());
192 acqPlUploadPlSelector.attr('value', newPl.name());
197 activateLink('acq-pl-upload-complete-po', res.po_url);
201 activateLink('acq-pl-upload-complete-q', res.queue_url);
210 function loadYearSelector() {
212 fieldmapper.standardRequest(
213 ['open-ils.acq', 'open-ils.acq.fund.org.years.retrieve'],
215 params : [openils.User.authtoken, {}, {limit_perm : 'VIEW_FUND'}],
216 oncomplete : function(r) {
218 var yearList = openils.Util.readResponse(r);
219 if(!yearList) return;
220 yearList = yearList.map(function(year){return {year:year+''};}); // dojo wants strings
222 var yearStore = {identifier:'year', name:'year', items:yearList};
223 acqUploadYearSelector.store = new dojo.data.ItemFileReadStore({data:yearStore});
225 // until an ordering agency is selected, default to the
226 // fiscal year of the workstation
227 setDefaultFiscalYear(new openils.User().user.ws_ou());
235 openils.Util.addOnLoad(init);