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;
27 new openils.widget.AutoFieldWidget({
30 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
31 parentNode : dojo.byId('acq-pl-upload-provider'),
33 function(w) { providerWidget = w }
36 new openils.widget.AutoFieldWidget({
38 fmField : 'ordering_agency',
39 orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
40 parentNode : dojo.byId('acq-pl-upload-agency'),
44 dojo.connect(orderAgencyWidget, 'onChange', setDefaultFiscalYear);
48 vlAgent = new VLAgent();
51 fieldmapper.standardRequest(
52 ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
54 params: [openils.User.authtoken],
55 oncomplete : function(r) {
56 var list = openils.Util.readResponse(r);
57 acqPlUploadPlSelector.store =
58 new dojo.data.ItemFileWriteStore({data:acqpl.toStoreData(list)});
64 function setDefaultFiscalYear(org) {
65 org = org || orderAgencyWidget.attr('value');
69 fieldmapper.standardRequest(
70 ['open-ils.acq', 'open-ils.acq.org_unit.current_fiscal_year'],
71 { params : [openils.User.authtoken, org],
73 oncomplete : function(r) {
74 var year = openils.Util.readResponse(r);
75 acqUploadYearSelector.attr('value', year);
82 function acqUploadRecords() {
83 openils.Util.show('acq-pl-upload-progress');
84 var picklist = acqPlUploadPlSelector.attr('value');
86 // ComboBox value is the display string. find the actual picklist
87 // and create a new one if necessary
88 acqPlUploadPlSelector.store.fetch({
89 query : {name:picklist},
90 onComplete : function(items) {
91 if(items.length == 0) {
92 // create a new picklist for these items
94 openils.acq.Picklist.create(
95 {name:picklist, org_unit: orderAgencyWidget.attr('value')},
96 function(plId) { acqSendUploadForm({picklist:plId}) }
100 acqSendUploadForm({picklist:items[0].id[0]});
105 acqSendUploadForm({picklist:null});
109 function acqSendUploadForm(args) {
110 dojo.io.iframe.send({
114 form: dojo.byId('acq-pl-upload-form'),
115 handle: function(data, ioArgs){
116 acqHandlePostUpload(data.documentElement.textContent, args.picklist);
122 function acqHandlePostUpload(key, plId) {
126 provider : providerWidget.attr('value'),
127 ordering_agency : orderAgencyWidget.attr('value'),
128 create_po : acqPlUploadCreatePo.attr('value'),
129 activate_po : acqPlUploadActivatePo.attr('value'),
130 vandelay : vlAgent.values(),
131 fiscal_year : acqUploadYearSelector.attr('value')
134 fieldmapper.standardRequest(
135 ['open-ils.acq', 'open-ils.acq.process_upload_records'],
137 params: [openils.User.authtoken, key, args],
138 onresponse : function(r) {
140 vlAgent.handleResponse(
141 openils.Util.readResponse(r),
142 function(resp, res) {
144 openils.Util.hide('acq-pl-upload-complete-pl');
145 openils.Util.hide('acq-pl-upload-complete-po');
146 openils.Util.hide('acq-pl-upload-complete-q');
147 openils.Util.hide('acq-pl-upload-progress-bar');
148 openils.Util.show('acq-pl-upload-complete');
150 function activateLink(link, url, name) {
151 link = dojo.byId(link);
152 openils.Util.show(link);
153 if (name) link.innerHTML = name;
154 if (typeof xulG == 'undefined') { // browser
155 link.setAttribute('href', url);
157 link.setAttribute('href', 'javascript:;'); // for linky-ness
158 link.onclick = function() { openils.XUL.newTabEasy(url, null, null, true) };
162 if(res.picklist_url) {
163 activateLink('acq-pl-upload-complete-pl', res.picklist_url);
165 // if the user entered a new picklist, refetch the set to pick
166 // up the ID and redraw the list with the new one selected
168 var newPl = new openils.PermaCrud().retrieve('acqpl', resp.picklist.id());
169 acqPlUploadPlSelector.store.newItem(newPl.toStoreItem());
170 acqPlUploadPlSelector.attr('value', newPl.name());
175 activateLink('acq-pl-upload-complete-po', res.po_url);
179 activateLink('acq-pl-upload-complete-q', res.queue_url);
188 function loadYearSelector() {
190 fieldmapper.standardRequest(
191 ['open-ils.acq', 'open-ils.acq.fund.org.years.retrieve'],
193 params : [openils.User.authtoken, {}, {limit_perm : 'VIEW_FUND'}],
194 oncomplete : function(r) {
196 var yearList = openils.Util.readResponse(r);
197 if(!yearList) return;
198 yearList = yearList.map(function(year){return {year:year+''};}); // dojo wants strings
200 var yearStore = {identifier:'year', name:'year', items:yearList};
201 yearStore.items = yearStore.items.sort().reverse();
202 acqUploadYearSelector.store = new dojo.data.ItemFileReadStore({data:yearStore});
204 // until an ordering agency is selected, default to the
205 // fiscal year of the workstation
206 setDefaultFiscalYear(new openils.User().user.ws_ou());
214 openils.Util.addOnLoad(init);