1 dojo.require('fieldmapper.Fieldmapper');
2 dojo.require('dijit.ProgressBar');
3 dojo.require('dijit.form.Form');
4 dojo.require('dijit.form.TextBox');
5 dojo.require('dijit.form.CheckBox');
6 dojo.require('dijit.form.FilteringSelect');
7 dojo.require('dijit.form.Button');
8 dojo.require("dijit.Dialog");
9 dojo.require('openils.Event');
10 dojo.require('openils.Util');
11 dojo.require('openils.acq.Lineitem');
12 dojo.require('openils.acq.Provider');
13 dojo.require('openils.acq.PO');
14 dojo.require('openils.widget.OrgUnitFilteringSelect');
17 var createAssetsSelected = false;
18 var createDebitsSelected = false;
23 buildProviderSelect(providerSelector);
26 function buildProviderSelect(sel, oncomplete) {
27 openils.acq.Provider.createStore(
29 sel.store = new dojo.data.ItemFileReadStore({data:store});
38 function doSearch(values) {
40 for(var v in values) {
42 if(val != null && val != '')
46 if(values.state == 'approved')
47 dojo.style('oils-acq-li-search-po-create', 'visibility', 'visible');
49 dojo.style('oils-acq-li-search-po-create', 'visibility', 'hidden');
51 //search = [search, {limit:searchLimit, offset:searchOffset}];
52 search = [search, {}];
53 options = {clear_marc:1, flesh_attrs:1};
57 dojo.style('searchProgress', 'visibility', 'visible');
58 fieldmapper.standardRequest(
59 ['open-ils.acq', 'open-ils.acq.lineitem.search'],
61 params: [openils.User.authtoken, search, options],
62 onresponse: handleResult,
68 function handleResult(r) {
69 var result = r.recv().content();
70 searchProgress.update({maximum: searchLimit, progress: ++liReceived});
71 lineitems.push(result);
75 dojo.style('searchProgress', 'visibility', 'hidden');
76 dojo.style('oils-acq-li-search-result-grid', 'visibility', 'visible');
77 var store = new dojo.data.ItemFileWriteStore(
78 {data:jub.toStoreData(lineitems, null,
79 {virtualFields:['estimated_price', 'actual_price']})});
80 var model = new dojox.grid.data.DojoData(
81 null, store, {rowsPerPage: 20, clientSort: true, query:{id:'*'}});
82 JUBGrid.populate(liGrid, model, lineitems);
85 function createPOFromLineitems(fields) {
87 po.provider(newPOProviderSelector.getValue());
88 createAssetsSelected = fields.create_assets;
89 createDebitsSelected = fields.create_debits;
91 if(fields.which == 'selected') {
92 // find the selected lineitems
93 var selected = liGrid.selection.getSelected();
95 for(var idx = 0; idx < selected.length; idx++) {
96 var rowIdx = selected[idx];
97 var id = liGrid.model.getRow(rowIdx).id;
98 for(var i = 0; i < lineitems.length; i++) {
99 var li = lineitems[i];
100 if(li.id() == id && !li.purchase_order() && li.state() == 'approved')
101 selList.push(lineitems[i]);
108 if(selList.length == 0) return;
110 openils.acq.PO.create(po,
112 if(e = openils.Event.parse(poId))
114 updateLiList(poId, selList);
119 function updateLiList(poId, selList) {
120 _updateLiList(poId, selList, 0);
123 function checkCreateDebits(poId) {
124 if(!createDebitsSelected)
126 fieldmapper.standardRequest(
127 ['open-ils.acq', 'open-ils.acq.purchase_order.debits.create'],
129 params: [openils.User.authtoken, poId, {encumbrance:1}],
130 oncomplete : function(r) {
131 var total = r.recv().content();
132 if(e = openils.Event.parse(total))
140 function viewPO(poId) {
141 location.href = 'view/' + poId;
144 function _updateLiList(poId, selList, idx) {
145 if(idx >= selList.length) {
146 if(createAssetsSelected)
147 return createAssets(poId);
149 return checkCreateDebits(poId);
151 var li = selList[idx];
152 li.purchase_order(poId);
153 li.state('in-process');
154 new openils.acq.Lineitem({lineitem:li}).update(
156 _updateLiList(poId, selList, ++idx);
161 function createAssets(poId) {
162 searchProgress.update({progress: 0});
163 dojo.style('searchProgress', 'visibility', 'visible');
165 function onresponse(r) {
166 var stat = r.recv().content();
167 if(e = openils.Event.parse(stat))
169 searchProgress.update({maximum: stat.total, progress: stat.progress});
172 function oncomplete(r) {
173 dojo.style('searchProgress', 'visibility', 'hidden');
174 checkCreateDebits(poId);
177 fieldmapper.standardRequest(
178 ['open-ils.acq','open-ils.acq.purchase_order.assets.create'],
180 params: [openils.User.authtoken, poId],
181 onresponse : onresponse,
182 oncomplete : oncomplete
188 openils.Util.addOnLoad(drawForm);