1 dojo.require('dojo.date.locale');
2 dojo.require('dojo.date.stamp');
3 dojo.require('dijit.form.Button');
4 dojo.require('dijit.form.TextBox');
5 dojo.require('dijit.form.FilteringSelect');
6 dojo.require('dijit.form.Textarea');
7 dojo.require('dijit.ProgressBar');
8 dojo.require('openils.User');
9 dojo.require('openils.Util');
10 dojo.require('openils.acq.Lineitem');
11 dojo.require('openils.acq.PO');
12 dojo.require('openils.acq.Picklist');
13 dojo.require('openils.widget.AutoFieldWidget');
14 dojo.require('dojo.data.ItemFileReadStore');
15 dojo.require('openils.widget.ProgressDialog');
16 dojo.requireLocalization('openils.acq', 'acq');
17 var localeStrings = dojo.i18n.getLocalization('openils.acq', 'acq');
19 function AcqLiTable() {
23 this.toggleState = false;
24 this.tbody = dojo.byId('acq-lit-tbody');
26 this.authtoken = openils.User.authtoken;
27 this.rowTemplate = this.tbody.removeChild(dojo.byId('acq-lit-row'));
28 this.copyTbody = dojo.byId('acq-lit-li-details-tbody');
29 this.copyRow = this.copyTbody.removeChild(dojo.byId('acq-lit-li-details-row'));
30 this.copyBatchRow = dojo.byId('acq-lit-li-details-batch-row');
31 this.copyBatchWidgets = {};
32 this.liNotesTbody = dojo.byId('acq-lit-notes-tbody');
33 this.liNotesRow = this.liNotesTbody.removeChild(dojo.byId('acq-lit-notes-row'));
35 dojo.connect(acqLitLiActionsSelector, 'onChange',
37 self.applySelectedLiAction(this.attr('value'))
38 acqLitLiActionsSelector.attr('value', '_');
41 acqLitCreatePoSubmit.onClick = function() {
42 acqLitPoCreateDialog.hide();
43 self._createPO(acqLitPoCreateDialog.getValues());
46 acqLitSavePlButton.onClick = function() {
47 acqLitSavePlDialog.hide();
48 self._savePl(acqLitSavePlDialog.getValues());
51 dojo.byId('acq-lit-notes-new-button').onclick = function(){acqLitCreateLiNoteDialog.show();}
53 dojo.byId('acq-lit-select-toggle').onclick = function(){self.toggleSelect()};
54 dojo.byId('acq-lit-info-back-button').onclick = function(){self.show('list')};
55 dojo.byId('acq-lit-copies-back-button').onclick = function(){self.show('list')};
56 dojo.byId('acq-lit-notes-back-button').onclick = function(){self.show('list')};
58 this.reset = function() {
59 while(self.tbody.childNodes[0])
60 self.tbody.removeChild(self.tbody.childNodes[0]);
64 this.setNext = function(handler) {
65 var link = dojo.byId('acq-lit-next');
67 dojo.style(link, 'visibility', 'visible');
68 link.onclick = handler;
70 dojo.style(link, 'visibility', 'hidden');
74 this.setPrev = function(handler) {
75 var link = dojo.byId('acq-lit-prev');
77 dojo.style(link, 'visibility', 'visible');
78 link.onclick = handler;
80 dojo.style(link, 'visibility', 'hidden');
84 this.show = function(div) {
85 openils.Util.hide('acq-lit-table-div');
86 openils.Util.hide('acq-lit-info-div');
87 openils.Util.hide('acq-lit-li-details');
88 openils.Util.hide('acq-lit-notes-div');
91 openils.Util.show('acq-lit-table-div');
94 openils.Util.show('acq-lit-info-div');
97 openils.Util.show('acq-lit-li-details');
100 openils.Util.show('acq-lit-notes-div');
104 openils.Util.show(div);
108 this.hide = function() {
112 this.toggleSelect = function() {
114 dojo.forEach(self.selectors, function(i){i.checked = false});
116 dojo.forEach(self.selectors, function(i){i.checked = true});
117 self.toggleState = !self.toggleState;
121 /** @param all If true, assume all are selected */
122 this.getSelected = function(all) {
124 dojo.forEach(self.selectors,
127 selected.push(self.liCache[i.parentNode.parentNode.getAttribute('li')]);
133 this.setRowAttr = function(td, liWrapper, field, type) {
134 var val = liWrapper.findAttr(field, type || 'lineitem_marc_attr_definition') || '';
135 td.appendChild(document.createTextNode(val));
138 this.addLineitem = function(li) {
139 this.liCache[li.id()] = li;
141 // sort the lineitem notes on edit_time
142 if(!li.lineitem_notes()) li.lineitem_notes([]);
144 var liWrapper = new openils.acq.Lineitem({lineitem:li});
145 var row = self.rowTemplate.cloneNode(true);
146 row.setAttribute('li', li.id());
147 var tds = dojo.query('[attr]', row);
148 dojo.forEach(tds, function(td) {self.setRowAttr(td, liWrapper, td.getAttribute('attr'), td.getAttribute('attr_type'));});
149 dojo.query('[name=source_label]', row)[0].appendChild(document.createTextNode(li.source_label()));
151 var isbn = liWrapper.findAttr('isbn', 'lineitem_marc_attr_definition');
153 // XXX media prefix for added content
154 dojo.query('[name=jacket]', row)[0].setAttribute('src', '/opac/extras/ac/jacket/small/' + isbn);
157 dojo.query('[attr=title]', row)[0].onclick = function() {self.drawInfo(li.id())};
158 dojo.query('[name=copieslink]', row)[0].onclick = function() {self.drawCopies(li.id())};
159 dojo.query('[name=count]', row)[0].innerHTML = li.item_count() || 0;
160 dojo.query('[name=notes_count]', row)[0].innerHTML = li.lineitem_notes().length;
161 dojo.query('[name=noteslink]', row)[0].onclick = function() {self.drawLiNotes(li)};
163 var priceInput = dojo.query('[name=price]', row)[0];
164 var priceData = liWrapper.getPrice();
165 priceInput.value = (priceData) ? priceData.price : '';
166 priceInput.onchange = function() { self.updateLiPrice(priceInput, li) };
168 var recv_link = dojo.query('[name=receive_link]', row)[0];
169 if(li.state() == 'received') {
170 openils.Util.hide(recv_link)
172 recv_link.onclick = function() {
174 openils.Util.hide(recv_link)
178 self.tbody.appendChild(row);
179 self.selectors.push(dojo.query('[name=selectbox]', row)[0]);
182 this.drawLiNotes = function(li) {
186 li.lineitem_notes().sort(
188 if(a.edit_time() < b.edit_time()) return 1;
194 while(this.liNotesTbody.childNodes[0])
195 this.liNotesTbody.removeChild(this.liNotesTbody.childNodes[0]);
198 acqLitCreateLiNoteSubmit.onClick = function() {
199 acqLitCreateLiNoteDialog.hide();
200 var value = acqLitCreateLiNoteDialog.getValues().note;
202 var note = new fieldmapper.acqlin();
205 li.lineitem_notes().push(note);
206 note.lineitem(li.id());
207 self.addLiNote(li, note);
210 dojo.byId('acq-lit-notes-save-button').onclick = function() {
211 self.updateLiNotes(li);
214 dojo.forEach(li.lineitem_notes(), function(note) { self.addLiNote(li, note) });
217 this.addLiNote = function(li, note) {
219 var row = self.liNotesRow.cloneNode(true);
220 dojo.query('[name=creator]', row)[0].innerHTML = note.creator() || ''; /* XXX */
221 dojo.query('[name=editor]', row)[0].innerHTML = note.editor() || ''; /* XXX */
223 if(note.create_time()) {
224 dojo.query('[name=create_time]', row)[0].innerHTML =
225 dojo.date.locale.format(
226 dojo.date.stamp.fromISOString(note.create_time()),
227 {formatLength:'short'});
230 if(note.edit_time()) {
231 dojo.query('[name=edit_time]', row)[0].innerHTML =
232 dojo.date.locale.format(
233 dojo.date.stamp.fromISOString(note.edit_time()),
234 {formatLength:'short'});
237 new openils.widget.AutoFieldWidget({
240 parentNode : dojo.query('[name=value]', row)[0],
241 widgetClass : 'dijit.form.Textarea',
244 dojo.connect(w, 'onChange',
246 note.value(this.attr('value'));
247 note.ischanged(true);
253 dojo.query('[name=delete]', row)[0].onclick = function() {
254 note.isdeleted(true);
255 self.liNotesTbody.removeChild(row);
258 self.liNotesTbody.appendChild(row);
261 this.updateLiNotes = function(li) {
262 progressDialog.show();
264 var notes = li.lineitem_notes().filter(
266 if(note.ischanged() || note.isnew() || note.isdeleted())
271 fieldmapper.standardRequest(
272 ['open-ils.acq', 'open-ils.acq.lineitem_note.cud.batch'],
274 params : [this.authtoken, notes],
275 onresponse : function(r) {
276 var resp = openils.Util.readResponse(r);
279 progressDialog.hide();
280 self.drawLiNotes(li);
284 progressDialog.update(resp);
286 var newnote = resp.note;
287 var oldnote = li.lineitem_notes().filter(function(n) { return (n.value() == newnote.value()) })[0];
288 var notes = li.lineitem_notes().filter(function(n) { return (n.value() != newnote.value()) });
290 if(!openils.Util.isTrue(oldnote.isdeleted()))
292 li.lineitem_notes(notes);
298 this.updateLiPrice = function(input, li) {
300 var price = input.value;
301 var liWrapper = new openils.acq.Lineitem({lineitem:li});
302 var oldPrice = liWrapper.getPrice() || null;
304 if(oldPrice) oldPrice = oldPrice.price;
305 if(price == oldPrice) return;
307 fieldmapper.standardRequest(
308 ['open-ils.acq', 'open-ils.acq.lineitem_local_attr.set'],
310 params : [this.authtoken, li.id(), 'estimated_price', price],
311 oncomplete : function(r) {
312 openils.Util.readResponse(r);
318 this.removeLineitem = function(liId) {
319 this.tbody.removeChild(dojo.query('[li='+liId+']', this.tbody)[0]);
320 delete this.liCache[liId];
323 this.drawInfo = function(liId) {
325 openils.acq.Lineitem.fetchAttrDefs(
327 self._fetchLineitem(liId, function(li){self._drawInfo(li);});
332 this._fetchLineitem = function(liId, handler) {
334 var li = this.liCache[liId];
335 if(li && li.marc() && li.lineitem_details())
338 fieldmapper.standardRequest(
339 ['open-ils.acq', 'open-ils.acq.lineitem.retrieve'],
342 params: [self.authtoken, liId, {
344 flesh_li_details: true,
345 flesh_fund_debit: true }],
347 oncomplete: function(r) {
348 var li = openils.Util.readResponse(r);
355 this._drawInfo = function(li) {
357 acqLitEditMarc.onClick = function() { self.editMarc(li); }
358 this.drawMarcHTML(li);
359 this.infoTbody = dojo.byId('acq-lit-info-tbody');
362 this.infoRow = this.infoTbody.removeChild(dojo.byId('acq-lit-info-row'));
363 while(this.infoTbody.childNodes[0])
364 this.infoTbody.removeChild(this.infoTbody.childNodes[0]);
366 for(var i = 0; i < li.attributes().length; i++) {
367 var attr = li.attributes()[i];
368 var row = this.infoRow.cloneNode(true);
370 var type = attr.attr_type().replace(/lineitem_(.*)_attr_definition/, '$1');
371 var name = openils.acq.Lineitem.attrDefs[type].filter(
373 return (a.code() == attr.attr_name());
375 ).pop().description();
377 dojo.query('[name=label]', row)[0].appendChild(document.createTextNode(name));
378 dojo.query('[name=value]', row)[0].appendChild(document.createTextNode(attr.attr_value()));
379 this.infoTbody.appendChild(row);
383 openils.Util.show('acq-lit-info-cat-link');
384 var link = dojo.byId('acq-lit-info-cat-link').getElementsByTagName('a')[0];
385 var href = link.getAttribute('href');
387 link.setAttribute('href', href + li.eg_bib_id());
389 openils.Util.hide('acq-lit-info-cat-link');
393 this.drawMarcHTML = function(li) {
394 fieldmapper.standardRequest(
395 ['open-ils.search', 'open-ils.search.biblio.record.html'],
397 params: [null, true, li.marc()],
398 oncomplete: function(r) {
399 dojo.byId('acq-lit-marc-div').innerHTML =
400 openils.Util.readResponse(r);
406 this.drawCopies = function(liId) {
410 this.copyWidgetCache = {};
412 acqLitSaveCopies.onClick = function() { self.saveCopyChanges(liId) };
413 acqLitBatchUpdateCopies.onClick = function() { self.batchCopyUpdate() };
415 while(this.copyTbody.childNodes[0])
416 this.copyTbody.removeChild(this.copyTbody.childNodes[0]);
418 this._drawBatchCopyWidgets();
420 this._fetchDistribFormulas(
422 openils.acq.Lineitem.fetchAttrDefs(
424 self._fetchLineitem(liId, function(li){self._drawCopies(li);});
431 this._fetchDistribFormulas = function(onload) {
432 if(this.distribForms) {
436 fieldmapper.standardRequest(
437 ['open-ils.acq', 'open-ils.acq.distribution_formula.ranged.retrieve.atomic'],
439 params: [openils.User.authtoken],
440 oncomplete: function(r) {
441 self.distribForms = openils.Util.readResponse(r);
442 self.distribFormulaStore =
443 new dojo.data.ItemFileReadStore(
444 {data:acqdf.toStoreData(self.distribForms)});
452 this._drawBatchCopyWidgets = function() {
453 var row = this.copyBatchRow;
454 dojo.forEach(['fund', 'owning_lib', 'location', 'circ_modifier', 'cn_label'],
456 if(self.copyBatchRowDrawn) {
457 self.copyBatchWidgets[field].attr('value', null);
459 var widget = new openils.widget.AutoFieldWidget({
462 parentNode : dojo.query('[name='+field+']', row)[0],
463 orgLimitPerms : ['CREATE_PICKLIST'],
464 dijitArgs : {required:false}
467 self.copyBatchWidgets[field] = widget.widget;
471 this.copyBatchRowDrawn = true;
474 this.batchCopyUpdate = function() {
476 var fields = ['fund', 'owning_lib', 'location', 'circ_modifier', 'cn_label'];
477 for(var k in this.copyWidgetCache) {
478 var cache = this.copyWidgetCache[k];
479 dojo.forEach(fields, function(f) {
480 var newval = self.copyBatchWidgets[f].attr('value');
481 if(newval) cache[f].attr('value', newval);
486 this._drawCopies = function(li) {
487 acqLitAddCopyCount.onClick = function() {
488 var count = acqLitCopyCountInput.attr('value');
489 for(var i = 0; i < count; i++)
492 if(li.lineitem_details().length > 0) {
493 dojo.forEach(li.lineitem_details(),
495 self.addCopy(li, copy);
503 this.virtCopyId = -1;
504 this.addCopy = function(li, copy) {
505 var row = this.copyRow.cloneNode(true);
506 this.copyTbody.appendChild(row);
510 copy = new fieldmapper.acqlid();
512 copy.id(this.virtCopyId--);
513 copy.lineitem(li.id());
516 this.copyCache[copy.id()] = copy;
517 row.setAttribute('copy_id', copy.id());
518 self.copyWidgetCache[copy.id()] = {};
520 dojo.forEach(['fund', 'owning_lib', 'location', 'barcode', 'cn_label', 'circ_modifier', 'note'],
522 var widget = new openils.widget.AutoFieldWidget({
526 parentNode : dojo.query('[name='+field+']', row)[0],
527 orgLimitPerms : ['CREATE_PICKLIST'],
531 // make sure we capture the value from any async widgets
532 function(w, ww) { copy[field](ww.getFormattedValue()) }
534 dojo.connect(widget.widget, 'onChange',
536 if(copy.isnew() || val != copy[field]()) {
537 // prevent setting ischanged() automatically on widget load for existing copies
538 copy[field](widget.getFormattedValue())
539 copy.ischanged(true);
543 self.copyWidgetCache[copy.id()][field] = widget.widget;
547 var recv_link = dojo.query('[name=receive]', row)[0];
548 if(copy.recv_time()) {
549 openils.Util.hide(recv_link);
551 recv_link.onclick = function() {
552 self.receiveLid(copy);
553 openils.Util.hide(recv_link);
558 openils.Util.hide(dojo.query('[name=delete]', row)[0].parentNode);
560 dojo.query('[name=delete]', row)[0].onclick =
561 function() { self.deleteCopy(row) };
565 this.deleteCopy = function(row) {
566 var copy = this.copyCache[row.getAttribute('copy_id')];
567 copy.isdeleted(true);
569 delete this.copyCache[copy.id()];
570 this.copyTbody.removeChild(row);
573 this.saveCopyChanges = function(liId) {
577 openils.Util.show('acq-lit-update-copies-progress');
579 for(var id in this.copyCache) {
580 var c = this.copyCache[id];
581 if(c.isnew() || c.ischanged() || c.isdeleted()) {
582 if(c.id() < 0) c.id(null);
587 if(copies.length == 0)
590 fieldmapper.standardRequest(
591 ['open-ils.acq', 'open-ils.acq.lineitem_detail.cud.batch'],
593 params: [openils.User.authtoken, copies],
594 onresponse: function(r) {
595 var res = openils.Util.readResponse(r);
596 litUpdateCopiesProgress.update(res);
598 oncomplete: function() {
599 openils.Util.hide('acq-lit-update-copies-progress');
600 self.drawCopies(liId);
606 this.applySelectedLiAction = function(action) {
610 case 'delete_selected':
611 this._deleteLiList(self.getSelected());
616 if(!this.createPoProviderSelector) {
617 var widget = new openils.widget.AutoFieldWidget({
618 fmField : 'provider',
620 parentNode : dojo.byId('acq-lit-po-provider'),
621 orgLimitPerms : ['CREATE_PURCHASE_ORDER'],
624 function(w) { self.createPoProviderSelector = w; }
628 acqLitPoCreateDialog.show();
631 case 'save_picklist':
632 this._loadPLSelect();
633 acqLitSavePlDialog.show();
644 case 'rollback_receive_po':
645 this.rollbackPoReceive();
648 case 'create_assets':
654 this.createAssets = function() {
655 if(!this.isPO) return;
656 if(!confirm(localeStrings.CREATE_PO_ASSETS_CONFIRM)) return;
657 this.show('acq-lit-progress-numbers');
659 fieldmapper.standardRequest(
660 ['open-ils.acq', 'open-ils.acq.purchase_order.assets.create'],
662 params: [this.authtoken, this.isPO],
663 onresponse: function(r) {
664 var resp = openils.Util.readResponse(r);
665 self._updateProgressNumbers(resp, true);
671 this.printPO = function() {
672 if(!this.isPO) return;
673 progressDialog.show(true);
674 fieldmapper.standardRequest(
675 ['open-ils.acq', 'open-ils.acq.purchase_order.format'],
677 params: [this.authtoken, this.isPO, 'html'],
678 oncomplete: function(r) {
679 progressDialog.hide();
680 var evt = openils.Util.readResponse(r);
681 if(evt && evt.template_output()) {
682 win = window.open('','', 'resizable,width=800,height=600,scrollbars=1');
683 win.document.body.innerHTML = evt.template_output().data();
691 this.receivePO = function() {
692 if(!this.isPO) return;
693 this.show('acq-lit-progress-numbers');
695 fieldmapper.standardRequest(
696 ['open-ils.acq', 'open-ils.acq.purchase_order.receive'],
698 params: [this.authtoken, this.isPO],
699 onresponse : function(r) {
700 var resp = openils.Util.readResponse(r);
701 self._updateProgressNumbers(resp, true);
707 this.receiveLi = function(li) {
708 if(!this.isPO) return;
709 progressDialog.show(true);
710 fieldmapper.standardRequest(
711 ['open-ils.acq', 'open-ils.acq.lineitem.receive'],
713 params: [this.authtoken, li.id()],
714 onresponse : function(r) {
715 var resp = openils.Util.readResponse(r);
716 progressDialog.hide();
722 this.receiveLid = function(li) {
723 if(!this.isPO) return;
724 progressDialog.show(true);
725 fieldmapper.standardRequest(
726 ['open-ils.acq', 'open-ils.acq.lineitem_detail.receive'],
728 params: [this.authtoken, li.id()],
729 onresponse : function(r) {
730 var resp = openils.Util.readResponse(r);
731 progressDialog.hide();
737 this.rollbackPoReceive = function() {
738 if(!this.isPO) return;
739 if(!confirm(localeStrings.ROLLBACK_PO_RECEIVE_CONFIRM)) return;
740 this.show('acq-lit-progress-numbers');
742 fieldmapper.standardRequest(
743 ['open-ils.acq', 'open-ils.acq.purchase_order.receive.rollback'],
745 params: [this.authtoken, this.isPO],
746 onresponse : function(r) {
747 var resp = openils.Util.readResponse(r);
748 self._updateProgressNumbers(resp, true);
754 this._updateProgressNumbers = function(resp, reloadOnComplete) {
756 dojo.byId('acq-pl-lit-li-processed').innerHTML = resp.li;
757 dojo.byId('acq-pl-lit-lid-processed').innerHTML = resp.lid;
758 dojo.byId('acq-pl-lit-debits-processed').innerHTML = resp.debits_accrued;
759 dojo.byId('acq-pl-lit-bibs-processed').innerHTML = resp.bibs;
760 dojo.byId('acq-pl-lit-indexed-processed').innerHTML = resp.indexed;
761 dojo.byId('acq-pl-lit-copies-processed').innerHTML = resp.copies;
762 if(resp.complete && reloadOnComplete)
763 location.href = location.href;
767 this._createPO = function(fields) {
768 this.show('acq-lit-progress-numbers');
769 var po = new fieldmapper.acqpo();
770 po.provider(this.createPoProviderSelector.attr('value'));
772 var selected = this.getSelected( (fields.create_from == 'all') );
773 if(selected.length == 0) return;
775 var max = selected.length * 3;
778 fieldmapper.standardRequest(
779 ['open-ils.acq', 'open-ils.acq.purchase_order.create'],
782 openils.User.authtoken,
785 lineitems : selected.map(function(li) { return li.id() }),
786 create_assets : fields.create_assets[0],
790 onresponse : function(r) {
791 var resp = openils.Util.readResponse(r);
792 self._updateProgressNumbers(resp);
794 location.href = oilsBasePath + '/eg/acq/po/view/' + resp.purchase_order.id();
800 this._deleteLiList = function(list, idx) {
801 if(idx == null) idx = 0;
802 if(idx >= list.length) return;
803 var liId = list[idx].id();
804 fieldmapper.standardRequest(
805 ['open-ils.acq', 'open-ils.acq.lineitem.delete'],
807 params: [openils.User.authtoken, liId],
808 oncomplete: function(r) {
809 self.removeLineitem(liId);
810 self._deleteLiList(list, ++idx);
816 this.editMarc = function(li) {
818 /* To run in Firefox directly, must set signed.applets.codebase_principal_support
819 to true in about:config */
821 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
822 win = window.open('/xul/server/cat/marcedit.xul'); // XXX version?
826 record : {marc : li.marc()},
828 label: 'Save Record', // XXX I18N
829 func: function(xmlString) {
831 fieldmapper.standardRequest(
832 ['open-ils.acq', 'open-ils.acq.lineitem.update'],
834 params: [openils.User.authtoken, li],
835 oncomplete: function(r) {
836 openils.Util.readResponse(r);
838 self.drawInfo(li.id())
848 this._savePl = function(values) {
850 var selected = this.getSelected( (values.which == 'all') );
851 openils.Util.show('acq-lit-generic-progress');
853 if(values.new_name) {
854 openils.acq.Picklist.create(
855 {name: values.new_name},
857 self._updateLiList(id, selected, 0,
859 location.href = oilsBasePath + '/eg/acq/picklist/view/' + id;
863 } else if(values.existing_pl) {
864 // update lineitems to use an existing picklist
865 self._updateLiList(values.existing_pl, selected, 0,
867 location.href = oilsBasePath + '/eg/acq/picklist/view/' + values.existing_pl;
872 this._updateLiList = function(pl, list, idx, oncomplete) {
873 if(idx >= list.length) return oncomplete();
876 litGenericProgress.update({maximum: list.length, progress: idx});
877 new openils.acq.Lineitem({lineitem:li}).update(
879 self._updateLiList(pl, list, ++idx, oncomplete);
884 this._loadPLSelect = function() {
885 if(this._plSelectLoaded) return;
887 function handleResponse(r) {
888 plList.push(r.recv().content());
890 var method = 'open-ils.acq.picklist.user.retrieve';
891 fieldmapper.standardRequest(
892 ['open-ils.acq', method],
894 params: [this.authtoken],
895 onresponse: handleResponse,
896 oncomplete: function() {
897 self._plSelectLoaded = true;
898 acqLitAddExistingSelect.store =
899 new dojo.data.ItemFileReadStore({data:acqpl.toStoreData(plList)});
900 acqLitAddExistingSelect.setValue();