+++ /dev/null
-dojo.require("dijit.Dialog");
-dojo.require("dijit.form.FilteringSelect");
-dojo.require('dijit.form.Button');
-dojo.require('dijit.TooltipDialog');
-dojo.require('dijit.form.DropDownButton');
-dojo.require('dijit.form.CheckBox');
-dojo.require('dojox.grid.DataGrid');
-dojo.require('dojo.data.ItemFileWriteStore');
-dojo.require('openils.widget.OrgUnitFilteringSelect');
-dojo.require('openils.acq.CurrencyType');
-dojo.require('openils.Event');
-dojo.require('openils.Util');
-dojo.require('openils.User');
-dojo.require('openils.CGI');
-dojo.require('openils.acq.Fund');
-dojo.require('openils.widget.AutoGrid');
-dojo.require('openils.widget.ProgressDialog');
-dojo.require('fieldmapper.OrgUtils');
-dojo.requireLocalization('openils.acq', 'acq');
-var localeStrings = dojo.i18n.getLocalization('openils.acq', 'acq');
-
-var contextOrg;
-var rolloverResponses;
-var rolloverMode = false;
-
-function getBalanceInfo(rowIndex, item) {
- if(!item) return '';
- var id = this.grid.store.getValue( item, 'id');
- var fund = openils.acq.Fund.cache[id];
- if(fund && fund.summary())
- return fund.summary().combined_balance;
- return 0;
-}
-
-function initPage() {
-
- contextOrg = openils.User.user.ws_ou();
-
- var connect = function() {
- dojo.connect(contextOrgSelector, 'onChange',
- function() {
- contextOrg = this.attr('value');
- dojo.byId('oils-acq-rollover-ctxt-org').innerHTML =
- fieldmapper.aou.findOrgUnit(contextOrg).shortname();
- rolloverMode = false;
- gridDataLoader();
- }
- );
- };
-
- dojo.connect(refreshButton, 'onClick', function() { rolloverMode = false; gridDataLoader(); });
-
- new openils.User().buildPermOrgSelector(
- 'ADMIN_ACQ_FUND', contextOrgSelector, contextOrg, connect);
-
- dojo.byId('oils-acq-rollover-ctxt-org').innerHTML =
- fieldmapper.aou.findOrgUnit(contextOrg).shortname();
-
- loadYearSelector();
- lfGrid.dataLoader = gridDataLoader;
- loadFundGrid(new openils.CGI().param('year') || new Date().getFullYear().toString());
-}
-
-function gridDataLoader() {
- lfGrid.resetStore();
- if(rolloverMode) {
- var offset = lfGrid.displayOffset;
- for(var i = offset; i < (offset + lfGrid.displayLimit - 1); i++) {
- var fund = rolloverResponses[i];
- if(!fund) break;
- lfGrid.store.newItem(fieldmapper.acqf.toStoreItem(fund));
- }
- } else {
- loadFundGrid();
- }
-}
-
-function loadFundGrid(year) {
-
- openils.Util.hide('acq-fund-list-rollover-summary');
- year = year || fundFilterYearSelect.attr('value');
-
- fieldmapper.standardRequest(
- [ 'open-ils.acq', 'open-ils.acq.fund.org.retrieve'],
- { async: true,
-
- params: [
- openils.User.authtoken,
- {year : year, org : fieldmapper.aou.descendantNodeList(contextOrg, true)},
- {
- flesh_summary:1,
- limit: lfGrid.displayLimit,
- offset: lfGrid.displayOffset
- }
- ],
-
- onresponse : function(r) {
- if(lf = openils.Util.readResponse(r)) {
- openils.acq.Fund.cache[lf.id()] = lf;
- lfGrid.store.newItem(acqf.toStoreItem(lf));
- }
- },
-
- oncomplete : function(r) {
- lfGrid.hideLoadProgressIndicator();
- }
- }
- );
-}
-
-function loadYearSelector() {
-
- fieldmapper.standardRequest(
- ['open-ils.acq', 'open-ils.acq.fund.org.years.retrieve'],
- { async : true,
- params : [openils.User.authtoken],
- oncomplete : function(r) {
-
- var yearList = openils.Util.readResponse(r);
- if(!yearList) return;
- yearList = yearList.map(function(year){return {year:year+''};}); // dojo wants strings
-
- var yearStore = {identifier:'year', name:'year', items:yearList};
- yearStore.items = yearStore.items.sort().reverse();
- fundFilterYearSelect.store = new dojo.data.ItemFileWriteStore({data:yearStore});
-
- // default to this year
- fundFilterYearSelect.setValue(new Date().getFullYear().toString());
-
- dojo.connect(
- fundFilterYearSelect,
- 'onChange',
- function() {
- rolloverMode = false;
- gridDataLoader();
- }
- );
- }
- }
- );
-}
-
-function performRollover(args) {
-
- rolloverMode = true;
- progressDialog.show(true, "Processing...");
- rolloverResponses = [];
-
- var method = 'open-ils.acq.fiscal_rollover';
-
- if(args.rollover[0] == 'on') {
- method += '.combined';
- } else {
- method += '.propagate';
- }
-
- var dryRun = args.dry_run[0] == 'on';
- if(dryRun) method += '.dry_run';
-
- var count = 0;
- var amount_rolled = 0;
- var year = fundFilterYearSelect.attr('value'); // TODO alternate selector?
-
- fieldmapper.standardRequest(
- ['open-ils.acq', method],
- {
- async : true,
-
- params : [
- openils.User.authtoken,
- year,
- contextOrg,
- (args.child_orgs[0] == 'on')
- ],
-
- onresponse : function(r) {
- var resp = openils.Util.readResponse(r);
- rolloverResponses.push(resp.fund);
- count += 1;
- amount_rolled += Number(resp.rollover_amount);
- },
-
- oncomplete : function() {
-
- var nextYear = Number(year) + 1;
- rolloverResponses = rolloverResponses.sort(
- function(a, b) {
- if(a.code() > b.code())
- return 1;
- return -1;
- }
- )
-
- dojo.byId('acq-fund-list-rollover-summary-header').innerHTML =
- dojo.string.substitute(
- localeStrings.FUND_LIST_ROLLOVER_SUMMARY,
- [nextYear]
- );
-
- dojo.byId('acq-fund-list-rollover-summary-funds').innerHTML =
- dojo.string.substitute(
- localeStrings.FUND_LIST_ROLLOVER_SUMMARY_FUNDS,
- [nextYear, count]
- );
-
- dojo.byId('acq-fund-list-rollover-summary-rollover-amount').innerHTML =
- dojo.string.substitute(
- localeStrings.FUND_LIST_ROLLOVER_SUMMARY_ROLLOVER_AMOUNT,
- [nextYear, amount_rolled]
- );
-
- if(!dryRun) {
- openils.Util.hide('acq-fund-list-rollover-summary-dry-run');
-
- // add the new year to the year selector if it's not already there
- fundFilterYearSelect.store.fetch({
- query : {year : nextYear},
- onComplete:
- function(list) {
- if(list && list.length > 0) return;
- fundFilterYearSelect.store.newItem({year : nextYear});
- }
- });
- }
-
- openils.Util.show('acq-fund-list-rollover-summary');
- progressDialog.hide();
- gridDataLoader();
- }
- }
- );
-}
-
-openils.Util.addOnLoad(initPage);