delete the auto created batch
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 261b0f0..d4676ff 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -866,7 +866,7 @@
# because updating ordered qty in bin depends upon updated ordered qty in PO
if self.update_stock == 1:
self.update_stock_ledger()
- self.unlink_reference_from_batch()
+ self.delete_auto_created_batches()
self.make_gl_entries_on_cancel()
self.update_project()
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index ba49daa..14ee23b 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -234,12 +234,16 @@
frappe.throw(_("{0} {1}: Cost Center is mandatory for Item {2}").format(
_(self.doctype), self.name, item.get("item_code")))
- def unlink_reference_from_batch(self):
- frappe.db.sql(""" UPDATE `tabBatch`
- SET reference_doctype = NULL, reference_name = NULL
- WHERE
- reference_doctype = %s and reference_name = %s
- """, (self.doctype, self.name))
+ def delete_auto_created_batches(self):
+ for d in self.items:
+ if not d.batch_no: continue
+
+ d.batch_no = None
+ d.db_set("batch_no", None)
+
+ for data in frappe.get_all("Batch",
+ {'reference_name': self.name, 'reference_doctype': self.doctype}):
+ frappe.delete_doc("Batch", data.name)
def get_sl_entries(self, d, args):
sl_dict = frappe._dict({
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index e068dd7..09adb56 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -195,7 +195,7 @@
# because updating ordered qty in bin depends upon updated ordered qty in PO
self.update_stock_ledger()
self.make_gl_entries_on_cancel()
- self.unlink_reference_from_batch()
+ self.delete_auto_created_batches()
def get_current_stock(self):
for d in self.get('supplied_items'):
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 738ac42..62e38c3 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -110,7 +110,7 @@
self.update_cost_in_project()
self.update_transferred_qty()
self.update_quality_inspection()
- self.unlink_reference_from_batch()
+ self.delete_auto_created_batches()
def set_job_card_data(self):
if self.job_card and not self.work_order: