Merge pull request #35482 from rohitwaghchaure/fixed-stock-entry-missing-bom-details
fix: missing bom details in the stock entry
diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py
index 22177f4..a7f0648 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 @@
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 3967282..95c85da 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -619,6 +619,16 @@
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,