[fix] Validate deletion of serial no

This commit is contained in:
Nabin Hait 2015-09-22 09:09:11 +05:30
parent d91382dbf3
commit 03afb45e34

View File

@ -139,10 +139,19 @@ class SerialNo(StockController):
return sle_dict return sle_dict
def on_trash(self): def on_trash(self):
if self.warehouse: sl_entries = frappe.db.sql("""select serial_no from `tabStock Ledger Entry`
frappe.throw(_("Cannot delete Serial No {0} in stock. First remove from stock, then delete.").format(self.name)) where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No'""",
elif self.delivery_document_no: ("%%%s%%" % self.name, self.item_code), as_dict=True)
frappe.throw(_("Delivered Serial No {0} cannot be deleted").format(self.name))
# Find the exact match
sle_exists = False
for d in sl_entries:
if self.name.upper() in get_serial_nos(d.serial_no):
sle_exists = True
break
if sle_exists:
frappe.throw(_("Cannot delete Serial No {0}, as it is used in stock transactions").format(self.name))
def before_rename(self, old, new, merge=False): def before_rename(self, old, new, merge=False):
if merge: if merge: