From d0387f41dfd7578d246346f89079c40aba4d38fa Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Wed, 22 Jul 2015 18:44:47 +0530 Subject: [PATCH] Opening Balance row added to Stock Ledger Report --- .../stock/report/stock_ledger/stock_ledger.py | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index 0651ae8961..c2c6d1ae7f 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -9,8 +9,13 @@ def execute(filters=None): columns = get_columns() sl_entries = get_stock_ledger_entries(filters) item_details = get_item_details(filters) - + opening_row = get_opening_balance(filters, columns) + data = [] + + if opening_row: + data.append(opening_row) + for sle in sl_entries: item_detail = item_details[sle.item_code] @@ -20,7 +25,7 @@ def execute(filters=None): (sle.incoming_rate if sle.actual_qty > 0 else 0.0), sle.valuation_rate, sle.stock_value, sle.voucher_type, sle.voucher_no, sle.batch_no, sle.serial_no, sle.company]) - + return columns, data def get_columns(): @@ -40,7 +45,7 @@ def get_stock_ledger_entries(filters): where company = %(company)s and posting_date between %(from_date)s and %(to_date)s {sle_conditions} - order by posting_date desc, posting_time desc, name desc"""\ + order by posting_date asc, posting_time asc, name asc"""\ .format(sle_conditions=get_sle_conditions(filters)), filters, as_dict=1) def get_item_details(filters): @@ -73,3 +78,22 @@ def get_sle_conditions(filters): conditions.append("voucher_no=%(voucher_no)s") return "and {}".format(" and ".join(conditions)) if conditions else "" + +def get_opening_balance(filters, columns): + if not (filters.item_code and filters.warehouse and filters.from_date): + return + + from erpnext.stock.stock_ledger import get_previous_sle + last_entry = get_previous_sle({ + "item_code": filters.item_code, + "warehouse": filters.warehouse, + "posting_date": filters.from_date, + "posting_time": "00:00:00" + }) + + row = [""]*len(columns) + row[1] = _("'Opening'") + for i, v in ((9, 'qty_after_transaction'), (11, 'valuation_rate'), (12, 'stock_value')): + row[i] = last_entry.get(v, 0) + + return row \ No newline at end of file