test: validate transferred quantity for material transfer entry

This commit is contained in:
Navin-S-R
2026-01-10 20:13:17 +05:30
parent 7e99148357
commit bf2ab32abf

View File

@@ -14,6 +14,13 @@ from erpnext.stock.doctype.item.test_item import (
make_item_variant,
set_item_variant_settings,
)
from erpnext.stock.doctype.material_request.material_request import (
make_in_transit_stock_entry,
)
from erpnext.stock.doctype.material_request.test_material_request import (
get_in_transit_warehouse,
make_material_request,
)
from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
get_batch_from_bundle,
get_serial_nos_from_bundle,
@@ -2190,6 +2197,59 @@ class TestStockEntry(IntegrationTestCase):
self.assertEqual(se.purpose, "Repack")
self.assertRaises(frappe.ValidationError, se.submit)
def test_transferred_qty_in_material_transfer(self):
item_code = "_Test Item"
source_warehouse = "_Test Warehouse - _TC"
target_warehouse = "_Test Warehouse 1 - _TC"
if not frappe.db.get_value("UOM Conversion Detail", {"parent": item_code, "uom": "Box"}):
item_doc = frappe.get_doc("Item", item_code)
item_doc.append("uoms", {"uom": "Box", "conversion_factor": 12})
item_doc.save(ignore_permissions=True)
make_stock_entry(item_code=item_code, target=source_warehouse, qty=12, rate=100)
# Create a Material Request for Material Transfer
material_request = make_material_request(
material_request_type="Material Transfer",
qty=1,
item_code=item_code,
uom="Box",
conversion_factor=12,
from_warehouse=source_warehouse,
warehouse=target_warehouse,
)
in_transit_wh = get_in_transit_warehouse(material_request.company)
# Create first Stock Entry (Source -> In-Transit)
stock_entry_1 = make_in_transit_stock_entry(material_request.name, in_transit_wh)
stock_entry_1.items[0].update(
{
"qty": 1,
"s_warehouse": source_warehouse,
}
)
stock_entry_1.save().submit()
# Validate transfer status after first transfer
material_request.reload()
self.assertEqual(material_request.transfer_status, "In Transit")
# Create final Stock Entry (In-Transit -> Target)
end_transit_1 = make_stock_in_entry(stock_entry_1.name)
end_transit_1.save().submit()
end_transit_1.reload()
# Validate quantities
stock_entry_1.reload()
self.assertEqual(stock_entry_1.items[0].qty, 1)
self.assertEqual(stock_entry_1.items[0].transfer_qty, 12)
self.assertEqual(stock_entry_1.items[0].transferred_qty, 12)
# Validate transfer status after final transfer
material_request.reload()
self.assertEqual(material_request.transfer_status, "Completed")
def make_serialized_item(self, **args):
args = frappe._dict(args)