]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/lineitem/related.js
Added a "View / Place Orders" option to the exta actions drop-down for a
[working/Evergreen.git] / Open-ILS / web / js / ui / default / acq / lineitem / related.js
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');
8
9 var liTable;
10 var identTarget;
11 var bibRecord;
12 var paramPL;
13 var paramPO;
14
15 function fetchLi() {
16     fieldmapper.standardRequest(
17         ["open-ils.acq", "open-ils.acq.lineitem.retrieve"], {
18             "async": true,
19             "params": [openils.User.authtoken, targetId, {
20                 "flesh_attrs": true,
21                 "flesh_li_details": true,
22                 "flesh_fund_debit": true,
23                 "flesh_cancel_reason": true
24             }],
25             "oncomplete": function(r) {
26                 fetchBib();
27                 drawLiInfo(openils.Util.readResponse(r));
28             }
29         }
30     );
31 }
32
33
34 function fetchRelated() {
35     var method = 'open-ils.acq.lineitems_for_bib.by_lineitem_id';
36     if(identTarget == 'bib')
37         var method = 'open-ils.acq.lineitems_for_bib.by_bib_id';
38
39     fieldmapper.standardRequest(
40         ["open-ils.acq", method], {
41             "async": true,
42             "params": [openils.User.authtoken, targetId, {
43                 "flesh_attrs": true,
44                 "flesh_notes": true,
45                 "flesh_cancel_reason": true
46             }],
47             "onresponse": function(r) {
48                 var resp = openils.Util.readResponse(r);
49                 if (resp) {
50                     liTable.show("list");
51                     liTable.addLineitem(resp);
52                 }
53             }
54         }
55     );
56 }
57
58 function fetchBib() {
59     new openils.BibTemplate({ 
60         record : targetId, 
61         org_unit : fieldmapper.aou.findOrgUnit(openils.User.user.ws_ou()).shortname()
62     }).render();
63
64     new openils.PermaCrud().retrieve('bre', targetId, {
65         oncomplete : function(r) {
66             bibRecord = openils.Util.readResponse(r);
67             // render bib details
68             // perhaps we just pull these from the beating heart of bibtemplate
69         }
70     }) 
71 }
72
73 function addLi(fields) {
74
75     var li = new fieldmapper.jub();
76     li.marc(bibRecord.marc());
77     li.eg_bib_id(bibRecord.id());
78     if(fields.picklist) li.picklist(fields.picklist);
79     if(fields.po) li.po(fields.po);
80     li.selector(openils.User.user.id());
81     li.creator(openils.User.user.id());
82     li.editor(openils.User.user.id());
83
84     fieldmapper.standardRequest(
85         ['open-ils.acq', 'open-ils.acq.lineitem.create'],
86         {   async : true,
87             params : [openils.User.authtoken, li],
88             oncomplete : function(r) {
89                 var id = openils.Util.readResponse(r);
90                 if(!id) return;
91                 if(fields.picklist) 
92                     location.href = oilsBasePath + '/acq/picklist/view/' + fields.picklist;
93                 else
94                     location.href = oilsBasePath + '/acq/po/view/' + fields.po;
95             }
96         }
97     );
98 }
99
100 function loadPl() {
101
102     if(paramPL) {
103
104         fieldmapper.standardRequest(
105             ['open-ils.acq', 'open-ils.acq.picklist.retrieve'],
106             {   async: true,
107                 params: [openils.User.authtoken, paramPL], 
108                 oncomplete : function(r) {
109                     var pl = openils.Util.readResponse(r);
110                     plSelector.store = 
111                         new dojo.data.ItemFileReadStore({data:fieldmapper.acqpl.toStoreData([pl])});
112                     plSelector.attr('value', pl.name());
113                     plSelector.attr('disabled', true);
114                 }
115             }
116         );
117
118     } else {
119
120         fieldmapper.standardRequest(
121             ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
122             {   async: true,
123                 params: [openils.User.authtoken], 
124                 oncomplete : function(r) {
125                     var list = openils.Util.readResponse(r);
126                     plSelector.store = 
127                         new dojo.data.ItemFileReadStore({data:fieldmapper.acqpl.toStoreData(list)});
128                 }
129             }
130         );
131     }
132 }
133
134
135 function load() {
136     var cgi = new openils.CGI();
137
138     identTarget = cgi.param('target');
139     paramPL = cgi.param('pl');
140     paramPO = cgi.param('po');
141
142     loadPl();
143
144     if(identTarget == 'bib') {
145         fetchBib();
146     } else {
147         fetchLi(); 
148     }
149
150     liTable = new AcqLiTable();
151     liTable.reset();
152     liTable._isRelatedViewer = true;
153
154     fetchRelated();
155 }
156
157 openils.Util.addOnLoad(load);