From 4573515899efb8152c4ccf20d257023f77ed04c1 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 19 Sep 2012 16:41:19 +0530 Subject: [PATCH] added graphs in stock ledger and general ledger --- .../financial_analytics.js | 22 ++------- .../page/general_ledger/general_ledger.js | 44 ++++++++++++++++++ .../stock/page/stock_ledger/stock_ledger.js | 37 ++++++++++++++- public/js/all-app.js | 45 ++++++++++--------- public/js/all-web.js | 20 +++++---- public/js/app/account_tree_grid.js | 15 +++++-- public/js/fields.js | 4 +- 7 files changed, 131 insertions(+), 56 deletions(-) diff --git a/erpnext/accounts/page/financial_analytics/financial_analytics.js b/erpnext/accounts/page/financial_analytics/financial_analytics.js index 19cf3553a8..5445fc96df 100644 --- a/erpnext/accounts/page/financial_analytics/financial_analytics.js +++ b/erpnext/accounts/page/financial_analytics/financial_analytics.js @@ -36,19 +36,7 @@ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({ var out = (val=='Profit and Loss') ? item.is_pl_account=='Yes' : item.is_pl_account!='Yes'; if(!out) return false; - // show only non-zero values - if(!me.show_zero) { - for(var i=0, j=me.columns.length; i 0.001) { - return true; - } - } - } - return false; - } - return true; + return me.apply_zero_filter(val, item, opts, me); }}, {fieldtype:"Select", label: "Company", link:"Company", default_value: "Select Company...", filter: function(val, item, opts) { @@ -151,9 +139,6 @@ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({ me.filter_inputs.refresh.click(); }); this.wrapper.bind('make', function() { - me.wrapper.find('.show-zero').toggle(true).find('input').click(function(){ - me.refresh(); - }); me.wrapper.on("click", ".plot-check", function() { var checked = $(this).attr("checked"); me.account_by_name[$(this).attr("data-id")].checked = checked ? true : false; @@ -206,7 +191,6 @@ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({ } this.update_groups(); this.accounts_initialized = true; - this.show_zero = $('.show-zero input:checked').length; }, add_balance: function(field, account, gl) { account[field] = flt(account[field]) + @@ -233,7 +217,7 @@ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({ var pl_or_bs = this.filter_inputs.pl_or_bs.val(); $.each(this.accounts, function(i, account) { var show = pl_or_bs == "Profit and Loss" ? account.is_pl_account=="Yes" : account.is_pl_account!="Yes"; - if (show && account.checked) { + if (show && account.checked && me.apply_filter(account, "company")) { data.push({ label: account.name, data: $.map(me.columns, function(col, idx) { @@ -267,5 +251,5 @@ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({ min: dateutil.str_to_obj(this.from_date).getTime(), max: dateutil.str_to_obj(this.to_date).getTime() } } - } + }, }) \ No newline at end of file diff --git a/erpnext/accounts/page/general_ledger/general_ledger.js b/erpnext/accounts/page/general_ledger/general_ledger.js index c74b8c5024..8a57b06f2a 100644 --- a/erpnext/accounts/page/general_ledger/general_ledger.js +++ b/erpnext/accounts/page/general_ledger/general_ledger.js @@ -137,13 +137,57 @@ wn.pages['general-ledger'].onload = function(wrapper) { if(!me.is_default("account")) { + if(me.account_by_name[me.account].debit_or_credit == "Debit") { + opening.debit -= opening.credit; opening.credit = 0; + closing.debit -= closing.credit; closing.credit = 0; + } else { + opening.credit -= opening.debit; opening.debit = 0; + closing.credit -= closing.debit; closing.debit = 0; + } var out = [opening].concat(out).concat([totals, closing]); } else { var out = out.concat([totals]); } + // sanitize opening / closing + + this.data = out; this.prepare_data_view(out); }, + get_plot_data: function() { + var data = []; + var me = this; + if(me.is_default("account") || me.voucher_no) return false; + var debit_or_credit = me.account_by_name[me.account].debit_or_credit; + var balance = debit_or_credit=="Debit" ? me.data[0].debit : me.data[0].credit; + data.push({ + label: me.account, + data: [[dateutil.str_to_obj(me.from_date).getTime(), balance]] + .concat($.map(me.data, function(col, idx) { + if (col.posting_date) { + var diff = (debit_or_credit == "Debit" ? 1 : -1) * (flt(col.debit) - flt(col.credit)); + balance += diff; + return [[dateutil.str_to_obj(col.posting_date).getTime(), balance - diff], + [dateutil.str_to_obj(col.posting_date).getTime(), balance]] + } + return null; + })).concat([ + // closing + [dateutil.str_to_obj(me.to_date).getTime(), balance] + ]), + points: {show: true}, + lines: {show: true, fill: true}, + }); + return data; + }, + get_plot_options: function() { + return { + grid: { hoverable: true, clickable: true }, + xaxis: { mode: "time", + min: dateutil.str_to_obj(this.from_date).getTime(), + max: dateutil.str_to_obj(this.to_date).getTime() } + } + }, }); } diff --git a/erpnext/stock/page/stock_ledger/stock_ledger.js b/erpnext/stock/page/stock_ledger/stock_ledger.js index ee97868d16..a774f5d7fc 100644 --- a/erpnext/stock/page/stock_ledger/stock_ledger.js +++ b/erpnext/stock/page/stock_ledger/stock_ledger.js @@ -13,6 +13,7 @@ wn.pages['stock-ledger'].onload = function(wrapper) { doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry"], setup_columns: function() { + this.hide_balance = (this.is_default("item_code") || this.voucher_no) ? true : false; this.columns = [ {id: "posting_datetime", name: "Posting Date", field: "posting_datetime", width: 120, formatter: this.date_formatter}, @@ -27,7 +28,8 @@ wn.pages['stock-ledger'].onload = function(wrapper) { {id: "qty", name: "Qty", field: "qty", width: 100, formatter: this.currency_formatter}, {id: "balance", name: "Balance", field: "balance", width: 100, - formatter: this.currency_formatter}, + formatter: this.currency_formatter, + hidden: this.hide_balance}, {id: "voucher_type", name: "Voucher Type", field: "voucher_type", width: 120}, {id: "voucher_no", name: "Voucher No", field: "voucher_no", width: 160, link_formatter: { @@ -38,6 +40,7 @@ wn.pages['stock-ledger'].onload = function(wrapper) { {id: "description", name: "Description", field: "description", width: 200, formatter: this.text_formatter}, ]; + }, filters: [ {fieldtype:"Select", label: "Warehouse", link:"Warehouse", default_value: "Select Warehouse...", @@ -134,7 +137,7 @@ wn.pages['stock-ledger'].onload = function(wrapper) { if(me.item_code != me.item_code_default && !me.voucher_no) { var closing = { item_code: "On " + dateutil.str_to_user(this.to_date), - balane: me.item_by_name[sl.item_code].balance, qty: 0, + balance: (out ? out[out.length-1].balance : 0), qty: 0, id:"_closing", _show: true, _style: "font-weight: bold" }; var out = [opening].concat(out).concat([total_in, total_out, closing]); @@ -143,5 +146,35 @@ wn.pages['stock-ledger'].onload = function(wrapper) { this.data = out; this.prepare_data_view(out); }, + get_plot_data: function() { + var data = []; + var me = this; + if(me.hide_balance) return false; + data.push({ + label: me.item_code, + data: [[dateutil.str_to_obj(me.from_date).getTime(), me.data[0].balance]] + .concat($.map(me.data, function(col, idx) { + if (col.posting_datetime) { + return [[dateutil.str_to_obj(col.posting_datetime).getTime(), col.balance - col.qty], + [dateutil.str_to_obj(col.posting_datetime).getTime(), col.balance]] + } + return null; + })).concat([ + // closing + [dateutil.str_to_obj(me.to_date).getTime(), me.data[me.data.length - 1].balance] + ]), + points: {show: true}, + lines: {show: true, fill: true}, + }); + return data; + }, + get_plot_options: function() { + return { + grid: { hoverable: true, clickable: true }, + xaxis: { mode: "time", + min: dateutil.str_to_obj(this.from_date).getTime(), + max: dateutil.str_to_obj(this.to_date).getTime() } + } + }, }); } \ No newline at end of file diff --git a/public/js/all-app.js b/public/js/all-app.js index 6c564045b9..e88bb1df05 100644 --- a/public/js/all-app.js +++ b/public/js/all-app.js @@ -353,11 +353,11 @@ if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!(me.fields_by_name[df.pare */ wn.provide('wn.pages');wn.provide('wn.views');wn.views.Container=Class.extend({init:function(){this.container=$('#body_div').get(0);this.page=null;this.pagewidth=$('#body_div').width();this.pagemargin=50;},add_page:function(label,onshow,onhide){var page=$('
').attr('id',"page-"+label).appendTo(this.container).get(0);if(onshow) $(page).bind('show',onshow);if(onshow) -$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){return;} +$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){$(this.page).trigger('show');return;} var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];} if(!page){console.log('Page not found '+label);return;} if(this.page&&this.page!=page){$(this.page).toggle(false);$(this.page).trigger('hide');} -if(!this.page||this.page!=page){this.page=page;$(this.page).fadeIn();} +if(!this.page||this.page!=page){this.page=page;$(this.page).toggle(true);} this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('\ %(module)s Home\ @@ -486,11 +486,13 @@ val=d[0]+'-'+d[1]+'-'+d[2]+time_str;else if(user_fmt=='mm/dd/yyyy') val=d[1]+'/'+d[2]+'/'+d[0]+time_str;else if(user_fmt=='mm-dd-yyyy') val=d[1]+'-'+d[2]+'-'+d[0]+time_str;} return val;},full_str:function(){var d=new Date();return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' ' -+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');return d[2]+'-'+d[1]+'-'+d[0];} -else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');return d[2]+'-'+d[1]+'-'+d[0];} -else if(user_fmt=='yyyy-mm-dd'){return d;} -else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');return d[2]+'-'+d[0]+'-'+d[1];} -else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');return d[2]+'-'+d[0]+'-'+d[1];}},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+'' ++d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();var time_str='';if(d.search(/ /)!=-1){time_str=" "+d.split(" ")[1];d=d.split(" ")[0];} +if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[1]+'-'+d[0];} +else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[1]+'-'+d[0];} +else if(user_fmt=='yyyy-mm-dd'){var val=d;} +else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[0]+'-'+d[1];} +else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[0]+'-'+d[1];} +return val+time_str;},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+'' var mm=cint(d.getMinutes()/5)*5+'' return(hh.length==1?'0'+hh:hh)+':'+(mm.length==1?'0'+mm:mm);}} wn.datetime.only_date=function(val){if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');var d=tmp[0].split('-');}else{var d=val.split('-');} @@ -603,14 +605,14 @@ document.body.appendChild(temp);temp.submit();return temp;} /* * lib/js/legacy/utils/msgprint.js */ -var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v)msgprint(v);}) +var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v){msgprint(v);}}) return;} if(typeof(msg)!='string') msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;} if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('
').appendTo(msg_dialog.body);} if(msg.search(/
|

|

  • /)==-1) msg=replace_newlines(msg);msg_dialog.set_title(title||'Message') -msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;} +if(msg_dialog.msg_area.html())msg_dialog.msg_area.append("
    ");msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;} var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('
    ').appendTo('body');} growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});} var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);} @@ -656,7 +658,7 @@ this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary') ret='None';if(cint(this.df.hidden)) ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}} -if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';} +if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}} return ret;} Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}} Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);} @@ -727,7 +729,7 @@ DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=fun var t=v.split('-');if(t.length!=3){return this.clear();} else if(cint(t[1])>12||cint(t[1])<1){return this.clear();} else if(cint(t[2])>31||cint(t[2])<1){return this.clear();} -return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create&&cur_frm.doc.docstatus==0) +return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create) $(me.btn2).css('display','inline-block');else $dh(me.btn2);}} me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;} me.get_value=function(){return me.txt.value;} @@ -1081,10 +1083,10 @@ this.make_waiting();this.import_slickgrid();var me=this;this.get_data();},bind_s
    \
    ').appendTo(this.wrapper);},make_filters:function(){var me=this;$.each(this.filters,function(i,v){v.fieldname=v.fieldname||v.label.replace(/ /g,'_').toLowerCase();var input=null;if(v.fieldtype=='Select'){input=me.appframe.add_select(v.label,v.options||[v.default_value]);}else if(v.fieldtype=='Button'){input=me.appframe.add_button(v.label);if(v.icon){$('').prependTo(input);}}else if(v.fieldtype=='Date'){input=me.appframe.add_date(v.label);}else if(v.fieldtype=='Label'){input=me.appframe.add_label(v.label);}else if(v.fieldtype=='Data'){input=me.appframe.add_data(v.label);} if(input){input&&(input.get(0).opts=v);if(v.cssClass){input.addClass(v.cssClass);} -input.keypress(function(e){if(e.which==13){me.refresh();}})} +input.keypress(function(e){if(e.which==13){me.set_route();}})} me.filter_inputs[v.fieldname]=input;});},load_filter_values:function(){var me=this;$.each(this.filter_inputs,function(i,f){var opts=f.get(0).opts;if(opts.fieldtype!='Button'){me[opts.fieldname]=f.val();if(opts.fieldtype=="Date"){me[opts.fieldname]=dateutil.user_to_str(me[opts.fieldname]);}else if(opts.fieldtype=="Select"){me[opts.fieldname+'_default']=opts.default_value;}}});},make_name_map:function(data,key){var map={};key=key||"name";$.each(data,function(i,v){map[v[key]]=v;}) return map;},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.require('js/lib/slickgrid/slick.dataview.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},refresh:function(){this.waiting.toggle(false);if(!this.grid_wrapper) -this.make();this.setup_columns();this.apply_link_formatters();this.load_filter_values();this.prepare_data();this.render();this.render_plot();},make:function(){$('').appendTo(this.wrapper);$('
    \ Print \ | \ @@ -1092,9 +1094,10 @@ this.make();this.setup_columns();this.apply_link_formatters();this.load_filter_v
    ').appendTo(this.wrapper);this.wrapper.find(".grid-report-export").click(function(){return me.export();});this.grid_wrapper=$("
    ").appendTo(this.wrapper);this.id=wn.dom.set_unique_id(this.grid_wrapper.get(0));$('').appendTo(this.wrapper);this.bind_show();wn.cur_grid_report=this;this.apply_filters_from_route();$(this.wrapper).trigger('make');},apply_filters_from_route:function(){var hash=window.location.hash;var me=this;if(hash.indexOf('/')!=-1){$.each(hash.split('/').splice(1).join('/').split('&'),function(i,f){var f=f.split("=");if(me.filter_inputs[f[0]]){me.filter_inputs[f[0]].val(decodeURIComponent(f[1]));}else{console.log("Invalid filter: "+f[0]);}});}},set_route:function(){wn.set_route(wn.container.page.page_name,$.map(this.filter_inputs,function(v){var val=v.val();var opts=v.get(0).opts;if(val&&val!=opts.default_value) +
    ').appendTo(this.wrapper);this.bind_show();wn.cur_grid_report=this;this.apply_filters_from_route();$(this.wrapper).trigger('make');},apply_filters_from_route:function(){var hash=window.location.hash;var me=this;if(hash.indexOf('/')!=-1){$.each(hash.split('/').splice(1).join('/').split('&'),function(i,f){var f=f.split("=");if(me.filter_inputs[f[0]]){me.filter_inputs[f[0]].val(decodeURIComponent(f[1]));}else{console.log("Invalid filter: "+f[0]);}});}else{this.init_filter_values();}},set_route:function(){wn.set_route(wn.container.page.page_name,$.map(this.filter_inputs,function(v){var val=v.val();var opts=v.get(0).opts;if(val&&val!=opts.default_value) return encodeURIComponent(opts.fieldname) -+'='+encodeURIComponent(val);}).join('&'))},render:function(){this.grid=new Slick.Grid("#"+this.id,this.dataView,$.map(this.columns,function(col){return!col.hidden?col:null;}),this.options);var me=this;this.dataView.onRowsChanged.subscribe(function(e,args){me.grid.invalidateRows(args.rows);me.grid.render();});this.dataView.onRowCountChanged.subscribe(function(e,args){me.grid.updateRowCount();me.grid.render();});this.add_grid_events&&this.add_grid_events();},prepare_data_view:function(items){this.dataView=new Slick.Data.DataView({inlineFilters:true});this.dataView.beginUpdate();this.dataView.setItems(items);this.dataView.endUpdate();},export:function(){var me=this;var res=[$.map(this.columns,function(v){return v.name;})].concat(this.get_view_data());wn.require("js/lib/downloadify/downloadify.min.js");wn.require("js/lib/downloadify/swfobject.js");var id=wn.dom.set_unique_id();var msgobj=msgprint('

    You must have Flash 10 installed to download this file.

    ');Downloadify.create(id,{filename:function(){return me.title+'.csv';},data:function(){return wn.to_csv(res);},swf:'js/lib/downloadify/downloadify.swf',downloadImage:'js/lib/downloadify/download.png',onComplete:function(){msgobj.hide();},onCancel:function(){msgobj.hide();},onError:function(){msgobj.hide();},width:100,height:30,transparent:true,append:false});return false;},render_plot:function(){if(!this.get_plot_data)return;wn.require('js/lib/flot/jquery.flot.js');$.plot(this.wrapper.find('.plot').toggle(true),this.get_plot_data(),this.get_plot_options());this.setup_plot_hover();},setup_plot_hover:function(){var me=this;this.tooltip_id=wn.dom.set_unique_id();function showTooltip(x,y,contents){$('
    '+contents+'
    ').css({position:'absolute',display:'none',top:y+5,left:x+5,border:'1px solid #fdd',padding:'2px','background-color':'#fee',opacity:0.80}).appendTo("body").fadeIn(200);} ++'='+encodeURIComponent(val);}).join('&'))},render:function(){this.grid=new Slick.Grid("#"+this.id,this.dataView,this.dataview_columns,this.options);var me=this;this.dataView.onRowsChanged.subscribe(function(e,args){me.grid.invalidateRows(args.rows);me.grid.render();});this.dataView.onRowCountChanged.subscribe(function(e,args){me.grid.updateRowCount();me.grid.render();});this.add_grid_events&&this.add_grid_events();},prepare_data_view:function(items){this.dataView=new Slick.Data.DataView({inlineFilters:true});this.dataView.beginUpdate();this.dataView.setItems(items);if(this.dataview_filter)this.dataView.setFilter(this.dataview_filter);this.dataView.endUpdate();},export:function(){var me=this;var res=[$.map(this.columns,function(v){return v.name;})].concat(this.get_view_data());wn.require("js/lib/downloadify/downloadify.min.js");wn.require("js/lib/downloadify/swfobject.js");var id=wn.dom.set_unique_id();var msgobj=msgprint('

    You must have Flash 10 installed to download this file.

    ');Downloadify.create(id,{filename:function(){return me.title+'.csv';},data:function(){return wn.to_csv(res);},swf:'js/lib/downloadify/downloadify.swf',downloadImage:'js/lib/downloadify/download.png',onComplete:function(){msgobj.hide();},onCancel:function(){msgobj.hide();},onError:function(){msgobj.hide();},width:100,height:30,transparent:true,append:false});return false;},render_plot:function(){var plot_data=this.get_plot_data?this.get_plot_data():null;if(!plot_data){this.wrapper.find('.plot').toggle(false);return;} +wn.require('js/lib/flot/jquery.flot.js');$.plot(this.wrapper.find('.plot').toggle(true),plot_data,this.get_plot_options());this.setup_plot_hover();},setup_plot_hover:function(){var me=this;this.tooltip_id=wn.dom.set_unique_id();function showTooltip(x,y,contents){$('
    '+contents+'
    ').css({position:'absolute',display:'none',top:y+5,left:x+5,border:'1px solid #fdd',padding:'2px','background-color':'#fee',opacity:0.80}).appendTo("body").fadeIn(200);} this.previousPoint=null;this.wrapper.find('.plot').bind("plothover",function(event,pos,item){if(item){if(me.previousPoint!=item.dataIndex){me.previousPoint=item.dataIndex;$("#"+me.tooltip_id).remove();var x=dateutil.obj_to_user(new Date(item.datapoint[0])),y=fmt_money(item.datapoint[1]);showTooltip(item.pageX,item.pageY,item.series.label+" on "+x+" = "+y);}} else{$("#"+me.tooltip_id).remove();me.previousPoint=null;}});},get_view_data:function(){var res=[];var col_map=$.map(this.columns,function(v){return v.field;});for(var i=0,len=this.dataView.getLength();i%(value)s
    ',{_style:dataContext._style||"",value:fmt_money(value)});},text_formatter:function(row,cell,value,columnDef,dataContext){return repl('%(value)s',{_style:dataContext._style||"",esc_value:cstr(value).replace(/"/g,'\"'),value:cstr(value)});},check_formatter:function(row,cell,value,columnDef,dataContext){return repl("",{"id":dataContext.id,"checked":dataContext.checked?"checked":""})},apply_link_formatters:function(){var me=this;$.each(this.columns,function(i,col){if(col.link_formatter){col.formatter=function(row,cell,value,columnDef,dataContext){if(!value)return"";if(dataContext._show){return repl('%(value)s',{_style:dataContext._style||"",value:value});} -var link_formatter=wn.cur_grid_report.columns[cell].link_formatter;var html=repl('0.001||flt(item[col.field])<-0.001){return true;}}} +return false;} +return true;},show_zero_check:function(){var me=this;this.wrapper.bind('make',function(){me.wrapper.find('.show-zero').toggle(true).find('input').click(function(){me.refresh();});});},is_default:function(fieldname){return this[fieldname]==this[fieldname+"_default"];},date_formatter:function(row,cell,value,columnDef,dataContext){return dateutil.str_to_user(value);},currency_formatter:function(row,cell,value,columnDef,dataContext){return repl('
    %(value)s
    ',{_style:dataContext._style||"",value:fmt_money(value)});},text_formatter:function(row,cell,value,columnDef,dataContext){return repl('%(value)s',{_style:dataContext._style||"",esc_value:cstr(value).replace(/"/g,'\"'),value:cstr(value)});},check_formatter:function(row,cell,value,columnDef,dataContext){return repl("",{"id":dataContext.id,"checked":dataContext.checked?"checked":""})},apply_link_formatters:function(){var me=this;$.each(this.dataview_columns,function(i,col){if(col.link_formatter){col.formatter=function(row,cell,value,columnDef,dataContext){if(!value)return"";if(dataContext._show){return repl('%(value)s',{_style:dataContext._style||"",value:value});} +var link_formatter=wn.cur_grid_report.dataview_columns[cell].link_formatter;var html=repl('
    \ %(value)s',{value:value,col_name:link_formatter.filter_input,page_name:wn.container.page.page_name}) @@ -1532,7 +1537,7 @@ this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary') ret='None';if(cint(this.df.hidden)) ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}} -if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';} +if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}} return ret;} Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}} Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);} @@ -1603,7 +1608,7 @@ DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=fun var t=v.split('-');if(t.length!=3){return this.clear();} else if(cint(t[1])>12||cint(t[1])<1){return this.clear();} else if(cint(t[2])>31||cint(t[2])<1){return this.clear();} -return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create&&cur_frm.doc.docstatus==0) +return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create) $(me.btn2).css('display','inline-block');else $dh(me.btn2);}} me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;} me.get_value=function(){return me.txt.value;} diff --git a/public/js/all-web.js b/public/js/all-web.js index c8bab897f4..4a22d2de70 100644 --- a/public/js/all-web.js +++ b/public/js/all-web.js @@ -240,11 +240,11 @@ if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!(me.fields_by_name[df.pare */ wn.provide('wn.pages');wn.provide('wn.views');wn.views.Container=Class.extend({init:function(){this.container=$('#body_div').get(0);this.page=null;this.pagewidth=$('#body_div').width();this.pagemargin=50;},add_page:function(label,onshow,onhide){var page=$('
    ').attr('id',"page-"+label).appendTo(this.container).get(0);if(onshow) $(page).bind('show',onshow);if(onshow) -$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){return;} +$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){$(this.page).trigger('show');return;} var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];} if(!page){console.log('Page not found '+label);return;} if(this.page&&this.page!=page){$(this.page).toggle(false);$(this.page).trigger('hide');} -if(!this.page||this.page!=page){this.page=page;$(this.page).fadeIn();} +if(!this.page||this.page!=page){this.page=page;$(this.page).toggle(true);} this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('\ %(module)s Home\ @@ -373,11 +373,13 @@ val=d[0]+'-'+d[1]+'-'+d[2]+time_str;else if(user_fmt=='mm/dd/yyyy') val=d[1]+'/'+d[2]+'/'+d[0]+time_str;else if(user_fmt=='mm-dd-yyyy') val=d[1]+'-'+d[2]+'-'+d[0]+time_str;} return val;},full_str:function(){var d=new Date();return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' ' -+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');return d[2]+'-'+d[1]+'-'+d[0];} -else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');return d[2]+'-'+d[1]+'-'+d[0];} -else if(user_fmt=='yyyy-mm-dd'){return d;} -else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');return d[2]+'-'+d[0]+'-'+d[1];} -else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');return d[2]+'-'+d[0]+'-'+d[1];}},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+'' ++d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();var time_str='';if(d.search(/ /)!=-1){time_str=" "+d.split(" ")[1];d=d.split(" ")[0];} +if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[1]+'-'+d[0];} +else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[1]+'-'+d[0];} +else if(user_fmt=='yyyy-mm-dd'){var val=d;} +else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[0]+'-'+d[1];} +else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[0]+'-'+d[1];} +return val+time_str;},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+'' var mm=cint(d.getMinutes()/5)*5+'' return(hh.length==1?'0'+hh:hh)+':'+(mm.length==1?'0'+mm:mm);}} wn.datetime.only_date=function(val){if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');var d=tmp[0].split('-');}else{var d=val.split('-');} @@ -490,14 +492,14 @@ document.body.appendChild(temp);temp.submit();return temp;} /* * lib/js/legacy/utils/msgprint.js */ -var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v)msgprint(v);}) +var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v){msgprint(v);}}) return;} if(typeof(msg)!='string') msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;} if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('
    ').appendTo(msg_dialog.body);} if(msg.search(/
    |

    |

  • /)==-1) msg=replace_newlines(msg);msg_dialog.set_title(title||'Message') -msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;} +if(msg_dialog.msg_area.html())msg_dialog.msg_area.append("
    ");msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;} var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('
    ').appendTo('body');} growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});} var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);} diff --git a/public/js/app/account_tree_grid.js b/public/js/app/account_tree_grid.js index f1bf6bf180..b1e7fb5686 100644 --- a/public/js/app/account_tree_grid.js +++ b/public/js/app/account_tree_grid.js @@ -42,8 +42,11 @@ erpnext.AccountTreeGrid = wn.views.GridReport.extend({ }, filters: [ {fieldtype:"Select", label: "Company", link:"Company", default_value: "Select Company...", - filter: function(val, item, opts) { - return item.company == val || val == opts.default_value || item._show; + filter: function(val, item, opts, me) { + if (item.company == val || val == opts.default_value) { + return me.apply_zero_filter(val, item, opts, me); + } + return false; }}, {fieldtype:"Select", label: "Fiscal Year", link:"Fiscal Year", default_value: "Select Fiscal Year..."}, @@ -67,6 +70,7 @@ erpnext.AccountTreeGrid = wn.views.GridReport.extend({ }); me.set_route(); }); + me.show_zero_check() }, init_filter_values: function() { this.filter_inputs.company.val(sys_defaults.company); @@ -75,7 +79,8 @@ erpnext.AccountTreeGrid = wn.views.GridReport.extend({ this.filter_inputs.to_date.val(dateutil.str_to_user(sys_defaults.year_end_date)); }, prepare_data: function() { - var me = this; + var me = this; + this.data = [] if(this.accounts) { // refresh -- only initialize $.each(this.accounts, function(i, d) { @@ -256,7 +261,9 @@ erpnext.AccountTreeGrid = wn.views.GridReport.extend({ } }); }, - custom_dataview_filter: function(item) { + dataview_filter: function(item) { + if(!wn.cur_grid_report.apply_filters(item)) return false; + if (item.parent_account) { var parent = item.parent_account; while (parent) { diff --git a/public/js/fields.js b/public/js/fields.js index 8fee1068b2..7d00562050 100644 --- a/public/js/fields.js +++ b/public/js/fields.js @@ -23,7 +23,7 @@ this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary') ret='None';if(cint(this.df.hidden)) ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}} -if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';} +if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}} return ret;} Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}} Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);} @@ -94,7 +94,7 @@ DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=fun var t=v.split('-');if(t.length!=3){return this.clear();} else if(cint(t[1])>12||cint(t[1])<1){return this.clear();} else if(cint(t[2])>31||cint(t[2])<1){return this.clear();} -return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create&&cur_frm.doc.docstatus==0) +return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create) $(me.btn2).css('display','inline-block');else $dh(me.btn2);}} me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;} me.get_value=function(){return me.txt.value;}