From 9e649d852237a54bae334f7c6f413cbdd38f54c5 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Sun, 2 Mar 2025 11:29:39 +0530 Subject: [PATCH 1/7] fix: dont update rate of free item when batch is updated (cherry picked from commit a3596f717b6a8145535d4a133d518f565e4ec0c5) # Conflicts: # erpnext/stock/get_item_details.py --- erpnext/stock/get_item_details.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 5c5fe5db276..58f83d7a593 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -221,7 +221,7 @@ def update_stock(ctx, out, doc=None): else: qty -= batch_qty - out.update({"batch_no": batch_no, "actual_batch_qty": qty}) + out.update({"batch_no": batch_no, "actual_batch_qty": batch_qty}) if rate: out.update({"rate": rate, "price_list_rate": rate}) @@ -1051,8 +1051,13 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) +<<<<<<< HEAD if item_price and item_price[0][2] == params.get("uom"): return item_price[0][1] +======= + if item_price and item_price[0].uom == pctx.uom and not pctx.get("items")[0].get("is_free_item"): + return item_price[0].price_list_rate +>>>>>>> a3596f717b (fix: dont update rate of free item when batch is updated) return 0.0 From 61d5680c8daf0b683be3460487711f98ac2d2232 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Sun, 2 Mar 2025 12:07:31 +0530 Subject: [PATCH 2/7] fix: error (cherry picked from commit 7c9c0c7776b709005e4abe0edaa2591e3fa1e7cc) # Conflicts: # erpnext/stock/get_item_details.py --- erpnext/stock/get_item_details.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 58f83d7a593..dee4c362363 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,11 +1051,15 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) +<<<<<<< HEAD <<<<<<< HEAD if item_price and item_price[0][2] == params.get("uom"): return item_price[0][1] ======= if item_price and item_price[0].uom == pctx.uom and not pctx.get("items")[0].get("is_free_item"): +======= + if item_price and item_price[0].uom == pctx.uom and not pctx.get("items", [{}])[0].get("is_free_item", 0): +>>>>>>> 7c9c0c7776 (fix: error) return item_price[0].price_list_rate >>>>>>> a3596f717b (fix: dont update rate of free item when batch is updated) From 7f4d553201c496cc75bcf370aa84f3fff143a775 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 3 Mar 2025 12:28:06 +0530 Subject: [PATCH 3/7] chore: resolve conflicts --- erpnext/stock/get_item_details.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index dee4c362363..68d4cc85c42 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,17 +1051,8 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) -<<<<<<< HEAD -<<<<<<< HEAD - if item_price and item_price[0][2] == params.get("uom"): - return item_price[0][1] -======= - if item_price and item_price[0].uom == pctx.uom and not pctx.get("items")[0].get("is_free_item"): -======= if item_price and item_price[0].uom == pctx.uom and not pctx.get("items", [{}])[0].get("is_free_item", 0): ->>>>>>> 7c9c0c7776 (fix: error) return item_price[0].price_list_rate ->>>>>>> a3596f717b (fix: dont update rate of free item when batch is updated) return 0.0 From 81c7b8c273d1ef7ceab82e00030c7d7a11530415 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 3 Mar 2025 15:05:44 +0530 Subject: [PATCH 4/7] chore: resolve conflicts --- erpnext/stock/get_item_details.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 68d4cc85c42..cd5f7107561 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,7 +1051,7 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) - if item_price and item_price[0].uom == pctx.uom and not pctx.get("items", [{}])[0].get("is_free_item", 0): + if item_price and item_price[0].uom == params.uom and not params.get("items", [{}])[0].get("is_free_item", 0): return item_price[0].price_list_rate return 0.0 From cc535b76365325d189d7faee0556a23679bb6bb1 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 3 Mar 2025 15:27:35 +0530 Subject: [PATCH 5/7] fix: syntax error --- erpnext/stock/get_item_details.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index cd5f7107561..f220024e415 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,7 +1051,7 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) - if item_price and item_price[0].uom == params.uom and not params.get("items", [{}])[0].get("is_free_item", 0): + if item_price and item_price[0].uom == params.get("uom") and not params.get("items", [{}])[0].get("is_free_item", 0): return item_price[0].price_list_rate return 0.0 From bd48d391e4a9c6e78e0e9896da9ebf8bce64efc5 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 3 Mar 2025 16:40:19 +0530 Subject: [PATCH 6/7] fix: syntax error --- erpnext/stock/get_item_details.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index f220024e415..23e6e003bb0 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,8 +1051,8 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) - if item_price and item_price[0].uom == params.get("uom") and not params.get("items", [{}])[0].get("is_free_item", 0): - return item_price[0].price_list_rate + if item_price and item_price[0][2] == params.get("uom") and not params.get("items", [{}])[0].get("is_free_item", 0): + return item_price[0][1] return 0.0 From 0b50f1a9c33361bd13603fe1472acfbb608541d7 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 5 Mar 2025 12:57:53 +0530 Subject: [PATCH 7/7] chore: fix pre-commit/linter error --- erpnext/stock/get_item_details.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 23e6e003bb0..ff87d159e36 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1051,7 +1051,11 @@ def get_batch_based_item_price(params, item_code) -> float: if not item_price: item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) - if item_price and item_price[0][2] == params.get("uom") and not params.get("items", [{}])[0].get("is_free_item", 0): + if ( + item_price + and item_price[0][2] == params.get("uom") + and not params.get("items", [{}])[0].get("is_free_item", 0) + ): return item_price[0][1] return 0.0