From 64ac22af82e6cbba32720bbb009c39016e45afab Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 11 Apr 2022 14:31:15 +0530 Subject: [PATCH] refactor: add filter type info --- .../report/stock_balance/stock_balance.py | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index afbc6fe249..a5136a3bab 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -3,6 +3,7 @@ from operator import itemgetter +from typing import Optional, TypedDict import frappe from frappe import _ @@ -14,7 +15,20 @@ from erpnext.stock.report.stock_ledger.stock_ledger import get_item_group_condit from erpnext.stock.utils import add_additional_uom_columns, is_reposting_item_valuation_in_progress -def execute(filters=None): +class StockBalanceFilter(TypedDict): + company: Optional[str] + from_date: str + to_date: str + item_group: Optional[str] + item: Optional[str] + warehouse: Optional[str] + warehouse_type: Optional[str] + include_uom: Optional[str] # include extra info in converted UOM + show_stock_ageing_data: bool + show_variant_attributes: bool + + +def execute(filters: Optional[StockBalanceFilter] = None): is_reposting_item_valuation_in_progress() if not filters: filters = {} @@ -92,7 +106,7 @@ def execute(filters=None): return columns, data -def get_columns(filters): +def get_columns(filters: StockBalanceFilter): """return columns""" columns = [ { @@ -215,7 +229,7 @@ def get_columns(filters): return columns -def get_conditions(filters): +def get_conditions(filters: StockBalanceFilter): conditions = "" if not filters.get("from_date"): frappe.throw(_("'From Date' is required")) @@ -249,7 +263,7 @@ def get_conditions(filters): return conditions -def get_stock_ledger_entries(filters, items): +def get_stock_ledger_entries(filters: StockBalanceFilter, items): item_conditions_sql = "" if items: item_conditions_sql = " and sle.item_code in ({})".format( @@ -274,7 +288,7 @@ def get_stock_ledger_entries(filters, items): ) -def get_item_warehouse_map(filters, sle): +def get_item_warehouse_map(filters: StockBalanceFilter, sle): iwb_map = {} from_date = getdate(filters.get("from_date")) to_date = getdate(filters.get("to_date")) @@ -349,7 +363,7 @@ def filter_items_with_no_transactions(iwb_map, float_precision): return iwb_map -def get_items(filters): +def get_items(filters: StockBalanceFilter): "Get items based on item code, item group or brand." conditions = [] if filters.get("item_code"): @@ -368,7 +382,7 @@ def get_items(filters): return items -def get_item_details(items, sle, filters): +def get_item_details(items, sle, filters: StockBalanceFilter): item_details = {} if not items: items = list(set(d.item_code for d in sle))