Merge branch 'master' into edge
diff --git a/accounts/doctype/account/account.py b/accounts/doctype/account/account.py
index eb65604..bdc26e4 100644
--- a/accounts/doctype/account/account.py
+++ b/accounts/doctype/account/account.py
@@ -187,7 +187,7 @@
sql("""delete from `tabGL Entry` where account = %s and
ifnull(is_cancelled, 'No') = 'Yes'""", self.doc.name)
- def on_rename(self, new, old):
+ def on_rename(self, new, old, merge=False):
company_abbr = webnotes.conn.get_value("Company", self.doc.company, "abbr")
parts = new.split(" - ")
diff --git a/accounts/doctype/cost_center/cost_center.py b/accounts/doctype/cost_center/cost_center.py
index a767245..bf09188 100644
--- a/accounts/doctype/cost_center/cost_center.py
+++ b/accounts/doctype/cost_center/cost_center.py
@@ -87,7 +87,7 @@
self.validate_mandatory()
self.validate_budget_details()
- def on_rename(self, new, old):
+ def on_rename(self, new, old, merge=False):
company_abbr = webnotes.conn.get_value("Company", self.doc.company_name, "abbr")
parts = new.split(" - ")
diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
index 0137504..d41b86c 100644
--- a/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -168,7 +168,7 @@
self.delete_supplier_communication()
self.delete_supplier_account()
- def on_rename(self, new, old):
+ def on_rename(self, new, old, merge=False):
#update supplier_name if not naming series
if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name':
update_fields = [
@@ -186,7 +186,7 @@
for account in webnotes.conn.sql("""select name, account_name from
tabAccount where master_name=%s and master_type='Supplier'""", old, as_dict=1):
if account.account_name != new:
- webnotes.rename_doc("Account", account.name, new)
+ webnotes.rename_doc("Account", account.name, new, merge=merge)
#update master_name in doctype account
webnotes.conn.sql("""update `tabAccount` set master_name = %s,
diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
index 7e16341..6f54ef9 100644
--- a/selling/doctype/customer/customer.py
+++ b/selling/doctype/customer/customer.py
@@ -216,7 +216,7 @@
if self.doc.lead_name:
sql("update `tabLead` set status='Interested' where name=%s",self.doc.lead_name)
- def on_rename(self, new, old):
+ def on_rename(self, new, old, merge=False):
#update customer_name if not naming series
if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name':
update_fields = [
@@ -244,7 +244,7 @@
for account in webnotes.conn.sql("""select name, account_name from
tabAccount where master_name=%s and master_type='Customer'""", old, as_dict=1):
if account.account_name != new:
- webnotes.rename_doc("Account", account.name, new)
+ webnotes.rename_doc("Account", account.name, new, merge=merge)
#update master_name in doctype account
webnotes.conn.sql("""update `tabAccount` set master_name = %s,
diff --git a/selling/doctype/customer/test_customer.py b/selling/doctype/customer/test_customer.py
index 551b03f..806585f 100644
--- a/selling/doctype/customer/test_customer.py
+++ b/selling/doctype/customer/test_customer.py
@@ -1,4 +1,60 @@
+from __future__ import unicode_literals
+import webnotes
+import unittest
+
+class TestCustomer(unittest.TestCase):
+ def test_rename(self):
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer 1"),
+ (("_Test Customer 1",),))
+
+ webnotes.rename_doc("Customer", "_Test Customer 1", "_Test Customer 1 Renamed")
+
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer 1 Renamed"),
+ (("_Test Customer 1 Renamed",),))
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer 1"), ())
+
+ def test_merge(self):
+ from webnotes.test_runner import make_test_records
+ make_test_records("Sales Invoice")
+
+ # clear transactions for new name
+ webnotes.conn.sql("""delete from `tabSales Invoice` where customer='_Test Customer 1'""")
+
+ # check if they exist
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer"),
+ (("_Test Customer",),))
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer 1"),
+ (("_Test Customer 1",),))
+ self.assertEqual(webnotes.conn.exists("Account", "_Test Customer - _TC"),
+ (("_Test Customer - _TC",),))
+ self.assertEqual(webnotes.conn.exists("Account", "_Test Customer 1 - _TC"),
+ (("_Test Customer 1 - _TC",),))
+
+ # check if transactions exists
+ self.assertNotEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where customer='_Test Customer'""", )[0][0], 0)
+ self.assertNotEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where debit_to='_Test Customer - _TC'""", )[0][0], 0)
+
+ webnotes.rename_doc("Customer", "_Test Customer", "_Test Customer 1", merge=True)
+
+ # check that no transaction exists for old name
+ self.assertNotEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where customer='_Test Customer 1'""", )[0][0], 0)
+ self.assertNotEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where debit_to='_Test Customer 1 - _TC'""", )[0][0], 0)
+
+ # check that transactions exist for new name
+ self.assertEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where customer='_Test Customer'""", )[0][0], 0)
+ self.assertEquals(webnotes.conn.sql("""select count(*) from `tabSales Invoice`
+ where debit_to='_Test Customer - _TC'""", )[0][0], 0)
+
+ # check that old name doesn't exist
+ self.assertEqual(webnotes.conn.exists("Customer", "_Test Customer"), ())
+ self.assertEqual(webnotes.conn.exists("Account", "_Test Customer - _TC"), ())
+
test_records = [
[{
"doctype": "Customer",
@@ -7,5 +63,13 @@
"customer_group": "_Test Customer Group",
"territory": "_Test Territory",
"company": "_Test Company"
+ }],
+ [{
+ "doctype": "Customer",
+ "customer_name": "_Test Customer 1",
+ "customer_type": "Individual",
+ "customer_group": "_Test Customer Group",
+ "territory": "_Test Territory",
+ "company": "_Test Company"
}]
]
\ No newline at end of file
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index 78be538..e383fb1 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -287,7 +287,7 @@
where doctype='Global Defaults' and field='default_company'
and value=%s""", self.doc.name)
- def on_rename(self,newdn,olddn):
+ def on_rename(self,newdn,olddn, merge=False):
webnotes.conn.sql("""update `tabCompany` set company_name=%s
where name=%s""", (newdn, olddn))
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index fde532c..bc438a8 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -272,7 +272,7 @@
from webnotes.webutils import clear_cache
clear_cache(self.doc.page_name)
- def on_rename(self,newdn,olddn):
+ 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
diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
index bbf55b3..e85a947 100644
--- a/stock/doctype/serial_no/serial_no.py
+++ b/stock/doctype/serial_no/serial_no.py
@@ -117,7 +117,7 @@
self.make_stock_ledger_entry(1)
self.make_gl_entries()
- def on_rename(self, new, old):
+ def on_rename(self, new, old, merge=False):
"""rename serial_no text fields"""
for dt in webnotes.conn.sql("""select parent from tabDocField
where fieldname='serial_no' and fieldtype='Text'"""):