From c313ca99ffc6b3a9342e09f432b536c8e39730c3 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 6 Dec 2013 16:36:23 +0530 Subject: [PATCH] [report]general ledger report migrated to script report --- accounts/report/general_ledger/__init__.py | 0 .../report/general_ledger/general_ledger.js | 51 +++++++++++++++++++ .../report/general_ledger/general_ledger.py | 49 ++++++++++++++++++ .../report/general_ledger/general_ledger.txt | 21 ++++++++ 4 files changed, 121 insertions(+) create mode 100644 accounts/report/general_ledger/__init__.py create mode 100644 accounts/report/general_ledger/general_ledger.js create mode 100644 accounts/report/general_ledger/general_ledger.py create mode 100644 accounts/report/general_ledger/general_ledger.txt diff --git a/accounts/report/general_ledger/__init__.py b/accounts/report/general_ledger/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/accounts/report/general_ledger/general_ledger.js b/accounts/report/general_ledger/general_ledger.js new file mode 100644 index 0000000000..b0cd485527 --- /dev/null +++ b/accounts/report/general_ledger/general_ledger.js @@ -0,0 +1,51 @@ +// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +// License: GNU General Public License v3. See license.txt + +wn.query_reports["General Ledger"] = { + "filters": [ + { + "fieldname":"company", + "label": wn._("Company"), + "fieldtype": "Link", + "options": "Company", + "default": wn.defaults.get_user_default("company"), + "reqd": 1 + }, + { + "fieldname":"account", + "label": wn._("Account"), + "fieldtype": "Link", + "options": "Account" + }, + { + "fieldname":"voucher_no", + "label": wn._("Voucher No"), + "fieldtype": "Data", + }, + { + "fieldtype": "Break", + }, + { + "fieldname":"from_date", + "label": wn._("From Date"), + "fieldtype": "Date", + "default": wn.datetime.add_months(wn.datetime.get_today(), -1), + "reqd": 1, + "width": "60px" + }, + { + "fieldname":"to_date", + "label": wn._("To Date"), + "fieldtype": "Date", + "default": wn.datetime.get_today(), + "reqd": 1, + "width": "60px" + }, + { + "fieldname":"group_by", + "label": wn._("Group by"), + "fieldtype": "Select", + "options": "\nAccount\nVoucher" + } + ] +} \ No newline at end of file diff --git a/accounts/report/general_ledger/general_ledger.py b/accounts/report/general_ledger/general_ledger.py new file mode 100644 index 0000000000..e99ea2016b --- /dev/null +++ b/accounts/report/general_ledger/general_ledger.py @@ -0,0 +1,49 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import flt + +def execute(filters=None): + columns = get_columns() + if filters.get("group_by"): + data = get_grouped_gle(filters) + else: + data = get_gl_entries(filters) + + return columns, data + +def get_columns(): + return ["Posting Date:Date:100", "Account:Link/Account:200", "Debit:Currency:100", + "Credit:Currency:100", "Voucher Type::120", "Voucher No::160", "Remarks::200"] + +def get_gl_entries(filters): + return webnotes.conn.sql("""select + posting_date, account, debit, credit, voucher_type, voucher_no, cost_center, remarks + from `tabGL Entry` + where company=%(company)s + and posting_date between %(from_date)s and %(to_date)s + {conditions} + order by posting_date, account"""\ + .format(conditions=get_conditions(filters)), filters) + +def get_conditions(filters): + return " and account=%(account)s" if filters.get("account") else "" + +def get_grouped_gle(filters): + gle_map = {} + gle = get_gl_entries(filters) + for d in gle: + gle_map.setdefault(d[1 if filters["group_by"]=="Account" else 5], []).append(d) + + data = [] + for entries in gle_map.values(): + total_debit = total_credit = 0.0 + for entry in entries: + data.append(entry) + total_debit += flt(entry[2]) + total_credit += flt(entry[3]) + + data.append(["", "Total", total_debit, total_credit, "", "", ""]) + return data \ No newline at end of file diff --git a/accounts/report/general_ledger/general_ledger.txt b/accounts/report/general_ledger/general_ledger.txt new file mode 100644 index 0000000000..ef169dbe88 --- /dev/null +++ b/accounts/report/general_ledger/general_ledger.txt @@ -0,0 +1,21 @@ +[ + { + "creation": "2013-12-06 13:22:23", + "docstatus": 0, + "modified": "2013-12-06 13:22:23", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "name": "__common__", + "ref_doctype": "GL Entry", + "report_name": "General Ledger", + "report_type": "Script Report" + }, + { + "doctype": "Report", + "name": "General Ledger" + } +] \ No newline at end of file