| # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
| # License: GNU General Public License v3. See license.txt |
| |
| from __future__ import unicode_literals |
| from itertools import groupby |
| from operator import itemgetter |
| import frappe |
| from frappe.utils import add_to_date |
| from erpnext.accounts.report.general_ledger.general_ledger import execute |
| |
| |
| def get(filters=None): |
| filters = frappe._dict({ |
| "company": "Gadget Technologies Pvt. Ltd.", |
| "from_date": get_from_date_from_timespan(filters.get("timespan")), |
| "to_date": "2020-12-12", |
| "account": "Cash - GTPL", |
| "group_by": "Group by Voucher (Consolidated)" |
| }) |
| report_columns, report_results = execute(filters=filters) |
| |
| interesting_fields = ["posting_date", "balance"] |
| |
| columns = [column for column in report_columns if column["fieldname"] in interesting_fields] |
| |
| _results = [] |
| for row in report_results[1:-2]: |
| _results.append([row[key] for key in interesting_fields]) |
| |
| grouped_results = groupby(_results, key=itemgetter(0)) |
| |
| results = [list(values)[-1] for key, values in grouped_results] |
| |
| return { |
| "labels": [result[0] for result in results], |
| "datasets": [{ |
| "name": "Cash - GTPL", |
| "values": [result[1] for result in results] |
| }] |
| } |
| |
| def get_from_date_from_timespan(timespan): |
| days = months = years = 0 |
| if "Last Week" == timespan: |
| days = -7 |
| if "Last Month" == timespan: |
| months = -1 |
| elif "Last Quarter" == timespan: |
| months = -3 |
| elif "Last Year" == timespan: |
| years = -1 |
| return add_to_date(None, years=years, months=months, days=days, |
| as_string=True, as_datetime=True) |