diff --git a/accounts/page/general_ledger/README.md b/accounts/page/general_ledger/README.md deleted file mode 100644 index 8c51e9152c..0000000000 --- a/accounts/page/general_ledger/README.md +++ /dev/null @@ -1 +0,0 @@ -General Ledger report (for all transactions and accounts). \ No newline at end of file diff --git a/accounts/page/general_ledger/__init__.py b/accounts/page/general_ledger/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/accounts/page/general_ledger/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/accounts/page/general_ledger/general_ledger.css b/accounts/page/general_ledger/general_ledger.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/accounts/page/general_ledger/general_ledger.html b/accounts/page/general_ledger/general_ledger.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js deleted file mode 100644 index 7eeab58416..0000000000 --- a/accounts/page/general_ledger/general_ledger.js +++ /dev/null @@ -1,396 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -// License: GNU General Public License v3. See license.txt - -wn.pages['general-ledger'].onload = function(wrapper) { - wn.ui.make_app_page({ - parent: wrapper, - title: wn._('General Ledger'), - single_column: true - }); - - erpnext.general_ledger = new erpnext.GeneralLedger(wrapper); - wrapper.appframe.add_module_icon("Accounts") - -} - -erpnext.GeneralLedger = wn.views.GridReport.extend({ - init: function(wrapper) { - this._super({ - title: wn._("General Ledger"), - page: wrapper, - parent: $(wrapper).find('.layout-main'), - appframe: wrapper.appframe, - doctypes: ["Company", "Account", "GL Entry", "Cost Center"], - }); - }, - setup_columns: function() { - this.columns = [ - {id: "posting_date", name: wn._("Posting Date"), field: "posting_date", width: 100, - formatter: this.date_formatter}, - {id: "account", name: wn._("Account"), field: "account", width: 240, - link_formatter: { - filter_input: "account", - open_btn: true, - doctype: "'Account'" - }}, - {id: "against_account", name: wn._("Against Account"), field: "against_account", - width: 240, hidden: !this.account}, - - {id: "debit", name: wn._("Debit"), field: "debit", width: 100, - formatter: this.currency_formatter}, - {id: "credit", name: wn._("Credit"), field: "credit", width: 100, - formatter: this.currency_formatter}, - {id: "voucher_type", name: wn._("Voucher Type"), field: "voucher_type", width: 120}, - {id: "voucher_no", name: wn._("Voucher No"), field: "voucher_no", width: 160, - link_formatter: { - filter_input: "voucher_no", - open_btn: true, - doctype: "dataContext.voucher_type" - }}, - {id: "remarks", name: wn._("Remarks"), field: "remarks", width: 200, - formatter: this.text_formatter}, - - ]; - }, - - filters: [ - {fieldtype:"Select", label: wn._("Company"), link:"Company", default_value: wn._("Select Company..."), - filter: function(val, item, opts) { - return item.company == val || val == opts.default_value; - }}, - {fieldtype:"Link", label: wn._("Account"), link:"Account", - filter: function(val, item, opts, me) { - if(!val) { - return true; - } else { - // true if GL Entry belongs to selected - // account ledger or group - return me.is_child_account(val, item.account); - } - }}, - {fieldtype:"Data", label: wn._("Voucher No"), - filter: function(val, item, opts) { - if(!val) return true; - return (item.voucher_no && item.voucher_no.indexOf(val)!=-1); - }}, - {fieldtype:"Date", label: wn._("From Date"), filter: function(val, item) { - return dateutil.str_to_obj(val) <= dateutil.str_to_obj(item.posting_date); - }}, - {fieldtype:"Label", label: wn._("To")}, - {fieldtype:"Date", label: wn._("To Date"), filter: function(val, item) { - return dateutil.str_to_obj(val) >= dateutil.str_to_obj(item.posting_date); - }}, - {fieldtype: "Check", label: wn._("Group by Ledger")}, - {fieldtype: "Check", label: wn._("Group by Voucher")}, - {fieldtype:"Button", label: wn._("Refresh"), icon:"icon-refresh icon-white"}, - {fieldtype:"Button", label: wn._("Reset Filters")} - ], - setup_filters: function() { - this._super(); - var me = this; - - this.accounts_by_company = this.make_accounts_by_company(); - - // filter accounts options by company - this.filter_inputs.company.on("change", function() { - me.setup_account_filter(this); - me.refresh(); - }); - - this.trigger_refresh_on_change(["group_by_ledger", "group_by_voucher"]); - }, - setup_account_filter: function(company_filter) { - var me = this; - - var $account = me.filter_inputs.account; - var company = $(company_filter).val(); - var default_company = this.filter_inputs.company.get(0).opts.default_value; - var opts = $account.get(0).opts; - opts.list = $.map(wn.report_dump.data["Account"], function(ac) { - return (company===default_company || - me.accounts_by_company[company].indexOf(ac.name)!=-1) ? - ac.name : null; - }); - - this.set_autocomplete($account, opts.list); - - }, - init_filter_values: function() { - this._super(); - this.toggle_group_by_checks(); - this.filter_inputs.company.trigger("change"); - }, - apply_filters_from_route: function() { - this._super(); - this.toggle_group_by_checks(); - }, - make_accounts_by_company: function() { - var accounts_by_company = {}; - var me = this; - $.each(wn.report_dump.data["Account"], function(i, ac) { - if(!accounts_by_company[ac.company]) accounts_by_company[ac.company] = []; - accounts_by_company[ac.company].push(ac.name); - }); - return accounts_by_company; - }, - is_child_account: function(account, item_account) { - account = this.account_by_name[account]; - item_account = this.account_by_name[item_account]; - return ((item_account.lft >= account.lft) && (item_account.rgt <= account.rgt)); - }, - toggle_group_by_checks: function() { - this.make_account_by_name(); - - // this.filter_inputs.group_by_ledger - // .parent().toggle(!!(this.account_by_name[this.account] - // && this.account_by_name[this.account].group_or_ledger==="Group")); - // - // this.filter_inputs.group_by_voucher - // .parent().toggle(!!(this.account_by_name[this.account] - // && this.account_by_name[this.account].group_or_ledger==="Ledger")); - }, - prepare_data: function() { - var me = this; - var data = wn.report_dump.data["GL Entry"]; - var out = []; - - this.toggle_group_by_checks(); - - 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(wn._("From Date must be before To Date")); - return; - } - - // add Opening, Closing, Totals rows - // if filtered by account and / or voucher - var opening = this.make_summary_row("Opening", this.account); - var totals = this.make_summary_row("Totals", this.account); - - var grouped_ledgers = {}; - $.each(data, function(i, item) { - if(me.apply_filter(item, "company") && - (me.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); - - // create grouping by ledger - if(!grouped_ledgers[item.account]) { - grouped_ledgers[item.account] = { - entries: [], - entries_group_by_voucher: {}, - opening: me.make_summary_row("Opening", item.account), - totals: me.make_summary_row("Totals", item.account), - closing: me.make_summary_row("Closing (Opening + Totals)", - item.account) - }; - } - - if(!grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no]) { - grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no] = { - row: {}, - totals: {"debit": 0, "credit": 0} - } - } - - if(!me.voucher_no && (date < from_date || item.is_opening=="Yes")) { - opening.debit += item.debit; - opening.credit += item.credit; - - grouped_ledgers[item.account].opening.debit += item.debit; - grouped_ledgers[item.account].opening.credit += item.credit; - - } else if(date <= to_date) { - - totals.debit += item.debit; - totals.credit += item.credit; - - grouped_ledgers[item.account].totals.debit += item.debit; - grouped_ledgers[item.account].totals.credit += item.credit; - grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no] - .totals.debit += item.debit; - grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no] - .totals.credit += item.credit; - } - if(item.account) { - item.against_account = me.voucher_accounts[item.voucher_type + ":" - + item.voucher_no][(item.debit > 0 ? "credits" : "debits")].join(", "); - } - - if(me.apply_filters(item) && (me.voucher_no || item.is_opening=="No")) { - out.push(item); - grouped_ledgers[item.account].entries.push(item); - - if(grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no].row){ - grouped_ledgers[item.account].entries_group_by_voucher[item.voucher_no] - .row = $.extend({}, item); - } - } - } - }); - - var closing = this.make_summary_row("Closing (Opening + Totals)", this.account); - closing.debit = opening.debit + totals.debit; - closing.credit = opening.credit + totals.credit; - - if(me.account) { - me.appframe.set_title(wn._("General Ledger: ") + me.account); - - // group by ledgers - if(this.account_by_name[this.account].group_or_ledger==="Group" - && this.group_by_ledger) { - out = this.group_data_by_ledger(grouped_ledgers); - } - - if(this.account_by_name[this.account].group_or_ledger==="Ledger" - && this.group_by_voucher) { - out = this.group_data_by_voucher(grouped_ledgers); - } - - opening = me.get_balance(me.account_by_name[me.account].debit_or_credit, opening) - closing = me.get_balance(me.account_by_name[me.account].debit_or_credit, closing) - - out = [opening].concat(out).concat([totals, closing]); - } else { - me.appframe.set_title(wn._("General Ledger")); - out = out.concat([totals]); - } - - this.data = out; - }, - - group_data_by_ledger: function(grouped_ledgers) { - var me = this; - var out = [] - $.each(Object.keys(grouped_ledgers).sort(), function(i, account) { - if(grouped_ledgers[account].entries.length) { - grouped_ledgers[account].closing.debit = - grouped_ledgers[account].opening.debit - + grouped_ledgers[account].totals.debit; - - grouped_ledgers[account].closing.credit = - grouped_ledgers[account].opening.credit - + grouped_ledgers[account].totals.credit; - - grouped_ledgers[account].opening = - me.get_balance(me.account_by_name[me.account].debit_or_credit, - grouped_ledgers[account].opening) - grouped_ledgers[account].closing = - me.get_balance(me.account_by_name[me.account].debit_or_credit, - grouped_ledgers[account].closing) - - out = out.concat([grouped_ledgers[account].opening]) - .concat(grouped_ledgers[account].entries) - .concat([grouped_ledgers[account].totals, - grouped_ledgers[account].closing, - {id: "_blank" + i, debit: "", credit: ""}]); - } - }); - return [{id: "_blank_first", debit: "", credit: ""}].concat(out); - }, - - group_data_by_voucher: function(grouped_ledgers) { - var me = this; - var out = [] - $.each(Object.keys(grouped_ledgers).sort(), function(i, account) { - if(grouped_ledgers[account].entries.length) { - $.each(Object.keys(grouped_ledgers[account].entries_group_by_voucher), - function(j, voucher) { - voucher_dict = grouped_ledgers[account].entries_group_by_voucher[voucher]; - if(voucher_dict && - (voucher_dict.totals.debit || voucher_dict.totals.credit)) { - voucher_dict.row.debit = voucher_dict.totals.debit; - voucher_dict.row.credit = voucher_dict.totals.credit; - voucher_dict.row.id = "entry_grouped_by_" + voucher - out = out.concat(voucher_dict.row); - } - }); - } - }); - return out; - }, - - get_balance: function(debit_or_credit, balance) { - if(debit_or_credit == "Debit") { - balance.debit -= balance.credit; balance.credit = 0; - } else { - balance.credit -= balance.debit; balance.debit = 0; - } - return balance - }, - - make_summary_row: function(label, item_account) { - return { - account: label, - debit: 0.0, - credit: 0.0, - id: ["", label, item_account].join("_").replace(" ", "_").toLowerCase(), - _show: true, - _style: "font-weight: bold" - } - }, - - make_account_by_name: function() { - this.account_by_name = this.make_name_map(wn.report_dump.data["Account"]); - this.make_voucher_accounts_map(); - }, - - make_voucher_accounts_map: function() { - this.voucher_accounts = {}; - var data = wn.report_dump.data["GL Entry"]; - for(var i=0, j=data.length; i 0) { - va.debits.push(gl.account); - } else { - va.credits.push(gl.account); - } - } - }, - - get_plot_data: function() { - var data = []; - var me = this; - if(!me.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() }, - series: { downsample: { threshold: 1000 } } - } - }, -}); \ No newline at end of file diff --git a/accounts/page/general_ledger/general_ledger.txt b/accounts/page/general_ledger/general_ledger.txt deleted file mode 100644 index 2cc8a601e9..0000000000 --- a/accounts/page/general_ledger/general_ledger.txt +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "creation": "2012-09-14 11:25:48", - "docstatus": 0, - "modified": "2013-07-11 14:42:21", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "Page", - "icon": "icon-table", - "module": "Accounts", - "name": "__common__", - "page_name": "general-ledger", - "standard": "Yes", - "title": "General Ledger" - }, - { - "doctype": "Page Role", - "name": "__common__", - "parent": "general-ledger", - "parentfield": "roles", - "parenttype": "Page" - }, - { - "doctype": "Page", - "name": "general-ledger" - }, - { - "doctype": "Page Role", - "role": "Analytics" - }, - { - "doctype": "Page Role", - "role": "Accounts Manager" - }, - { - "doctype": "Page Role", - "role": "Accounts User" - } -] \ No newline at end of file diff --git a/patches/1312/p01_delete_old_stock_reports.py b/patches/1312/p01_delete_old_stock_reports.py index 17c8947478..eac9b7b844 100644 --- a/patches/1312/p01_delete_old_stock_reports.py +++ b/patches/1312/p01_delete_old_stock_reports.py @@ -7,7 +7,9 @@ def execute(): webnotes.delete_doc('Page', 'stock-ledger') webnotes.delete_doc('Page', 'stock-ageing') webnotes.delete_doc('Page', 'stock-level') + webnotes.delete_doc('Page', 'general-ledger') os.system("rm -rf app/stock/page/stock_ledger") os.system("rm -rf app/stock/page/stock_ageing") - os.system("rm -rf app/stock/page/stock_level") \ No newline at end of file + os.system("rm -rf app/stock/page/stock_level") + os.system("rm -rf app/accounts/page/general_ledger") \ No newline at end of file