refactor(test): test_update_reserved_qty_for_subcontracting

This commit is contained in:
Sagar Sharma 2022-09-05 13:55:55 +05:30
parent 4a7add2169
commit a349b58306

View File

@ -187,22 +187,13 @@ class TestSubcontractingOrder(FrappeTestCase):
self.assertEqual(len(ste.items), len(rm_items)) self.assertEqual(len(ste.items), len(rm_items))
def test_update_reserved_qty_for_subcontracting(self): def test_update_reserved_qty_for_subcontracting(self):
# Make stock available for raw materials # Create RM Material Receipt
make_stock_entry(target="_Test Warehouse - _TC", qty=10, basic_rate=100) make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=10, basic_rate=100)
make_stock_entry( make_stock_entry(
target="_Test Warehouse - _TC", item_code="_Test Item Home Desktop 100", qty=20, basic_rate=100 target="_Test Warehouse - _TC", item_code="_Test Item Home Desktop 100", qty=20, basic_rate=100
) )
make_stock_entry(
target="_Test Warehouse 1 - _TC", item_code="_Test Item", qty=30, basic_rate=100
)
make_stock_entry(
target="_Test Warehouse 1 - _TC",
item_code="_Test Item Home Desktop 100",
qty=30,
basic_rate=100,
)
bin1 = frappe.db.get_value( bin_before_sco = frappe.db.get_value(
"Bin", "Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname=["reserved_qty_for_sub_contract", "projected_qty", "modified"], fieldname=["reserved_qty_for_sub_contract", "projected_qty", "modified"],
@ -222,102 +213,97 @@ class TestSubcontractingOrder(FrappeTestCase):
] ]
sco = get_subcontracting_order(service_items=service_items) sco = get_subcontracting_order(service_items=service_items)
bin2 = frappe.db.get_value( bin_after_sco = frappe.db.get_value(
"Bin", "Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname=["reserved_qty_for_sub_contract", "projected_qty", "modified"], fieldname=["reserved_qty_for_sub_contract", "projected_qty", "modified"],
as_dict=1, as_dict=1,
) )
self.assertEqual(bin2.reserved_qty_for_sub_contract, bin1.reserved_qty_for_sub_contract + 10) # reserved_qty_for_sub_contract should be increased by 10
self.assertEqual(bin2.projected_qty, bin1.projected_qty - 10) self.assertEqual(
self.assertNotEqual(bin1.modified, bin2.modified) bin_after_sco.reserved_qty_for_sub_contract, bin_before_sco.reserved_qty_for_sub_contract + 10
)
# Create stock transfer # projected_qty should be decreased by 10
self.assertEqual(bin_after_sco.projected_qty, bin_before_sco.projected_qty - 10)
self.assertNotEqual(bin_before_sco.modified, bin_after_sco.modified)
# Create Stock Entry(Send to Subcontractor)
rm_items = [ rm_items = [
{ {
"item_code": "_Test FG Item", "item_code": "_Test FG Item",
"rm_item_code": "_Test Item", "rm_item_code": "_Test Item",
"item_name": "_Test Item", "item_name": "_Test Item",
"qty": 6, "qty": 10,
"warehouse": "_Test Warehouse - _TC", "warehouse": "_Test Warehouse - _TC",
"rate": 100, "rate": 100,
"amount": 600, "amount": 1000,
"stock_uom": "Nos", "stock_uom": "Nos",
} },
{
"item_code": "_Test FG Item",
"rm_item_code": "_Test Item Home Desktop 100",
"item_name": "_Test Item Home Desktop 100",
"qty": 20,
"warehouse": "_Test Warehouse - _TC",
"rate": 100,
"amount": 2000,
"stock_uom": "Nos",
},
] ]
ste = frappe.get_doc(make_rm_stock_entry(sco.name, rm_items)) ste = frappe.get_doc(make_rm_stock_entry(sco.name, rm_items))
ste.to_warehouse = "_Test Warehouse 1 - _TC" ste.to_warehouse = "_Test Warehouse 1 - _TC"
ste.save() ste.save()
ste.submit() ste.submit()
bin3 = frappe.db.get_value( bin_after_rm_transfer = frappe.db.get_value(
"Bin", "Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname="reserved_qty_for_sub_contract", fieldname="reserved_qty_for_sub_contract",
as_dict=1, as_dict=1,
) )
self.assertEqual(bin3.reserved_qty_for_sub_contract, bin2.reserved_qty_for_sub_contract - 6) # reserved_qty_for_sub_contract should be decreased by 10
self.assertEqual(
make_stock_entry( bin_after_rm_transfer.reserved_qty_for_sub_contract,
target="_Test Warehouse 1 - _TC", item_code="_Test Item", qty=40, basic_rate=100 bin_after_sco.reserved_qty_for_sub_contract - 10,
)
make_stock_entry(
target="_Test Warehouse 1 - _TC",
item_code="_Test Item Home Desktop 100",
qty=40,
basic_rate=100,
) )
# Make SCR against the SCO # Cancel Stock Entry(Send to Subcontractor)
scr = make_subcontracting_receipt(sco.name)
scr.save()
scr.submit()
bin4 = frappe.db.get_value(
"Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname="reserved_qty_for_sub_contract",
as_dict=1,
)
self.assertEqual(bin4.reserved_qty_for_sub_contract, bin1.reserved_qty_for_sub_contract)
# Cancel SCR
scr.reload()
scr.cancel()
bin5 = frappe.db.get_value(
"Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname="reserved_qty_for_sub_contract",
as_dict=1,
)
self.assertEqual(bin5.reserved_qty_for_sub_contract, bin2.reserved_qty_for_sub_contract - 6)
# Cancel Stock Entry
ste.cancel() ste.cancel()
bin6 = frappe.db.get_value( bin_after_cancel_ste = frappe.db.get_value(
"Bin", "Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname="reserved_qty_for_sub_contract", fieldname="reserved_qty_for_sub_contract",
as_dict=1, as_dict=1,
) )
self.assertEqual(bin6.reserved_qty_for_sub_contract, bin1.reserved_qty_for_sub_contract + 10) # reserved_qty_for_sub_contract should be increased by 10
self.assertEqual(
bin_after_cancel_ste.reserved_qty_for_sub_contract,
bin_after_rm_transfer.reserved_qty_for_sub_contract + 10,
)
# Cancel PO # Cancel SCO
sco.reload() sco.reload()
sco.cancel() sco.cancel()
bin7 = frappe.db.get_value( bin_after_cancel_sco = frappe.db.get_value(
"Bin", "Bin",
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"},
fieldname="reserved_qty_for_sub_contract", fieldname="reserved_qty_for_sub_contract",
as_dict=1, as_dict=1,
) )
self.assertEqual(bin7.reserved_qty_for_sub_contract, bin1.reserved_qty_for_sub_contract) # reserved_qty_for_sub_contract should be decreased by 10
self.assertEqual(
bin_after_cancel_sco.reserved_qty_for_sub_contract,
bin_after_cancel_ste.reserved_qty_for_sub_contract - 10,
)
self.assertEqual(
bin_after_cancel_sco.reserved_qty_for_sub_contract, bin_before_sco.reserved_qty_for_sub_contract
)
def test_exploded_items(self): def test_exploded_items(self):
item_code = "_Test Subcontracted FG Item 11" item_code = "_Test Subcontracted FG Item 11"