test: fixed test cases
This commit is contained in:
parent
9fafc83632
commit
c1e869f040
@ -151,7 +151,7 @@
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial and Batch Bundle",
|
||||
|
@ -130,7 +130,15 @@ class StockController(AccountsController):
|
||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||
from erpnext.stock.serial_batch_bundle import SerialBatchCreation
|
||||
|
||||
for row in self.items:
|
||||
# To handle test cases
|
||||
if frappe.flags.in_test and frappe.flags.use_serial_and_batch_fields:
|
||||
return
|
||||
|
||||
table_name = "items"
|
||||
if self.doctype == "Asset Capitalization":
|
||||
table_name = "stock_items"
|
||||
|
||||
for row in self.get(table_name):
|
||||
if not row.serial_no and not row.batch_no and not row.get("rejected_serial_no"):
|
||||
continue
|
||||
|
||||
@ -140,7 +148,7 @@ class StockController(AccountsController):
|
||||
frappe.throw(_("Please enable Use Old Serial / Batch Fields to make_bundle"))
|
||||
|
||||
if row.use_serial_batch_fields and (
|
||||
not row.serial_and_batch_bundle or not row.get("rejected_serial_and_batch_bundle")
|
||||
not row.serial_and_batch_bundle and not row.get("rejected_serial_and_batch_bundle")
|
||||
):
|
||||
sn_doc = SerialBatchCreation(
|
||||
{
|
||||
@ -164,10 +172,21 @@ class StockController(AccountsController):
|
||||
|
||||
if sn_doc.is_rejected:
|
||||
row.rejected_serial_and_batch_bundle = sn_doc.name
|
||||
row.db_set("rejected_serial_and_batch_bundle", sn_doc.name)
|
||||
row.db_set(
|
||||
{
|
||||
"rejected_serial_and_batch_bundle": sn_doc.name,
|
||||
"rejected_serial_no": "",
|
||||
}
|
||||
)
|
||||
else:
|
||||
row.serial_and_batch_bundle = sn_doc.name
|
||||
row.db_set("serial_and_batch_bundle", sn_doc.name)
|
||||
row.db_set(
|
||||
{
|
||||
"serial_and_batch_bundle": sn_doc.name,
|
||||
"serial_no": "",
|
||||
"batch_no": "",
|
||||
}
|
||||
)
|
||||
|
||||
def set_use_serial_batch_fields(self):
|
||||
if frappe.db.get_single_value("Stock Settings", "use_serial_batch_fields"):
|
||||
|
@ -732,10 +732,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
||||
item.serial_no = item.serial_no.replace(/,/g, '\n');
|
||||
item.conversion_factor = item.conversion_factor || 1;
|
||||
refresh_field("serial_no", item.name, item.parentfield);
|
||||
if (!doc.is_return && cint(frappe.user_defaults.set_qty_in_transactions_based_on_serial_no_input)) {
|
||||
if (!doc.is_return) {
|
||||
setTimeout(() => {
|
||||
me.update_qty(cdt, cdn);
|
||||
}, 10000);
|
||||
}, 3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -200,7 +200,6 @@ class TestDeliveryNote(FrappeTestCase):
|
||||
},
|
||||
)
|
||||
|
||||
frappe.flags.ignore_serial_batch_bundle_validation = True
|
||||
serial_nos = [
|
||||
"OSN-1",
|
||||
"OSN-2",
|
||||
@ -239,6 +238,8 @@ class TestDeliveryNote(FrappeTestCase):
|
||||
)
|
||||
|
||||
se_doc.items[0].serial_no = "\n".join(serial_nos)
|
||||
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
se_doc.submit()
|
||||
|
||||
self.assertEqual(sorted(get_serial_nos(se_doc.items[0].serial_no)), sorted(serial_nos))
|
||||
@ -294,6 +295,8 @@ class TestDeliveryNote(FrappeTestCase):
|
||||
self.assertTrue(serial_no in serial_nos)
|
||||
self.assertFalse(serial_no in returned_serial_nos1)
|
||||
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_sales_return_for_non_bundled_items_partial(self):
|
||||
company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company")
|
||||
|
||||
|
@ -261,7 +261,7 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial and Batch Bundle",
|
||||
@ -270,7 +270,7 @@
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "pick_serial_and_batch",
|
||||
"fieldtype": "Button",
|
||||
"label": "Pick Serial / Batch No"
|
||||
|
@ -147,12 +147,11 @@ class PickList(Document):
|
||||
"voucher_no": self.name,
|
||||
"voucher_detail_no": row.name,
|
||||
"qty": row.stock_qty,
|
||||
"type_of_transaction": "Inward" if row.stock_qty > 0 else "Outward",
|
||||
"type_of_transaction": "Outward",
|
||||
"company": self.company,
|
||||
"serial_nos": get_serial_nos(row.serial_no) if row.serial_no else None,
|
||||
"batches": frappe._dict({row.batch_no: row.stock_qty}) if row.batch_no else None,
|
||||
"batch_no": row.batch_no,
|
||||
"use_serial_batch_fields": row.use_serial_batch_fields,
|
||||
}
|
||||
).make_serial_and_batch_bundle()
|
||||
|
||||
@ -188,6 +187,7 @@ class PickList(Document):
|
||||
{"is_cancelled": 1, "voucher_no": ""},
|
||||
)
|
||||
|
||||
frappe.get_doc("Serial and Batch Bundle", row.serial_and_batch_bundle).cancel()
|
||||
row.db_set("serial_and_batch_bundle", None)
|
||||
|
||||
def on_update(self):
|
||||
@ -349,18 +349,13 @@ class PickList(Document):
|
||||
self.item_location_map = frappe._dict()
|
||||
|
||||
from_warehouses = None
|
||||
if self.parent_warehouse and frappe.get_cached_value(
|
||||
"Warehouse", self.parent_warehouse, "is_group"
|
||||
):
|
||||
if self.parent_warehouse:
|
||||
from_warehouses = get_descendants_of("Warehouse", self.parent_warehouse)
|
||||
elif self.parent_warehouse:
|
||||
from_warehouses = [self.parent_warehouse]
|
||||
|
||||
# Create replica before resetting, to handle empty table on update after submit.
|
||||
locations_replica = self.get("locations")
|
||||
|
||||
# reset
|
||||
self.remove_serial_and_batch_bundle()
|
||||
self.delete_key("locations")
|
||||
updated_locations = frappe._dict()
|
||||
for item_doc in items:
|
||||
@ -387,13 +382,13 @@ class PickList(Document):
|
||||
for row in locations:
|
||||
location = item_doc.as_dict()
|
||||
location.update(row)
|
||||
bundle = location.serial_and_batch_bundle or location.serial_no or location.batch_no
|
||||
key = (
|
||||
location.item_code,
|
||||
location.warehouse,
|
||||
location.uom,
|
||||
location.batch_no,
|
||||
location.serial_no,
|
||||
location.sales_order_item or location.material_request_item,
|
||||
bundle,
|
||||
)
|
||||
|
||||
if key not in updated_locations:
|
||||
@ -675,13 +670,17 @@ def get_items_with_location_and_quantity(item_doc, item_location_map, docstatus)
|
||||
if not stock_qty:
|
||||
break
|
||||
|
||||
serial_nos = None
|
||||
if item_location.serial_nos:
|
||||
serial_nos = "\n".join(item_location.serial_nos[0 : cint(stock_qty)])
|
||||
|
||||
locations.append(
|
||||
frappe._dict(
|
||||
{
|
||||
"qty": qty,
|
||||
"stock_qty": stock_qty,
|
||||
"warehouse": item_location.warehouse,
|
||||
"serial_no": item_location.serial_no,
|
||||
"serial_no": serial_nos,
|
||||
"batch_no": item_location.batch_no,
|
||||
"use_serial_batch_fields": 1,
|
||||
}
|
||||
@ -711,7 +710,6 @@ def get_available_item_locations(
|
||||
company,
|
||||
ignore_validation=False,
|
||||
picked_item_details=None,
|
||||
consider_rejected_warehouses=False,
|
||||
):
|
||||
locations = []
|
||||
total_picked_qty = (
|
||||
@ -727,7 +725,6 @@ def get_available_item_locations(
|
||||
required_qty,
|
||||
company,
|
||||
total_picked_qty,
|
||||
consider_rejected_warehouses=consider_rejected_warehouses,
|
||||
)
|
||||
elif has_serial_no:
|
||||
locations = get_available_item_locations_for_serialized_item(
|
||||
@ -778,7 +775,6 @@ def get_available_item_locations_for_serial_and_batched_item(
|
||||
required_qty,
|
||||
company,
|
||||
total_picked_qty=0,
|
||||
consider_rejected_warehouses=False,
|
||||
):
|
||||
# Get batch nos by FIFO
|
||||
locations = get_available_item_locations_for_batched_item(
|
||||
@ -786,7 +782,6 @@ def get_available_item_locations_for_serial_and_batched_item(
|
||||
from_warehouses,
|
||||
required_qty,
|
||||
company,
|
||||
consider_rejected_warehouses=consider_rejected_warehouses,
|
||||
)
|
||||
|
||||
if locations:
|
||||
@ -804,12 +799,12 @@ def get_available_item_locations_for_serial_and_batched_item(
|
||||
.where(
|
||||
(conditions) & (sn.batch_no == location.batch_no) & (sn.warehouse == location.warehouse)
|
||||
)
|
||||
.orderby(sn.purchase_date)
|
||||
.orderby(sn.creation)
|
||||
.limit(ceil(location.qty + total_picked_qty))
|
||||
).run(as_dict=True)
|
||||
|
||||
serial_nos = [sn.name for sn in serial_nos]
|
||||
location.serial_no = serial_nos
|
||||
location.serial_nos = serial_nos
|
||||
location.qty = len(serial_nos)
|
||||
|
||||
return locations
|
||||
@ -848,6 +843,7 @@ def get_available_item_locations_for_serialized_item(
|
||||
picked_qty -= 1
|
||||
|
||||
locations = []
|
||||
|
||||
for warehouse, serial_nos in warehouse_serial_nos_map.items():
|
||||
qty = len(serial_nos)
|
||||
|
||||
@ -888,12 +884,14 @@ def get_available_item_locations_for_batched_item(
|
||||
for warehouse, batches in warehouse_wise_batches.items():
|
||||
for batch_no, qty in batches.items():
|
||||
locations.append(
|
||||
{
|
||||
"qty": qty,
|
||||
"warehouse": warehouse,
|
||||
"item_code": item_code,
|
||||
"batch_no": batch_no,
|
||||
}
|
||||
frappe._dict(
|
||||
{
|
||||
"qty": qty,
|
||||
"warehouse": warehouse,
|
||||
"item_code": item_code,
|
||||
"batch_no": batch_no,
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
return locations
|
||||
|
@ -217,6 +217,8 @@ class TestPickList(FrappeTestCase):
|
||||
)
|
||||
|
||||
pick_list.save()
|
||||
pick_list.submit()
|
||||
|
||||
self.assertEqual(pick_list.locations[0].item_code, "_Test Serialized Item")
|
||||
self.assertEqual(pick_list.locations[0].warehouse, "_Test Warehouse - _TC")
|
||||
self.assertEqual(pick_list.locations[0].qty, 5)
|
||||
@ -239,7 +241,7 @@ class TestPickList(FrappeTestCase):
|
||||
pr1 = make_purchase_receipt(item_code="Batched Item", qty=1, rate=100.0)
|
||||
|
||||
pr1.load_from_db()
|
||||
oldest_batch_no = pr1.items[0].batch_no
|
||||
oldest_batch_no = get_batch_from_bundle(pr1.items[0].serial_and_batch_bundle)
|
||||
|
||||
pr2 = make_purchase_receipt(item_code="Batched Item", qty=2, rate=100.0)
|
||||
|
||||
@ -302,6 +304,8 @@ class TestPickList(FrappeTestCase):
|
||||
}
|
||||
)
|
||||
pick_list.set_item_locations()
|
||||
pick_list.submit()
|
||||
pick_list.reload()
|
||||
|
||||
self.assertEqual(
|
||||
get_batch_from_bundle(pick_list.locations[0].serial_and_batch_bundle), oldest_batch_no
|
||||
@ -310,6 +314,7 @@ class TestPickList(FrappeTestCase):
|
||||
get_serial_nos_from_bundle(pick_list.locations[0].serial_and_batch_bundle), oldest_serial_nos
|
||||
)
|
||||
|
||||
pick_list.cancel()
|
||||
pr1.cancel()
|
||||
pr2.cancel()
|
||||
|
||||
@ -671,29 +676,22 @@ class TestPickList(FrappeTestCase):
|
||||
|
||||
so = make_sales_order(item_code=item, qty=25.0, rate=100)
|
||||
pl = create_pick_list(so.name)
|
||||
pl.submit()
|
||||
# pick half the qty
|
||||
for loc in pl.locations:
|
||||
self.assertEqual(loc.qty, 25.0)
|
||||
self.assertTrue(loc.serial_and_batch_bundle)
|
||||
|
||||
data = frappe.get_all(
|
||||
"Serial and Batch Entry",
|
||||
fields=["qty", "batch_no"],
|
||||
filters={"parent": loc.serial_and_batch_bundle},
|
||||
)
|
||||
|
||||
for d in data:
|
||||
self.assertEqual(d.batch_no, "PICKLT-000001")
|
||||
self.assertEqual(d.qty, 25.0 * -1)
|
||||
|
||||
pl.save()
|
||||
pl.submit()
|
||||
|
||||
so1 = make_sales_order(item_code=item, qty=10.0, rate=100)
|
||||
pl = create_pick_list(so1.name)
|
||||
pl1 = create_pick_list(so1.name)
|
||||
pl1.submit()
|
||||
|
||||
# pick half the qty
|
||||
for loc in pl.locations:
|
||||
self.assertEqual(loc.qty, 10.0)
|
||||
for loc in pl1.locations:
|
||||
self.assertEqual(loc.qty, 5.0)
|
||||
self.assertTrue(loc.serial_and_batch_bundle)
|
||||
|
||||
data = frappe.get_all(
|
||||
@ -709,8 +707,7 @@ class TestPickList(FrappeTestCase):
|
||||
elif d.batch_no == "PICKLT-000002":
|
||||
self.assertEqual(d.qty, 5.0 * -1)
|
||||
|
||||
pl.save()
|
||||
pl.submit()
|
||||
pl1.cancel()
|
||||
pl.cancel()
|
||||
|
||||
def test_picklist_for_serial_item(self):
|
||||
@ -723,6 +720,7 @@ class TestPickList(FrappeTestCase):
|
||||
|
||||
so = make_sales_order(item_code=item, qty=25.0, rate=100)
|
||||
pl = create_pick_list(so.name)
|
||||
pl.submit()
|
||||
picked_serial_nos = []
|
||||
# pick half the qty
|
||||
for loc in pl.locations:
|
||||
@ -736,13 +734,11 @@ class TestPickList(FrappeTestCase):
|
||||
picked_serial_nos = [d.serial_no for d in data]
|
||||
self.assertEqual(len(picked_serial_nos), 25)
|
||||
|
||||
pl.save()
|
||||
pl.submit()
|
||||
|
||||
so1 = make_sales_order(item_code=item, qty=10.0, rate=100)
|
||||
pl = create_pick_list(so1.name)
|
||||
pl1 = create_pick_list(so1.name)
|
||||
pl1.submit()
|
||||
# pick half the qty
|
||||
for loc in pl.locations:
|
||||
for loc in pl1.locations:
|
||||
self.assertEqual(loc.qty, 10.0)
|
||||
self.assertTrue(loc.serial_and_batch_bundle)
|
||||
|
||||
@ -756,8 +752,7 @@ class TestPickList(FrappeTestCase):
|
||||
for d in data:
|
||||
self.assertTrue(d.serial_no not in picked_serial_nos)
|
||||
|
||||
pl.save()
|
||||
pl.submit()
|
||||
pl1.cancel()
|
||||
pl.cancel()
|
||||
|
||||
def test_picklist_with_bundles(self):
|
||||
|
@ -196,7 +196,7 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial and Batch Bundle",
|
||||
@ -206,7 +206,7 @@
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "pick_serial_and_batch",
|
||||
"fieldtype": "Button",
|
||||
"label": "Pick Serial / Batch No"
|
||||
|
@ -136,6 +136,7 @@ class TestSerialandBatchBundle(FrappeTestCase):
|
||||
|
||||
def test_old_batch_valuation(self):
|
||||
frappe.flags.ignore_serial_batch_bundle_validation = True
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
batch_item_code = "Old Batch Item Valuation 1"
|
||||
make_item(
|
||||
batch_item_code,
|
||||
@ -240,6 +241,7 @@ class TestSerialandBatchBundle(FrappeTestCase):
|
||||
bundle_doc.submit()
|
||||
|
||||
frappe.flags.ignore_serial_batch_bundle_validation = False
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_old_serial_no_valuation(self):
|
||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
||||
@ -259,6 +261,7 @@ class TestSerialandBatchBundle(FrappeTestCase):
|
||||
)
|
||||
|
||||
frappe.flags.ignore_serial_batch_bundle_validation = True
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
|
||||
serial_no_id = "Old Serial No 1"
|
||||
if not frappe.db.exists("Serial No", serial_no_id):
|
||||
@ -320,6 +323,9 @@ class TestSerialandBatchBundle(FrappeTestCase):
|
||||
for row in bundle_doc.entries:
|
||||
self.assertEqual(flt(row.stock_value_difference, 2), -100.00)
|
||||
|
||||
frappe.flags.ignore_serial_batch_bundle_validation = False
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_batch_not_belong_to_serial_no(self):
|
||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
||||
|
||||
|
@ -92,6 +92,9 @@ def make_stock_entry(**args):
|
||||
else:
|
||||
args.qty = cint(args.qty)
|
||||
|
||||
if args.serial_no or args.batch_no:
|
||||
args.use_serial_batch_fields = True
|
||||
|
||||
# purpose
|
||||
if not args.purpose:
|
||||
if args.source and args.target:
|
||||
@ -162,6 +165,7 @@ def make_stock_entry(**args):
|
||||
)
|
||||
|
||||
args.serial_no = serial_number
|
||||
|
||||
s.append(
|
||||
"items",
|
||||
{
|
||||
@ -177,6 +181,7 @@ def make_stock_entry(**args):
|
||||
"batch_no": args.batch_no,
|
||||
"cost_center": args.cost_center,
|
||||
"expense_account": args.expense_account,
|
||||
"use_serial_batch_fields": args.use_serial_batch_fields,
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -680,6 +680,7 @@ class TestStockEntry(FrappeTestCase):
|
||||
def test_serial_move(self):
|
||||
se = make_serialized_item()
|
||||
serial_no = get_serial_nos_from_bundle(se.get("items")[0].serial_and_batch_bundle)[0]
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
|
||||
se = frappe.copy_doc(test_records[0])
|
||||
se.purpose = "Material Transfer"
|
||||
@ -700,6 +701,7 @@ class TestStockEntry(FrappeTestCase):
|
||||
self.assertTrue(
|
||||
frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse - _TC"
|
||||
)
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_serial_cancel(self):
|
||||
se, serial_nos = self.test_serial_by_series()
|
||||
@ -999,6 +1001,8 @@ class TestStockEntry(FrappeTestCase):
|
||||
do_not_save=True,
|
||||
)
|
||||
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
|
||||
cls_obj = SerialBatchCreation(
|
||||
{
|
||||
"type_of_transaction": "Inward",
|
||||
@ -1035,84 +1039,7 @@ class TestStockEntry(FrappeTestCase):
|
||||
|
||||
s2.submit()
|
||||
s2.cancel()
|
||||
|
||||
# def test_retain_sample(self):
|
||||
# from erpnext.stock.doctype.batch.batch import get_batch_qty
|
||||
# from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
||||
|
||||
# create_warehouse("Test Warehouse for Sample Retention")
|
||||
# frappe.db.set_value(
|
||||
# "Stock Settings",
|
||||
# None,
|
||||
# "sample_retention_warehouse",
|
||||
# "Test Warehouse for Sample Retention - _TC",
|
||||
# )
|
||||
|
||||
# test_item_code = "Retain Sample Item"
|
||||
# if not frappe.db.exists("Item", test_item_code):
|
||||
# item = frappe.new_doc("Item")
|
||||
# item.item_code = test_item_code
|
||||
# item.item_name = "Retain Sample Item"
|
||||
# item.description = "Retain Sample Item"
|
||||
# item.item_group = "All Item Groups"
|
||||
# item.is_stock_item = 1
|
||||
# item.has_batch_no = 1
|
||||
# item.create_new_batch = 1
|
||||
# item.retain_sample = 1
|
||||
# item.sample_quantity = 4
|
||||
# item.save()
|
||||
|
||||
# receipt_entry = frappe.new_doc("Stock Entry")
|
||||
# receipt_entry.company = "_Test Company"
|
||||
# receipt_entry.purpose = "Material Receipt"
|
||||
# receipt_entry.append(
|
||||
# "items",
|
||||
# {
|
||||
# "item_code": test_item_code,
|
||||
# "t_warehouse": "_Test Warehouse - _TC",
|
||||
# "qty": 40,
|
||||
# "basic_rate": 12,
|
||||
# "cost_center": "_Test Cost Center - _TC",
|
||||
# "sample_quantity": 4,
|
||||
# },
|
||||
# )
|
||||
# receipt_entry.set_stock_entry_type()
|
||||
# receipt_entry.insert()
|
||||
# receipt_entry.submit()
|
||||
|
||||
# retention_data = move_sample_to_retention_warehouse(
|
||||
# receipt_entry.company, receipt_entry.get("items")
|
||||
# )
|
||||
# retention_entry = frappe.new_doc("Stock Entry")
|
||||
# retention_entry.company = retention_data.company
|
||||
# retention_entry.purpose = retention_data.purpose
|
||||
# retention_entry.append(
|
||||
# "items",
|
||||
# {
|
||||
# "item_code": test_item_code,
|
||||
# "t_warehouse": "Test Warehouse for Sample Retention - _TC",
|
||||
# "s_warehouse": "_Test Warehouse - _TC",
|
||||
# "qty": 4,
|
||||
# "basic_rate": 12,
|
||||
# "cost_center": "_Test Cost Center - _TC",
|
||||
# "batch_no": get_batch_from_bundle(receipt_entry.get("items")[0].serial_and_batch_bundle),
|
||||
# },
|
||||
# )
|
||||
# retention_entry.set_stock_entry_type()
|
||||
# retention_entry.insert()
|
||||
# retention_entry.submit()
|
||||
|
||||
# qty_in_usable_warehouse = get_batch_qty(
|
||||
# get_batch_from_bundle(receipt_entry.get("items")[0].serial_and_batch_bundle), "_Test Warehouse - _TC", "_Test Item"
|
||||
# )
|
||||
# qty_in_retention_warehouse = get_batch_qty(
|
||||
# get_batch_from_bundle(receipt_entry.get("items")[0].serial_and_batch_bundle),
|
||||
# "Test Warehouse for Sample Retention - _TC",
|
||||
# "_Test Item",
|
||||
# )
|
||||
|
||||
# self.assertEqual(qty_in_usable_warehouse, 36)
|
||||
# self.assertEqual(qty_in_retention_warehouse, 4)
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_quality_check(self):
|
||||
item_code = "_Test Item For QC"
|
||||
|
@ -582,7 +582,7 @@
|
||||
"label": "Add Serial / Batch No"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial and Batch Bundle",
|
||||
|
@ -482,6 +482,8 @@ class TestStockLedgerEntry(FrappeTestCase, StockTestMixin):
|
||||
(item, warehouses[0], batches[1], 1, 200),
|
||||
(item, warehouses[0], batches[0], 1, 200),
|
||||
]
|
||||
|
||||
frappe.flags.use_serial_and_batch_fields = True
|
||||
dns = create_delivery_note_entries_for_batchwise_item_valuation_test(dn_entry_list)
|
||||
sle_details = fetch_sle_details_for_doc_list(dns, ["stock_value_difference"])
|
||||
svd_list = [-1 * d["stock_value_difference"] for d in sle_details]
|
||||
@ -494,6 +496,8 @@ class TestStockLedgerEntry(FrappeTestCase, StockTestMixin):
|
||||
"Incorrect 'Incoming Rate' values fetched for DN items",
|
||||
)
|
||||
|
||||
frappe.flags.use_serial_and_batch_fields = False
|
||||
|
||||
def test_batchwise_item_valuation_stock_reco(self):
|
||||
item, warehouses, batches = setup_item_valuation_test()
|
||||
state = {"stock_value": 0.0, "qty": 0.0}
|
||||
|
@ -198,7 +198,7 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial / Batch Bundle",
|
||||
@ -208,7 +208,7 @@
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "current_serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Current Serial / Batch Bundle",
|
||||
@ -217,7 +217,7 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "add_serial_batch_bundle",
|
||||
"fieldtype": "Button",
|
||||
"label": "Add Serial / Batch No"
|
||||
|
@ -479,7 +479,7 @@
|
||||
"label": "Accounting Details"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Serial and Batch Bundle",
|
||||
@ -488,7 +488,7 @@
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "rejected_serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"label": "Rejected Serial and Batch Bundle",
|
||||
|
@ -201,7 +201,7 @@
|
||||
},
|
||||
{
|
||||
"columns": 2,
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0",
|
||||
"depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1",
|
||||
"fieldname": "serial_and_batch_bundle",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user