Merge pull request #2194 from ankitjavalkarwork/stockbalreport
Update report with Valuation rate, stock values, move to Main report
This commit is contained in:
commit
11b75759d2
@ -171,6 +171,12 @@ def get_data():
|
||||
"label": _("Stock Analytics"),
|
||||
"icon": "icon-bar-chart"
|
||||
},
|
||||
{
|
||||
"type": "report",
|
||||
"is_query_report": True,
|
||||
"name": "Warehouse-Wise Stock Balance",
|
||||
"doctype": "Warehouse"
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -222,12 +228,6 @@ def get_data():
|
||||
"name": "Batch-Wise Balance History",
|
||||
"doctype": "Batch"
|
||||
},
|
||||
{
|
||||
"type": "report",
|
||||
"is_query_report": True,
|
||||
"name": "Warehouse-Wise Stock Balance",
|
||||
"doctype": "Warehouse"
|
||||
},
|
||||
{
|
||||
"type": "report",
|
||||
"is_query_report": True,
|
||||
|
@ -19,9 +19,15 @@ def execute(filters=None):
|
||||
for wh in sorted(iwb_map[company][item]):
|
||||
qty_dict = iwb_map[company][item][wh]
|
||||
data.append([item, item_map[item]["item_name"],
|
||||
item_map[item]["item_group"],
|
||||
item_map[item]["brand"],
|
||||
item_map[item]["description"], wh,
|
||||
qty_dict.opening_qty, qty_dict.in_qty,
|
||||
qty_dict.out_qty, qty_dict.bal_qty, company
|
||||
qty_dict.uom, qty_dict.opening_qty,
|
||||
qty_dict.opening_val, qty_dict.in_qty,
|
||||
qty_dict.in_val, qty_dict.out_qty,
|
||||
qty_dict.out_val, qty_dict.bal_qty,
|
||||
qty_dict.bal_val, qty_dict.val_rate,
|
||||
company
|
||||
])
|
||||
|
||||
return columns, data
|
||||
@ -29,9 +35,11 @@ def execute(filters=None):
|
||||
def get_columns(filters):
|
||||
"""return columns based on filters"""
|
||||
|
||||
columns = ["Item:Link/Item:100", "Item Name::150", "Description::150", \
|
||||
"Warehouse:Link/Warehouse:100", "Opening Qty:Float:90", \
|
||||
"In Qty:Float:80", "Out Qty:Float:80", "Balance Qty:Float:90", "Company:Link/Company:100"]
|
||||
columns = ["Item:Link/Item:100", "Item Name::150", "Item Group::100", "Brand::90", \
|
||||
"Description::140", "Warehouse:Link/Warehouse:100", "Stock UOM::90", "Opening Qty:Float:100", \
|
||||
"Opening Value:Float:110", "In Qty:Float:80", "In Value:Float:80", "Out Qty:Float:80", \
|
||||
"Out Value:Float:80", "Balance Qty:Float:100", "Balance Value:Float:100", \
|
||||
"Valuation Rate:Float:90", "Company:Link/Company:100"]
|
||||
|
||||
return columns
|
||||
|
||||
@ -50,8 +58,8 @@ def get_conditions(filters):
|
||||
#get all details
|
||||
def get_stock_ledger_entries(filters):
|
||||
conditions = get_conditions(filters)
|
||||
return frappe.db.sql("""select item_code, warehouse,
|
||||
posting_date, actual_qty, company
|
||||
return frappe.db.sql("""select item_code, warehouse, posting_date,
|
||||
actual_qty, valuation_rate, stock_uom, company
|
||||
from `tabStock Ledger Entry`
|
||||
where docstatus < 2 %s order by item_code, warehouse""" %
|
||||
conditions, as_dict=1)
|
||||
@ -63,24 +71,37 @@ def get_item_warehouse_map(filters):
|
||||
for d in sle:
|
||||
iwb_map.setdefault(d.company, {}).setdefault(d.item_code, {}).\
|
||||
setdefault(d.warehouse, frappe._dict({\
|
||||
"opening_qty": 0.0, "in_qty": 0.0, "out_qty": 0.0, "bal_qty": 0.0
|
||||
"opening_qty": 0.0, "opening_val": 0.0,
|
||||
"in_qty": 0.0, "in_val": 0.0,
|
||||
"out_qty": 0.0, "out_val": 0.0,
|
||||
"bal_qty": 0.0, "bal_val": 0.0,
|
||||
"val_rate": 0.0, "uom": None
|
||||
}))
|
||||
qty_dict = iwb_map[d.company][d.item_code][d.warehouse]
|
||||
qty_dict.uom = d.stock_uom
|
||||
|
||||
if d.posting_date < filters["from_date"]:
|
||||
qty_dict.opening_qty += flt(d.actual_qty)
|
||||
qty_dict.opening_val += flt(d.actual_qty * d.valuation_rate)
|
||||
elif d.posting_date >= filters["from_date"] and d.posting_date <= filters["to_date"]:
|
||||
qty_dict.val_rate = d.valuation_rate
|
||||
|
||||
if flt(d.actual_qty) > 0:
|
||||
qty_dict.in_qty += flt(d.actual_qty)
|
||||
qty_dict.in_val += flt(d.actual_qty * d.valuation_rate)
|
||||
else:
|
||||
qty_dict.out_qty += abs(flt(d.actual_qty))
|
||||
qty_dict.out_val += flt(abs(flt(d.actual_qty)) * d.valuation_rate)
|
||||
|
||||
qty_dict.bal_qty += flt(d.actual_qty)
|
||||
qty_dict.bal_val += flt(d.actual_qty * d.valuation_rate)
|
||||
|
||||
return iwb_map
|
||||
|
||||
def get_item_details(filters):
|
||||
item_map = {}
|
||||
for d in frappe.db.sql("select name, item_name, description from tabItem", as_dict=1):
|
||||
for d in frappe.db.sql("select name, item_name, item_group, brand, \
|
||||
description from tabItem", as_dict=1):
|
||||
item_map.setdefault(d.name, d)
|
||||
|
||||
return item_map
|
||||
|
Loading…
Reference in New Issue
Block a user