Merge pull request #32135 from rohitwaghchaure/fixed-incorrect-gl-entries-for-internal-transfer
fix: reposting not working for internal transferred purchase receipt
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index 2150477..bbd950e 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -877,6 +877,7 @@
{
order_doctype: {
"doctype": "Stock Entry",
+ "field_no_map": ["purchase_order", "subcontracting_order"],
},
},
ignore_child_tables=True,
diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js
index 065ef39..40963f8 100644
--- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js
+++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js
@@ -107,7 +107,7 @@
get_materials_from_supplier: function (frm) {
let sco_rm_details = [];
- if (frm.doc.supplied_items && frm.doc.per_received > 0) {
+ if (frm.doc.status != "Closed" && frm.doc.supplied_items && frm.doc.per_received > 0) {
frm.doc.supplied_items.forEach(d => {
if (d.total_supplied_qty > 0 && d.total_supplied_qty != d.consumed_qty) {
sco_rm_details.push(d.name);
diff --git a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py
index 9385568..d054ce0 100644
--- a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py
+++ b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py
@@ -502,6 +502,35 @@
set_backflush_based_on("BOM")
+ def test_get_materials_from_supplier(self):
+ # Create SCO
+ sco = get_subcontracting_order()
+
+ # Transfer RM
+ rm_items = get_rm_items(sco.supplied_items)
+ itemwise_details = make_stock_in_entry(rm_items=rm_items)
+ make_stock_transfer_entry(
+ sco_no=sco.name,
+ rm_items=rm_items,
+ itemwise_details=copy.deepcopy(itemwise_details),
+ )
+
+ # Create SCR (Partial)
+ scr = make_subcontracting_receipt(sco.name)
+ scr.items[0].qty -= 5
+ scr.save()
+ scr.submit()
+
+ # Get RM from Supplier
+ ste = get_materials_from_supplier(sco.name, [d.name for d in sco.supplied_items])
+ ste.save()
+ ste.submit()
+
+ sco.load_from_db()
+
+ self.assertEqual(sco.status, "Closed")
+ self.assertEqual(sco.supplied_items[0].returned_qty, 5)
+
def create_subcontracting_order(**args):
args = frappe._dict(args)