# 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 erpnext.accounts.report.general_ledger.general_ledger import execute


def get():
    filters = frappe._dict({
        "company": "Gadget Technologies Pvt. Ltd.",
        "from_date": "2000-01-01",
        "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]
        }]
    }

# 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)

Add timespan filter