From 823c021e9c92fd9da53722e7d7a3132fb283b35c Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 19 Sep 2012 12:01:01 +0530 Subject: [PATCH] added index patch and updated general_ledger --- .../page/general_ledger/general_ledger.js | 44 +++++++++---------- erpnext/patches/patch_list.py | 4 ++ .../add_stock_ledger_entry_index.py | 10 +++++ erpnext/startup/report_data_map.py | 15 +++++-- .../stock/page/stock_ledger/stock_ledger.js | 7 +-- public/js/all-app.js | 5 ++- public/js/all-web.js | 3 +- 7 files changed, 54 insertions(+), 34 deletions(-) create mode 100644 erpnext/patches/september_2012/add_stock_ledger_entry_index.py diff --git a/erpnext/accounts/page/general_ledger/general_ledger.js b/erpnext/accounts/page/general_ledger/general_ledger.js index 7fdf57c5176..c74b8c50248 100644 --- a/erpnext/accounts/page/general_ledger/general_ledger.js +++ b/erpnext/accounts/page/general_ledger/general_ledger.js @@ -41,11 +41,11 @@ wn.pages['general-ledger'].onload = function(wrapper) { 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; + return item.company == val || val == opts.default_value; }}, {fieldtype:"Select", label: "Account", link:"Account", default_value: "Select Account...", filter: function(val, item, opts, me) { - if(val == opts.default_value || item._show) { + if(val == opts.default_value) { return true; } else { // true if GL Entry belongs to selected @@ -56,14 +56,14 @@ wn.pages['general-ledger'].onload = function(wrapper) { {fieldtype:"Data", label: "Voucher No", filter: function(val, item, opts) { if(!val) return true; - return (item.voucher_no && item.voucher_no.indexOf(val)!=-1) || item._show; + return (item.voucher_no && item.voucher_no.indexOf(val)!=-1); }}, {fieldtype:"Date", label: "From Date", filter: function(val, item) { - return item._show || dateutil.user_to_obj(val) <= dateutil.str_to_obj(item.posting_date); + return dateutil.str_to_obj(val) <= dateutil.str_to_obj(item.posting_date); }}, {fieldtype:"Label", label: "To"}, {fieldtype:"Date", label: "To Date", filter: function(val, item) { - return item._show || dateutil.user_to_obj(val) >= dateutil.str_to_obj(item.posting_date); + return dateutil.str_to_obj(val) >= dateutil.str_to_obj(item.posting_date); }}, {fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"}, {fieldtype:"Button", label: "Reset Filters"} @@ -85,14 +85,15 @@ wn.pages['general-ledger'].onload = function(wrapper) { // add Opening, Closing, Totals rows // if filtered by account and / or voucher var data = wn.report_dump.data["GL Entry"]; - this.make_account_by_name(); + var out = []; + + if(!this.account_by_name) + this.account_by_name = this.make_name_map(wn.report_dump.data["Account"]); + var me = this; - var account = this.filter_inputs.account.val(); - var from_date = dateutil.user_to_obj(this.filter_inputs.from_date.val()); - var to_date = dateutil.user_to_obj(this.filter_inputs.to_date.val()); - var voucher_no = this.filter_inputs.voucher_no.val(); - var default_account = this.filter_inputs.account.get(0).opts.default_value; + var from_date = dateutil.str_to_obj(this.from_date); + var to_date = dateutil.str_to_obj(this.to_date); if(to_date < from_date) { msgprint("From Date must be before To Date"); @@ -109,8 +110,8 @@ wn.pages['general-ledger'].onload = function(wrapper) { } $.each(data, function(i, item) { - if((account!=default_account ? me.is_child_account(account, item.account) : true) && - (voucher_no ? item.voucher_no==voucher_no : true)) { + if((!me.is_default("account") ? me.is_child_account(me.account, item.account) : true) && + (me.voucher_no ? item.voucher_no==me.voucher_no : true)) { var date = dateutil.str_to_obj(item.posting_date); @@ -121,6 +122,10 @@ wn.pages['general-ledger'].onload = function(wrapper) { totals.debit += item.debit; totals.credit += item.credit; } + + if(me.apply_filters(item)) { + out.push(item); + } } }) @@ -131,21 +136,14 @@ wn.pages['general-ledger'].onload = function(wrapper) { } - if(account != default_account) { - var out = [opening].concat(data).concat([totals, closing]); + if(!me.is_default("account")) { + var out = [opening].concat(out).concat([totals, closing]); } else { - var out = data.concat([totals]); + var out = out.concat([totals]); } this.prepare_data_view(out); }, - make_account_by_name: function() { - this.account_by_name = {}; - var me = this; - $.each(wn.report_dump.data['Account'], function(i, v) { - me.account_by_name[v.name] = v; - }) - } }); } diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py index 5a38c5b1bfb..dbd4b8c10b4 100644 --- a/erpnext/patches/patch_list.py +++ b/erpnext/patches/patch_list.py @@ -580,4 +580,8 @@ patch_list = [ 'patch_module': 'patches.september_2012', 'patch_file': 'customer_permission_patch', }, + { + 'patch_module': 'patches.september_2012', + 'patch_file': 'add_stock_ledger_entry_index', + }, ] diff --git a/erpnext/patches/september_2012/add_stock_ledger_entry_index.py b/erpnext/patches/september_2012/add_stock_ledger_entry_index.py new file mode 100644 index 00000000000..bac9a086df7 --- /dev/null +++ b/erpnext/patches/september_2012/add_stock_ledger_entry_index.py @@ -0,0 +1,10 @@ +import webnotes + +def execute(): + webnotes.conn.commit() + try: + webnotes.conn.sql("""alter table `tabStock Ledger Entry` add index posting_sort_index(posting_date, posting_time, name)""")webnotes.conn.commit() + except Exception, e: + if e.args[0]!=1061: raise e + webnotes.conn.begin() + \ No newline at end of file diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py index 8e6761acfb5..b13218014f4 100644 --- a/erpnext/startup/report_data_map.py +++ b/erpnext/startup/report_data_map.py @@ -15,6 +15,10 @@ # along with this program. If not, see . from __future__ import unicode_literals + +# mappings for table dumps +# "remember to add indexes!" + data_map = { "Account": { "columns": ["name", "parent_account", "lft", "rgt", "debit_or_credit", "is_pl_account", @@ -30,7 +34,11 @@ data_map = { "columns": ["account", "posting_date", "cost_center", "debit", "credit", "is_opening", "company", "voucher_type", "voucher_no", "remarks"], "conditions": ["ifnull(is_cancelled, 'No')='No'"], - "order_by": "posting_date, account" + "order_by": "posting_date, account", + "links": { + "account": ["Account", "name"], + "company": ["Company", "name"] + } }, "Company": { "columns": ["name"], @@ -43,12 +51,13 @@ data_map = { "Stock Ledger Entry": { "columns": ["posting_date", "posting_time", "item_code", "warehouse", "actual_qty as qty", "voucher_type", "voucher_no"], - "condition": ["ifnull(is_cancelled, 'No')='No'"], + "conditions": ["ifnull(is_cancelled, 'No')='No'"], "order_by": "posting_date, posting_time, name", "links": { "item_code": ["Item", "name"], "warehouse": ["Warehouse", "name"] - } + }, + "force_index": "posting_sort_index" }, "Item": { "columns": ["name", "if(item_name=name, '', item_name) as item_name", diff --git a/erpnext/stock/page/stock_ledger/stock_ledger.js b/erpnext/stock/page/stock_ledger/stock_ledger.js index 87be0c6472f..ee97868d162 100644 --- a/erpnext/stock/page/stock_ledger/stock_ledger.js +++ b/erpnext/stock/page/stock_ledger/stock_ledger.js @@ -99,7 +99,6 @@ wn.pages['stock-ledger'].onload = function(wrapper) { $.each(wn.report_dump.data["Item"], function(i, item) { item.balance = 0.0; }); // - var t = new Date(); for(var i=0, j=data.length; i2){var total=parseInt(xhr.getResponseHeader('Original-Length')||0)||parseInt(xhr.getResponseHeader('Content-Length'));var completed=parseInt(xhr.responseText.length);var percent=(100.0/total*completed).toFixed(2);opts.progress_bar.css('width',(percent<10?10:percent)+'%');}},50);wn.last_xhr=xhr;return xhr;},complete:function(){opts.progress_bar.css('width','100%');clearInterval(interval);}})} $.ajax(ajax_args);} @@ -1098,7 +1099,7 @@ this.previousPoint=null;this.wrapper.find('.plot').bind("plothover",function(eve 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("2){var total=parseInt(xhr.getResponseHeader('Original-Length')||0)||parseInt(xhr.getResponseHeader('Content-Length'));var completed=parseInt(xhr.responseText.length);var percent=(100.0/total*completed).toFixed(2);opts.progress_bar.css('width',(percent<10?10:percent)+'%');}},50);wn.last_xhr=xhr;return xhr;},complete:function(){opts.progress_bar.css('width','100%');clearInterval(interval);}})} $.ajax(ajax_args);}