1 dojo.require("openils.acq.Lineitem");
2 dojo.require("openils.Util");
3 dojo.require("openils.XUL");
4 dojo.require("openils.CGI");
5 dojo.require("openils.PermaCrud");
6 dojo.require('openils.BibTemplate');
7 dojo.require('fieldmapper.OrgUtils');
9 dojo.requireLocalization('openils.acq', 'acq');
10 var localeStrings = dojo.i18n.getLocalization('openils.acq', 'acq');
19 fieldmapper.standardRequest(
20 ["open-ils.acq", "open-ils.acq.lineitem.retrieve.authoritative"], {
22 "params": [openils.User.authtoken, targetId, {
24 "flesh_li_details": true,
25 "flesh_fund_debit": true,
26 "flesh_cancel_reason": true
28 "oncomplete": function(r) {
29 var li = openils.Util.readResponse(r);
30 fetchBib(li.eg_bib_id());
37 function fetchRelated() {
38 var method = 'open-ils.acq.lineitems_for_bib.by_lineitem_id';
39 if(identTarget == 'bib')
40 var method = 'open-ils.acq.lineitems_for_bib.by_bib_id';
43 fieldmapper.standardRequest(
44 ["open-ils.acq", method], {
46 "params": [openils.User.authtoken, targetId, {
49 "flesh_cancel_reason": true
51 "onresponse": function(r) {
52 var resp = openils.Util.readResponse(r);
56 liTable.addLineitem(resp);
63 function fetchBib(bibId) {
64 bibId = bibId || targetId;
65 new openils.BibTemplate({
67 org_unit : fieldmapper.aou.findOrgUnit(openils.User.user.ws_ou()).shortname()
70 new openils.PermaCrud().retrieve('bre', bibId, {
71 oncomplete : function(r) {
72 bibRecord = openils.Util.readResponse(r);
74 // perhaps we just pull these from the beating heart of bibtemplate
79 function createLi(oncomplete) {
81 progressDialog.show();
83 fieldmapper.standardRequest(
84 ["open-ils.acq", "open-ils.acq.biblio.create_by_id"], {
86 openils.User.authtoken, [bibRecord.id()], {
88 "flesh_cancel_reason": true,
93 "onresponse": function(r) {
94 var li = openils.Util.readResponse(r);
95 if (typeof(li) == "object") {
97 liTable.addLineitem(li);
99 "input[name='selectbox']", liTable._findLiRow(li)
103 "oncomplete": function() {
104 progressDialog.hide();
112 function prepareButtons() {
113 addToPlButton.onClick = createLi(
114 function() { /* oncomplete */
115 acqLitSavePlDialog.show();
118 addToPoButton.onClick = createLi(
119 function() { /* oncomplete */
120 addToPoDialog.show();
123 createPoButton.onClick = createLi(
124 function() { /* oncomplete */
125 liTable._loadPOSelect();
126 acqLitPoCreateDialog.show();
132 var cgi = new openils.CGI();
134 identTarget = cgi.param('target');
135 paramPL = cgi.param('pl');
136 // paramPO = cgi.param('po');
138 if (identTarget == 'bib') {
144 liTable = new AcqLiTable();
146 liTable._isRelatedViewer = true;
150 dojo.connect(addToPoSave, 'onClick', addToPo)
151 openils.Util.registerEnterHandler(addToPoInput.domNode, addToPo);
154 var _addToPoHappened = false;
155 function addToPo(args) {
156 var poId = addToPoInput.attr('value');
157 if (!poId) return false;
158 if (_addToPoHappened) return false;
160 var liId = liTable.getSelected()[0].id();
161 console.log("adding li " + liId + " to PO " + poId);
163 // hmm, addToPo is invoked twice for some reason...
164 _addToPoHappened = true;
166 fieldmapper.standardRequest(
167 ['open-ils.acq', 'open-ils.acq.purchase_order.add_lineitem'],
169 params : [openils.User.authtoken, poId, liId],
170 oncomplete : function(r) {
171 var resp = openils.Util.readResponse(r);
173 location.href = oilsBasePath + '/acq/po/view/' + poId;
175 _addToPoHappened = false;
176 if (resp.error == 'bad-po-state') {
177 alert(localeStrings.ADD_LI_TO_PO_BAD_PO_STATE);
178 } else if (resp.error == 'bad-li-state') {
179 alert(localeStrings.ADD_LI_TO_PO_BAD_LI_STATE);
186 addToPoDialog.hide();
187 return false; // prevent form submission
190 openils.Util.addOnLoad(load);