Aditya Hase | 953229f | 2019-01-08 23:06:23 +0530 | [diff] [blame] | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
| 2 | # License: GNU General Public License v3. See license.txt |
| 3 | |
| 4 | from __future__ import unicode_literals |
| 5 | from itertools import groupby |
| 6 | from operator import itemgetter |
| 7 | import frappe |
Aditya Hase | 8896374 | 2019-01-09 11:18:17 +0530 | [diff] [blame^] | 8 | from frappe.utils import add_to_date |
Aditya Hase | 953229f | 2019-01-08 23:06:23 +0530 | [diff] [blame] | 9 | from erpnext.accounts.report.general_ledger.general_ledger import execute |
| 10 | |
| 11 | |
Aditya Hase | 8896374 | 2019-01-09 11:18:17 +0530 | [diff] [blame^] | 12 | def get(filters=None): |
Aditya Hase | 953229f | 2019-01-08 23:06:23 +0530 | [diff] [blame] | 13 | filters = frappe._dict({ |
| 14 | "company": "Gadget Technologies Pvt. Ltd.", |
Aditya Hase | 8896374 | 2019-01-09 11:18:17 +0530 | [diff] [blame^] | 15 | "from_date": get_from_date_from_timespan(filters.get("timespan")), |
Aditya Hase | 953229f | 2019-01-08 23:06:23 +0530 | [diff] [blame] | 16 | "to_date": "2020-12-12", |
| 17 | "account": "Cash - GTPL", |
| 18 | "group_by": "Group by Voucher (Consolidated)" |
| 19 | }) |
| 20 | report_columns, report_results = execute(filters=filters) |
| 21 | |
| 22 | interesting_fields = ["posting_date", "balance"] |
| 23 | |
| 24 | columns = [column for column in report_columns if column["fieldname"] in interesting_fields] |
| 25 | |
| 26 | _results = [] |
| 27 | for row in report_results[1:-2]: |
| 28 | _results.append([row[key] for key in interesting_fields]) |
| 29 | |
| 30 | grouped_results = groupby(_results, key=itemgetter(0)) |
| 31 | |
| 32 | results = [list(values)[-1] for key, values in grouped_results] |
| 33 | |
| 34 | return { |
| 35 | "labels": [result[0] for result in results], |
| 36 | "datasets": [{ |
| 37 | "name": "Cash - GTPL", |
| 38 | "values": [result[1] for result in results] |
| 39 | }] |
| 40 | } |
Aditya Hase | 8896374 | 2019-01-09 11:18:17 +0530 | [diff] [blame^] | 41 | |
| 42 | def get_from_date_from_timespan(timespan): |
| 43 | days = months = years = 0 |
| 44 | if "Last Week" == timespan: |
| 45 | days = -7 |
| 46 | if "Last Month" == timespan: |
| 47 | months = -1 |
| 48 | elif "Last Quarter" == timespan: |
| 49 | months = -3 |
| 50 | elif "Last Year" == timespan: |
| 51 | years = -1 |
| 52 | return add_to_date(None, years=years, months=months, days=days, |
| 53 | as_string=True, as_datetime=True) |