From c520a7c6c137f4e4e26d75f119cfb5047c76c3bf Mon Sep 17 00:00:00 2001 From: Bhavan23 Date: Tue, 8 Oct 2024 16:18:31 +0530 Subject: [PATCH 1/5] fix: update item details with actual quantity. (cherry picked from commit 9dbdfec9b7a4bcc38399a4d849dcc32b54bf9d4a) --- erpnext/selling/doctype/sales_order/sales_order.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index f201228c2b1..4cedebe2668 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -13,6 +13,7 @@ from frappe.model.mapper import get_mapped_doc from frappe.model.utils import get_fetch_values from frappe.query_builder.functions import Sum from frappe.utils import add_days, cint, cstr, flt, get_link_to_form, getdate, nowdate, strip_html +from erpnext.stock.get_item_details import get_bin_details from erpnext.accounts.doctype.sales_invoice.sales_invoice import ( unlink_inter_company_doc, @@ -607,6 +608,7 @@ def make_material_request(source_name, target_doc=None): target.project = source_parent.project target.qty = get_remaining_qty(source) target.stock_qty = flt(target.qty) * flt(target.conversion_factor) + target.actual_qty = get_bin_details(target.item_code, target.warehouse, source_parent.company, True).get("actual_qty", 0) args = target.as_dict().copy() args.update( From dc2483bb923e25b9ece910e4ffae781ebdbbf7bf Mon Sep 17 00:00:00 2001 From: Bhavan23 Date: Tue, 8 Oct 2024 16:24:28 +0530 Subject: [PATCH 2/5] test: Validate the actual quantity when creating a material request from the sales order (cherry picked from commit 17fdd426455aa3daab828444a2ecde837936faa2) --- erpnext/selling/doctype/sales_order/test_sales_order.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index 74f781d8982..e075bf702f7 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -8,6 +8,8 @@ import frappe.permissions from frappe.core.doctype.user_permission.test_user_permission import create_user from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import add_days, flt, getdate, nowdate, today +from erpnext.stock.get_item_details import get_bin_details + from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.controllers.accounts_controller import update_child_qty_rate @@ -99,6 +101,10 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): self.assertEqual(mr.material_request_type, "Purchase") self.assertEqual(len(mr.get("items")), len(so.get("items"))) + for item in mr.get("items"): + actual_qty = get_bin_details(item.item_code, item.warehouse, mr.company, True).get("actual_qty", 0) + self.assertEqual(flt(item.actual_qty), actual_qty) + def test_make_delivery_note(self): so = make_sales_order(do_not_submit=True) From 699b09846ac2bff4ec9a0ca2118202d31fb6ec2d Mon Sep 17 00:00:00 2001 From: Bhavan23 Date: Tue, 8 Oct 2024 17:49:12 +0530 Subject: [PATCH 3/5] fix: update formatings (cherry picked from commit 5f4a523340209b29ebd9932228b0715eb1035103) # Conflicts: # erpnext/selling/doctype/sales_order/sales_order.py --- erpnext/selling/doctype/sales_order/sales_order.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 4cedebe2668..86e2c7ea4de 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -13,7 +13,6 @@ from frappe.model.mapper import get_mapped_doc from frappe.model.utils import get_fetch_values from frappe.query_builder.functions import Sum from frappe.utils import add_days, cint, cstr, flt, get_link_to_form, getdate, nowdate, strip_html -from erpnext.stock.get_item_details import get_bin_details from erpnext.accounts.doctype.sales_invoice.sales_invoice import ( unlink_inter_company_doc, @@ -31,7 +30,15 @@ from erpnext.manufacturing.doctype.production_plan.production_plan import ( from erpnext.selling.doctype.customer.customer import check_credit_limit from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults from erpnext.stock.doctype.item.item import get_item_defaults +<<<<<<< HEAD from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate +======= +from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( + get_sre_reserved_qty_details_for_voucher, + has_reserved_stock, +) +from erpnext.stock.get_item_details import get_bin_details, get_default_bom, get_price_list_rate +>>>>>>> 5f4a523340 (fix: update formatings) from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty form_grid_templates = {"items": "templates/form_grid/item_grid.html"} @@ -608,7 +615,9 @@ def make_material_request(source_name, target_doc=None): target.project = source_parent.project target.qty = get_remaining_qty(source) target.stock_qty = flt(target.qty) * flt(target.conversion_factor) - target.actual_qty = get_bin_details(target.item_code, target.warehouse, source_parent.company, True).get("actual_qty", 0) + target.actual_qty = get_bin_details( + target.item_code, target.warehouse, source_parent.company, True + ).get("actual_qty", 0) args = target.as_dict().copy() args.update( From a8ad608fd8a2a40a1805c82cbebab8f440c76a5b Mon Sep 17 00:00:00 2001 From: Bhavan23 Date: Tue, 8 Oct 2024 18:14:00 +0530 Subject: [PATCH 4/5] fix: update formatings (cherry picked from commit 50442973219cd246f07d6178ca3465c59778808b) --- erpnext/selling/doctype/sales_order/test_sales_order.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index e075bf702f7..b1207ee97a1 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -8,8 +8,6 @@ import frappe.permissions from frappe.core.doctype.user_permission.test_user_permission import create_user from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import add_days, flt, getdate, nowdate, today -from erpnext.stock.get_item_details import get_bin_details - from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.controllers.accounts_controller import update_child_qty_rate @@ -32,6 +30,7 @@ from erpnext.selling.doctype.sales_order.sales_order import ( ) from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from erpnext.stock.get_item_details import get_bin_details class TestSalesOrder(AccountsTestMixin, FrappeTestCase): @@ -102,7 +101,9 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): self.assertEqual(len(mr.get("items")), len(so.get("items"))) for item in mr.get("items"): - actual_qty = get_bin_details(item.item_code, item.warehouse, mr.company, True).get("actual_qty", 0) + actual_qty = get_bin_details(item.item_code, item.warehouse, mr.company, True).get( + "actual_qty", 0 + ) self.assertEqual(flt(item.actual_qty), actual_qty) def test_make_delivery_note(self): From be78e17e8c614456cb2207c1829f00d9b567d395 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Tue, 15 Oct 2024 13:25:14 +0530 Subject: [PATCH 5/5] chore: resolve conflict --- erpnext/selling/doctype/sales_order/sales_order.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 86e2c7ea4de..293066cde38 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -30,15 +30,7 @@ from erpnext.manufacturing.doctype.production_plan.production_plan import ( from erpnext.selling.doctype.customer.customer import check_credit_limit from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults from erpnext.stock.doctype.item.item import get_item_defaults -<<<<<<< HEAD -from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate -======= -from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( - get_sre_reserved_qty_details_for_voucher, - has_reserved_stock, -) from erpnext.stock.get_item_details import get_bin_details, get_default_bom, get_price_list_rate ->>>>>>> 5f4a523340 (fix: update formatings) from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty form_grid_templates = {"items": "templates/form_grid/item_grid.html"}