From 6c794afbe7d1aa253ed57dad78d1d4a99258d247 Mon Sep 17 00:00:00 2001 From: Sagar Sharma Date: Fri, 13 May 2022 14:50:12 +0530 Subject: [PATCH] refactor!: Item Alternative --- .../item_alternative/test_item_alternative.py | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/erpnext/stock/doctype/item_alternative/test_item_alternative.py b/erpnext/stock/doctype/item_alternative/test_item_alternative.py index 32c58c5ae1..3f66a6a695 100644 --- a/erpnext/stock/doctype/item_alternative/test_item_alternative.py +++ b/erpnext/stock/doctype/item_alternative/test_item_alternative.py @@ -1,17 +1,15 @@ # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt -import json - import frappe from frappe.tests.utils import FrappeTestCase from frappe.utils import flt -from erpnext.buying.doctype.purchase_order.purchase_order import ( - make_purchase_receipt, - make_rm_stock_entry, +from erpnext.controllers.tests.test_subcontracting_controller import ( + get_subcontracting_order, + make_service_item, + set_backflush_based_on, ) -from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record from erpnext.manufacturing.doctype.work_order.work_order import make_stock_entry @@ -19,6 +17,10 @@ from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import ( create_stock_reconciliation, ) +from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import ( + make_rm_stock_entry, + make_subcontracting_receipt, +) class TestItemAlternative(FrappeTestCase): @@ -27,9 +29,7 @@ class TestItemAlternative(FrappeTestCase): make_items() def test_alternative_item_for_subcontract_rm(self): - frappe.db.set_value( - "Buying Settings", None, "backflush_raw_materials_of_subcontract_based_on", "BOM" - ) + set_backflush_based_on("BOM") create_stock_reconciliation( item_code="Alternate Item For A RW 1", warehouse="_Test Warehouse - _TC", qty=5, rate=2000 @@ -39,15 +39,22 @@ class TestItemAlternative(FrappeTestCase): ) supplier_warehouse = "Test Supplier Warehouse - _TC" - po = create_purchase_order( - item="Test Finished Goods - A", - is_subcontracted=1, - qty=5, - rate=3000, - supplier_warehouse=supplier_warehouse, - ) - rm_item = [ + make_service_item("Subcontracted Service Item 1") + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 1", + "qty": 5, + "rate": 3000, + "fg_item": "Test Finished Goods - A", + "fg_item_qty": 5, + }, + ] + sco = get_subcontracting_order( + service_items=service_items, supplier_warehouse=supplier_warehouse + ) + rm_items = [ { "item_code": "Test Finished Goods - A", "rm_item_code": "Test FG A RW 1", @@ -70,14 +77,13 @@ class TestItemAlternative(FrappeTestCase): }, ] - rm_item_string = json.dumps(rm_item) reserved_qty_for_sub_contract = frappe.db.get_value( "Bin", {"item_code": "Test FG A RW 1", "warehouse": "_Test Warehouse - _TC"}, "reserved_qty_for_sub_contract", ) - se = frappe.get_doc(make_rm_stock_entry(po.name, rm_item_string)) + se = frappe.get_doc(make_rm_stock_entry(sco.name, rm_items)) se.to_warehouse = supplier_warehouse se.insert() @@ -101,22 +107,17 @@ class TestItemAlternative(FrappeTestCase): after_transfer_reserved_qty_for_sub_contract, flt(reserved_qty_for_sub_contract - 5) ) - pr = make_purchase_receipt(po.name) - pr.save() + scr = make_subcontracting_receipt(sco.name) + scr.save() - pr = frappe.get_doc("Purchase Receipt", pr.name) + scr = frappe.get_doc("Subcontracting Receipt", scr.name) status = False - for d in pr.supplied_items: - if d.rm_item_code == "Alternate Item For A RW 1": + for item in scr.supplied_items: + if item.rm_item_code == "Alternate Item For A RW 1": status = True self.assertEqual(status, True) - frappe.db.set_value( - "Buying Settings", - None, - "backflush_raw_materials_of_subcontract_based_on", - "Material Transferred for Subcontract", - ) + set_backflush_based_on("Material Transferred for Subcontract") def test_alternative_item_for_production_rm(self): create_stock_reconciliation(