]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/financial/list_funds.js
Acq: Resurrect an old "view fund" interface, add some tag mapping managment
[working/Evergreen.git] / Open-ILS / web / js / ui / default / acq / financial / list_funds.js
1 dojo.require("dijit.Dialog");
2 dojo.require("dijit.form.FilteringSelect");
3 dojo.require('dijit.form.Button');
4 dojo.require('dijit.TooltipDialog');
5 dojo.require('dijit.form.DropDownButton');
6 dojo.require('dijit.form.CheckBox');
7 dojo.require('dojox.grid.DataGrid');
8 dojo.require('dojo.data.ItemFileWriteStore');
9 dojo.require('openils.widget.OrgUnitFilteringSelect');
10 dojo.require('openils.acq.CurrencyType');
11 dojo.require('openils.Event');
12 dojo.require('openils.Util');
13 dojo.require('openils.User');
14 dojo.require('openils.acq.Fund');
15 dojo.require('openils.widget.AutoGrid');
16 dojo.require('openils.widget.ProgressDialog');
17
18 var contextOrg;
19
20 function getBalanceInfo(rowIndex, item) {
21     if(!item) return '';
22     var id = this.grid.store.getValue( item, 'id');   
23     var fund = openils.acq.Fund.cache[id];
24     if(fund && fund.summary()) 
25         return fund.summary().combined_balance;
26     return 0;
27 }
28
29 function initPage() {
30
31     var connect = function() {
32         dojo.connect(contextOrgSelector, 'onChange',
33             function() {
34                 contextOrg = this.attr('value');
35                 lfGrid.resetStore();
36                 loadFundGrid(fundFilterYearSelect.attr('value'));
37             }
38         );
39     };
40
41     new openils.User().buildPermOrgSelector(
42         'ADMIN_ACQ_FUND', contextOrgSelector, null, connect);
43
44     loadYearSelector();
45     loadFundGrid();
46
47     tagManager = new TagManager(lfGrid);
48 }
49
50 function loadFundGrid(year) {
51
52     lfGrid.resetStore();
53     year = year || new Date().getFullYear().toString();
54     lfGrid.dataLoader = function() { loadFundGrid(year); };
55
56     if(contextOrg == null)
57         contextOrg = openils.User.user.ws_ou();
58
59     fieldmapper.standardRequest(
60        [ 'open-ils.acq', 'open-ils.acq.fund.org.retrieve'],
61        {    async: true,
62
63             params: [
64                 openils.User.authtoken, 
65                 {year : year, org : fieldmapper.aou.descendantNodeList(contextOrg, true)}, 
66                 {
67                     flesh_summary:1, 
68                     limit: lfGrid.displayLimit,
69                     offset: lfGrid.displayOffset
70                 }
71             ],
72
73             onresponse : function(r) {
74                 if(lf = openils.Util.readResponse(r)) {
75                    openils.acq.Fund.cache[lf.id()] = lf;
76                    lfGrid.store.newItem(acqf.toStoreItem(lf));
77                 }
78             },
79
80             oncomplete : function(r) {
81                 lfGrid.hideLoadProgressIndicator();
82             }
83         }
84     );
85 }
86
87 function loadYearSelector() {
88
89     fieldmapper.standardRequest(
90         ['open-ils.acq', 'open-ils.acq.fund.org.years.retrieve'],
91         {   async : true,
92             params : [openils.User.authtoken],
93             oncomplete : function(r) {
94
95                 var yearList = openils.Util.readResponse(r);
96                 if(!yearList) return;
97                 yearList = yearList.map(function(year){return {year:year+''};}); // dojo wants strings
98
99                 var yearStore = {identifier:'year', name:'year', items:yearList};
100                 yearStore.items = yearStore.items.sort().reverse();
101                 fundFilterYearSelect.store = new dojo.data.ItemFileReadStore({data:yearStore});
102
103                 // default to this year
104                 fundFilterYearSelect.setValue(new Date().getFullYear().toString());
105
106                 dojo.connect(
107                     fundFilterYearSelect, 
108                     'onChange', 
109                     function() {
110                         loadFundGrid(fundFilterYearSelect.attr('value'));
111                     }
112                 );
113             }
114         }
115     );
116 }
117
118 function performRollover(args) {
119     progressDialog.show(true, "Processing...");
120
121     var method = 'open-ils.acq.fiscal_rollover';
122
123     if(args.rollover[0] == 'on') {
124         method += '.combined';
125     } else {
126         method += '.propagate';
127     }
128         
129     if(args.dry_run[0] == 'on')
130         method += '.dry_run';
131
132     var responses = [];
133     fieldmapper.standardRequest(
134         ['open-ils.acq', method],
135         {
136             async : true,
137
138             params : [
139                 openils.User.authtoken, 
140                 fundFilterYearSelect.attr('value'),
141                 contextOrg,
142                 false, // TODO: checkbox in dialog
143             ],
144
145             onresponse : function(r) {
146                 var resp = openils.Util.readResponse(r);
147                 responses.push(resp);
148             }, 
149
150             oncomplete : function() {
151                 alert(responses.length);
152                 progressDialog.hide();
153             }
154         }
155     );
156 }
157
158 openils.Util.addOnLoad(initPage);