From b5e58ffa26f1f738297374106bd432fb28b080b1 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 1 Jul 2013 12:20:00 +0530 Subject: [PATCH] [rename with merge] updated on_rename function for item, warehouse, al tree type documents --- accounts/doctype/account/account.py | 21 +++++++++++++++++---- accounts/doctype/cost_center/cost_center.py | 2 ++ stock/doctype/item/item.py | 10 ++++++++-- stock/doctype/warehouse/warehouse.py | 6 ++++++ 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/accounts/doctype/account/account.py b/accounts/doctype/account/account.py index 2d49f0dad0..98808f48a3 100644 --- a/accounts/doctype/account/account.py +++ b/accounts/doctype/account/account.py @@ -18,7 +18,7 @@ from __future__ import unicode_literals import webnotes from webnotes.utils import flt, fmt_money -from webnotes import msgprint +from webnotes import msgprint, _ sql = webnotes.conn.sql get_value = webnotes.conn.get_value @@ -196,10 +196,23 @@ class DocType: if parts[-1].lower() != company_abbr.lower(): parts.append(company_abbr) - + # rename account name - account_name = " - ".join(parts[:-1]) - sql("update `tabAccount` set account_name = %s where name = %s", (account_name, old)) + new_account_name = " - ".join(parts[:-1]) + sql("update `tabAccount` set account_name = %s where name = %s", (new_account_name, old)) + + if merge: + new_name = " - ".join(parts) + val = list(webnotes.conn.get_value("Account", new_name, + ["group_or_ledger", "debit_or_credit", "is_pl_account"])) + + if val != [self.doc.group_or_ledger, self.doc.debit_or_credit, self.doc.is_pl_account]: + msgprint(_("""Merging is only possible if following \ + properties are same in both records. + Group or Ledger, Debit or Credit, Is PL Account"""), raise_exception=1) + + from webnotes.utils.nestedset import rebuild_tree + rebuild_tree("Account", "parent_account") return " - ".join(parts) diff --git a/accounts/doctype/cost_center/cost_center.py b/accounts/doctype/cost_center/cost_center.py index e405b4de26..8be14c78c3 100644 --- a/accounts/doctype/cost_center/cost_center.py +++ b/accounts/doctype/cost_center/cost_center.py @@ -98,5 +98,7 @@ class DocType(DocTypeNestedSet): cost_center_name = " - ".join(parts[:-1]) webnotes.conn.sql("update `tabCost Center` set cost_center_name = %s where name = %s", \ (cost_center_name, old)) + + super(DocType, self).on_rename(new, old, merge, "group_or_ledger") return " - ".join(parts) diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py index d743a98005..276f6607fc 100644 --- a/stock/doctype/item/item.py +++ b/stock/doctype/item/item.py @@ -280,8 +280,14 @@ class DocType(DocListController): from webnotes.webutils import clear_cache clear_cache(self.doc.page_name) - def on_rename(self,newdn,olddn, merge=False): + def on_rename(self, newdn, olddn, merge=False): webnotes.conn.sql("update tabItem set item_code = %s where name = %s", (newdn, olddn)) if self.doc.page_name: from webnotes.webutils import clear_cache - clear_cache(self.doc.page_name) \ No newline at end of file + clear_cache(self.doc.page_name) + + if merge: + from stock.stock_ledger import update_entries_after + for wh in webnotes.conn.sql("""select warehouse from `tabBin` + where item_code=%s""", newdn): + update_entries_after({"item_code": newdn, "warehouse": wh}) \ No newline at end of file diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py index 264e459e56..6f32e152ed 100644 --- a/stock/doctype/warehouse/warehouse.py +++ b/stock/doctype/warehouse/warehouse.py @@ -204,3 +204,9 @@ class DocType: else: sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name) + def on_rename(self, newdn, olddn, merge=False): + if merge: + from stock.stock_ledger import update_entries_after + for item_code in webnotes.conn.sql("""select item_code from `tabBin` + where warehouse=%s""", newdn): + update_entries_after({"item_code": item_code, "warehouse": newdn})