From 2fc7d82324cfefd14a0226b0c85f89865d0d3988 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Tue, 30 May 2023 17:52:04 +0530 Subject: [PATCH] fix: missing bom details in the stock entry --- .../doctype/job_card/test_job_card.py | 22 ++++++++++++++++++- .../material_request/material_request.py | 10 +++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py index 22177f44148c..a7f06486abc6 100644 --- a/erpnext/manufacturing/doctype/job_card/test_job_card.py +++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py @@ -7,13 +7,14 @@ import frappe from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import random_string -from frappe.utils.data import add_to_date, now +from frappe.utils.data import add_to_date, now, today from erpnext.manufacturing.doctype.job_card.job_card import ( JobCardOverTransferError, OperationMismatchError, OverlapError, make_corrective_job_card, + make_material_request, ) from erpnext.manufacturing.doctype.job_card.job_card import ( make_stock_entry as make_stock_entry_from_jc, @@ -449,6 +450,25 @@ def assertStatus(status): jc.docstatus = 2 assertStatus("Cancelled") + def test_job_card_material_request_and_bom_details(self): + from erpnext.stock.doctype.material_request.material_request import make_stock_entry + + create_bom_with_multiple_operations() + work_order = make_wo_with_transfer_against_jc() + + job_card_name = frappe.db.get_value("Job Card", {"work_order": work_order.name}, "name") + + mr = make_material_request(job_card_name) + mr.schedule_date = today() + mr.submit() + + ste = make_stock_entry(mr.name) + self.assertEqual(ste.purpose, "Material Transfer for Manufacture") + self.assertEqual(ste.work_order, work_order.name) + self.assertEqual(ste.job_card, job_card_name) + self.assertEqual(ste.from_bom, 1.0) + self.assertEqual(ste.bom_no, work_order.bom_no) + def create_bom_with_multiple_operations(): "Create a BOM with multiple operations and Material Transfer against Job Card" diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 3967282358d3..95c85da55224 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -619,6 +619,16 @@ def set_missing_values(source, target): target.stock_entry_type = target.purpose target.set_job_card_data() + if source.job_card: + job_card_details = frappe.get_all( + "Job Card", filters={"name": source.job_card}, fields=["bom_no", "for_quantity"] + ) + + if job_card_details and job_card_details[0]: + target.bom_no = job_card_details[0].bom_no + target.fg_completed_qty = job_card_details[0].for_quantity + target.from_bom = 1 + doclist = get_mapped_doc( "Material Request", source_name,