]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/picklist/upload.js
added a marc order record upload form for creating picklists and/or purchase orders...
[Evergreen.git] / Open-ILS / web / js / ui / default / acq / picklist / upload.js
1 dojo.require('dojo.data.ItemFileReadStore');
2 dojo.require('dijit.ProgressBar');
3 dojo.require('dijit.form.CheckBox');
4 dojo.require('dijit.form.TextBox');
5 dojo.require('dijit.form.FilteringSelect');
6 dojo.require('dijit.form.ComboBox');
7 dojo.require('dijit.form.Button');
8 dojo.require("dojo.io.iframe");
9 dojo.require('openils.User');
10 dojo.require('openils.widget.AutoFieldWidget');
11 dojo.require('openils.acq.Picklist');
12
13 var VANDELAY_URL = '/vandelay-upload';
14 var providerWidget;
15 var orderAgencyWidget;
16
17 function init() {
18     dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken;
19
20     new openils.widget.AutoFieldWidget({
21         fmClass : 'acqpo',
22         fmField : 'provider',
23         limitPerms : ['CREATE_PICKLIST'],
24         parentNode : dojo.byId('acq-pl-upload-provider'),
25     }).build(
26         function(w) { providerWidget = w }
27     );
28
29     new openils.widget.AutoFieldWidget({
30         fmClass : 'acqpo',
31         fmField : 'ordering_agency',
32         limitPerms : ['CREATE_PURCHASE_ORDER'],
33         parentNode : dojo.byId('acq-pl-upload-agency'),
34     }).build(
35         function(w) { orderAgencyWidget = w }
36     );
37
38     fieldmapper.standardRequest(
39         ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
40         {   async: true,
41             params: [openils.User.authtoken], 
42             oncomplete : function(r) {
43                 var list = openils.Util.readResponse(r);
44                 acqPlUploadPlSelector.store = 
45                     new dojo.data.ItemFileReadStore({data:acqpl.toStoreData(list)});
46             }
47         }
48     );
49 }
50
51 function acqUploadRecords() {
52     openils.Util.show('acq-pl-upload-progress');
53     var picklist = acqPlUploadPlSelector.attr('value');
54     if(picklist) {
55         // ComboBox value is the display string.  find the actual picklist
56         // and create a new one if necessary
57         acqPlUploadPlSelector.store.fetch({
58             query : {name:picklist}, 
59             onComplete : function(items) {
60                 if(items.length == 0) {
61                     // create a new picklist for these items
62                     openils.acq.Picklist.create(
63                         {name:picklist, org_unit: orderAgencyWidget.attr('value')},
64                         function(plId) { acqSendUploadForm({picklist:plId}) }
65                     );
66                 } else {
67                     acqSendUploadForm({picklist:items[0].id});
68                 }
69             }
70         });
71     } else {
72         acqSendUploadForm({});
73     }
74 }
75
76 function acqSendUploadForm(args) {
77     dojo.io.iframe.send({
78         url: VANDELAY_URL,
79         method: "post",
80         handleAs: "html",
81         form: dojo.byId('acq-pl-upload-form'),
82         content : {
83             picklist : args.picklist,
84             provider : providerWidget.attr('value'),
85             ordering_agency : orderAgencyWidget.attr('value')
86         },
87         handle: function(data, ioArgs){
88             acqHandlePostUpload(data.documentElement.textContent);
89         }
90     });
91 }
92
93
94 function acqHandlePostUpload(key) {
95     openils.Util.hide('acq-pl-upload-progress');
96     fieldmapper.standardRequest(
97         ['open-ils.acq', 'open-ils.acq.process_upload_records'],
98         {   async: true,
99             params: [openils.User.authtoken, key],
100             onresponse : function(r) {
101                 var resp = openils.Util.readResponse(r);
102                 if(resp.complete) {
103                     if(resp.picklist) {
104                         location.href = location.href + '/../view/' + resp.picklist.id();
105                     } else {
106                         location.href = location.href + '/../../po/view/' + resp.purchase_order.id;
107                     }
108                 } else {
109                     dojo.byId('acq-pl-upload-count').innerHTML = resp.count;
110                 }
111             },
112         }
113     );
114 }
115
116
117 openils.Util.addOnLoad(init);
118