[report]general ledger report migrated to script report
diff --git a/accounts/report/general_ledger/__init__.py b/accounts/report/general_ledger/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/accounts/report/general_ledger/__init__.py
diff --git a/accounts/report/general_ledger/general_ledger.js b/accounts/report/general_ledger/general_ledger.js
new file mode 100644
index 0000000..b0cd485
--- /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 0000000..e99ea20
--- /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 0000000..ef169db
--- /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