Merge pull request #40263 from nabinhait/pi-optimization

perf: Performance optmization for Purchase Invoice submission
This commit is contained in:
Nabin Hait
2024-03-13 18:17:41 +05:30
committed by GitHub
14 changed files with 252 additions and 248 deletions

View File

@@ -104,7 +104,8 @@
"in_standard_filter": 1,
"label": "Price List",
"options": "Price List",
"reqd": 1
"reqd": 1,
"search_index": 1
},
{
"bold": 1,
@@ -220,7 +221,7 @@
"idx": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2022-11-15 08:26:04.041861",
"modified": "2024-03-13 12:23:39.630290",
"modified_by": "Administrator",
"module": "Stock",
"name": "Item Price",

View File

@@ -104,22 +104,8 @@ def get_item_details(args, doc=None, for_validate=False, overwrite_warehouse=Tru
if args.customer and cint(args.is_pos):
out.update(get_pos_profile_item_details(args.company, args, update_data=True))
if (
args.get("doctype") == "Material Request"
and args.get("material_request_type") == "Material Transfer"
):
out.update(get_bin_details(args.item_code, args.get("from_warehouse")))
elif out.get("warehouse"):
if doc and doc.get("doctype") == "Purchase Order":
# calculate company_total_stock only for po
bin_details = get_bin_details(
args.item_code, out.warehouse, args.company, include_child_warehouses=True
)
else:
bin_details = get_bin_details(args.item_code, out.warehouse, include_child_warehouses=True)
out.update(bin_details)
if item.is_stock_item:
update_bin_details(args, out, doc)
# update args with out, if key or value not exists
for key, value in out.items():
@@ -202,6 +188,24 @@ def set_valuation_rate(out, args):
out.update(get_valuation_rate(args.item_code, args.company, out.get("warehouse")))
def update_bin_details(args, out, doc):
if (
args.get("doctype") == "Material Request"
and args.get("material_request_type") == "Material Transfer"
):
out.update(get_bin_details(args.item_code, args.get("from_warehouse")))
elif out.get("warehouse"):
company = args.company if (doc and doc.get("doctype") == "Purchase Order") else None
# calculate company_total_stock only for po
bin_details = get_bin_details(
args.item_code, out.warehouse, company, include_child_warehouses=True
)
out.update(bin_details)
def process_args(args):
if isinstance(args, str):
args = json.loads(args)