fix: exclude existing serial numbers while auto creating new #29292
fix: exclude existing serial numbers while auto creating new
This commit is contained in:
parent
14e0d00a61
commit
2b681f04fd
@ -402,10 +402,16 @@ def update_serial_nos(sle, item_det):
|
|||||||
def get_auto_serial_nos(serial_no_series, qty):
|
def get_auto_serial_nos(serial_no_series, qty):
|
||||||
serial_nos = []
|
serial_nos = []
|
||||||
for i in range(cint(qty)):
|
for i in range(cint(qty)):
|
||||||
serial_nos.append(make_autoname(serial_no_series, "Serial No"))
|
serial_nos.append(get_new_serial_number(serial_no_series))
|
||||||
|
|
||||||
return "\n".join(serial_nos)
|
return "\n".join(serial_nos)
|
||||||
|
|
||||||
|
def get_new_serial_number(series):
|
||||||
|
sr_no = make_autoname(series, "Serial No")
|
||||||
|
if frappe.db.exists("Serial No", sr_no):
|
||||||
|
sr_no = get_new_serial_number(series)
|
||||||
|
return sr_no
|
||||||
|
|
||||||
def auto_make_serial_nos(args):
|
def auto_make_serial_nos(args):
|
||||||
serial_nos = get_serial_nos(args.get('serial_no'))
|
serial_nos = get_serial_nos(args.get('serial_no'))
|
||||||
created_numbers = []
|
created_numbers = []
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
import frappe
|
import frappe
|
||||||
|
|
||||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||||
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
|
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
|
||||||
@ -176,6 +177,24 @@ class TestSerialNo(ERPNextTestCase):
|
|||||||
self.assertEqual(sn_doc.warehouse, "_Test Warehouse - _TC")
|
self.assertEqual(sn_doc.warehouse, "_Test Warehouse - _TC")
|
||||||
self.assertEqual(sn_doc.purchase_document_no, se.name)
|
self.assertEqual(sn_doc.purchase_document_no, se.name)
|
||||||
|
|
||||||
|
def test_auto_creation_of_serial_no(self):
|
||||||
|
"""
|
||||||
|
Test if auto created Serial No excludes existing serial numbers
|
||||||
|
"""
|
||||||
|
item_code = make_item("_Test Auto Serial Item ", {
|
||||||
|
"has_serial_no": 1,
|
||||||
|
"serial_no_series": "XYZ.###"
|
||||||
|
}).item_code
|
||||||
|
|
||||||
|
# Reserve XYZ005
|
||||||
|
pr_1 = make_purchase_receipt(item_code=item_code, qty=1, serial_no="XYZ005")
|
||||||
|
# XYZ005 is already used and will throw an error if used again
|
||||||
|
pr_2 = make_purchase_receipt(item_code=item_code, qty=10)
|
||||||
|
|
||||||
|
self.assertEqual(get_serial_nos(pr_1.get("items")[0].serial_no)[0], "XYZ005")
|
||||||
|
for serial_no in get_serial_nos(pr_2.get("items")[0].serial_no):
|
||||||
|
self.assertNotEqual(serial_no, "XYZ005")
|
||||||
|
|
||||||
def test_serial_no_sanitation(self):
|
def test_serial_no_sanitation(self):
|
||||||
"Test if Serial No input is sanitised before entering the DB."
|
"Test if Serial No input is sanitised before entering the DB."
|
||||||
item_code = "_Test Serialized Item"
|
item_code = "_Test Serialized Item"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user