fix: total value in Warehouse Wise Stock Balance
This commit is contained in:
parent
5e0f4eb580
commit
f598da7c81
@ -45,7 +45,7 @@ def get_warehouses(report_filters: StockBalanceFilter):
|
|||||||
return frappe.get_all(
|
return frappe.get_all(
|
||||||
"Warehouse",
|
"Warehouse",
|
||||||
fields=["name", "parent_warehouse", "is_group"],
|
fields=["name", "parent_warehouse", "is_group"],
|
||||||
filters={"company": report_filters.company, "disabled": 0},
|
filters={"company": report_filters.company},
|
||||||
order_by="lft",
|
order_by="lft",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -55,9 +55,10 @@ def get_data(filters: StockBalanceFilter):
|
|||||||
warehouses = get_warehouses(filters)
|
warehouses = get_warehouses(filters)
|
||||||
|
|
||||||
for warehouse in warehouses:
|
for warehouse in warehouses:
|
||||||
warehouse["stock_balance"] = warehouse_balance.get(warehouse.name, 0)
|
warehouse.stock_balance = warehouse_balance.get(warehouse.name, 0) or 0.0
|
||||||
|
|
||||||
update_indent(warehouses)
|
update_indent(warehouses)
|
||||||
|
set_balance_in_parent(warehouses)
|
||||||
|
|
||||||
return warehouses
|
return warehouses
|
||||||
|
|
||||||
@ -69,13 +70,26 @@ def update_indent(warehouses):
|
|||||||
warehouse.indent = indent
|
warehouse.indent = indent
|
||||||
for child in warehouses:
|
for child in warehouses:
|
||||||
if child.parent_warehouse == warehouse.name:
|
if child.parent_warehouse == warehouse.name:
|
||||||
warehouse.stock_balance += child.stock_balance
|
|
||||||
add_indent(child, indent + 1)
|
add_indent(child, indent + 1)
|
||||||
|
|
||||||
if warehouse.is_group:
|
if warehouse.is_group:
|
||||||
add_indent(warehouse, warehouse.indent or 0)
|
add_indent(warehouse, warehouse.indent or 0)
|
||||||
|
|
||||||
|
|
||||||
|
def set_balance_in_parent(warehouses):
|
||||||
|
# sort warehouses by indent in descending order
|
||||||
|
warehouses = sorted(warehouses, key=lambda x: x.get("indent", 0), reverse=1)
|
||||||
|
|
||||||
|
for warehouse in warehouses:
|
||||||
|
|
||||||
|
def update_balance(warehouse, balance):
|
||||||
|
for parent in warehouses:
|
||||||
|
if warehouse.parent_warehouse == parent.name:
|
||||||
|
parent.stock_balance += balance
|
||||||
|
|
||||||
|
update_balance(warehouse, warehouse.stock_balance)
|
||||||
|
|
||||||
|
|
||||||
def get_columns():
|
def get_columns():
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user