rename dt patch updated
diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/erpnext/patches/jan_mar_2012/rename_dt.py
index b3bcc34..bd703a5 100644
--- a/erpnext/patches/jan_mar_2012/rename_dt.py
+++ b/erpnext/patches/jan_mar_2012/rename_dt.py
@@ -1,14 +1,74 @@
-def execute():
- import webnotes
- from webnotes.model import rename, delete_doc
- from webnotes.model.code import get_obj
- from wnf import replace_code
- import os
-
+import webnotes
+from webnotes.model import rename, delete_doc
+from webnotes.model.code import get_obj
+from wnf import replace_code
+from termcolor import colored
+from webnotes.modules.module_manager import reload_doc
+from webnotes.utils import make_esc
+import os
- # delete dt
- #-------------
- del_mapper = ['Production Forecast-Production Planning Tool', 'Production Forecast-Production Plan']
+
+
+def execute():
+ # delete dt, mapper
+ delete_dt_and_mapper()
+
+ #---------------------------------------------------
+ # doctype renaming
+ rendt = get_dt_to_be_renamed()
+ # Rename dt in db
+ rename_in_db(rendt, 'DocType', 1)
+ # Upadte dt in records
+ update_dt_in_records(rendt)
+
+ #---------------------------------------------------
+ # Dt Mapper renaming
+ ren_mapper = get_mapper_to_be_renamed()
+ # Rename mapper in db
+ rename_in_db(ren_mapper, 'DocType Mapper', 0)
+
+ #---------------------------------------------------
+ # GL Mapper renaming
+ gl_mapper = {'Receivable Voucher': 'Sales Invoice', 'Payable Voucher': 'Purchase Invoice'}
+ rename_in_db(gl_mapper, 'GL Mapper', 0)
+
+
+ #---------------------------------------------------
+ # remove dt label
+ webnotes.conn.sql("""delete from `tabDocType Label` where name in ('Ticket', 'Receivable Voucher',
+ 'QA Inspection Report', 'Payable Voucher', 'Manage Account', 'Indent', 'DocLayer')""")
+
+ #---------------------------------------------------
+ # Reload mapper from file
+ for d in ren_mapper:
+ mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", ren_mapper[d])[0][0].lower().split())
+ reload_doc(mod, 'DocType Mapper', ren_mapper[d])
+
+ # reload custom search criteria
+ for d in webnotes.conn.sql("""select name, module from `tabSearch Criteria` where ifnull(standard, 'Yes') = 'Yes' and ifnull(disabled, 0) = 0"""):
+ reload_doc(d[1], 'search_criteria', d[0])
+
+ # reload custom print format
+ for d in webnotes.conn.sql("select name, module from `tabPrint Format` where ifnull(standard, 'Yes') = 'Yes'"):
+ reload_doc(d[1], 'Print Format', d[0])
+
+ # Reload GL Mapper
+ for d in webnotes.conn.sql("select name from `tabGL Mapper`"):
+ reload_doc('accounts', 'GL Mapper', d[0])
+
+ #gl entry, stock ledger entry,
+ webnotes.conn.sql("update `tabDocField` set options =replace(options, %s, %s) where fieldtype = 'Select' and ")
+ select parent, fieldname from tabDocField where options like '%Receivable Voucher%' and fieldtype = 'Select'
+
+
+
+ # T0-do-list
+ # gl mapper name
+
+
+
+def delete_dt_and_mapper():
+ del_mapper = ['Production Forecast-Production Planning Tool', 'Production Forecast-Production Plan', 'Sales Order-Production Plan']
for d in del_mapper:
delete_doc('DocType Mapper', d)
@@ -17,12 +77,78 @@
for d in del_dt:
delete_doc('DocType', d)
-
- # Rename dt
- #-------------
+
+def rename_in_db(ren_data, data_type, is_doctype):
+ for d in ren_data:
+ print colored('Renaming... ' + d + ' --> '+ ren_data[d], 'yellow')
+ #rename
+ try:
+ rename(data_type, d, ren_data[d], is_doctype)
+ except Exception, e:
+ print e
+ pass
+
+
+def update_dt_in_records(rendt):
+ for d in rendt:
+ # Feed, property setter, search criteria, gl mapper, form 16A, naming series options, doclayer - dodtype is not mentioed in options
+ dt_list = webnotes.conn.sql("select parent, fieldname from tabDocField where fieldname in ('dt', 'doctype', 'doc_type', 'dt_type') and ifnull(options, '') = ''")
+ for dt in record_dt:
+ webnotes.conn.sql("update `tab%s` set %s = replace(%s, '%s', '%s') where %s = '%s'" % (dt[0], dt[1], dt[1], d, rendt[d], dt[1], d))
+
+ # gl mapper, gl entry
+ webnotes.conn.sql("update `tabGL Mapper Detail` set against_voucher_type = replace(against_voucher_type, %s, %s) where against_voucher_type like '%%%s%%'" % (d, rendt[d], d))
+ webnotes.conn.sql("update `tabGL Entry` set against_voucher_type = replace(against_voucher_type, %s, %s) where against_voucher_type = '%s'" % (d, rendt[d], d))
+ webnotes.conn.sql("update `tabGL Entry` set voucher_type = replace(voucher_type, %s, %s) where voucher_type = '%s'" % (d, rendt[d], d))
+
+ # Stock ledger entry
+
+ # Custom fld: options
+ webnotes.conn.sql("update `tabCustom Field` set options = replace(options, %s, %s) where fieldtype in ('Link', 'Select')", (d, rendt[d]))
+
+ #Property Setter: value (if property=options)
+ webnotes.conn.sql("update `tabProperty Setter` set value = replace(value, %s, %s) where property = 'Options'", (d, rendt[d]))
+
+ # custom script: script
+ webnotes.conn.sql("update `tabCustom Script` set script = replace(script, %s, %s)", (d, rendt[d]))
+
+ # print format: html
+ webnotes.conn.sql("update `tabPrint Format` set html = replace(html, %s, %s) where ifnull(standard, 'Yes') = 'No'", (d, rendt[d]))
+
+ # custom report: doc_type, filters, columns, parent_doc_type, add_cond, add_col, add_tab,
+ # dis_filters, group_by, sort_by, report_script, server_script, custom_query
+ webnotes.conn.sql("""
+ update
+ `tabSearch Criteria`
+ set
+ doc_type = replace(doc_type, %s, %s),
+ filters = replace(filters, %s, %s),
+ columns = replace(columns, %s, %s),
+ parent_doc_type = replace(parent_doc_type, %s, %s),
+ add_cond = replace(add_cond, %s, %s),
+ add_col = replace(add_col, %s, %s),
+ add_tab = replace(add_tab, %s, %s),
+ dis_filters = replace(dis_filters, %s, %s),
+ group_by = replace(group_by, %s, %s),
+ sort_by = replace(sort_by, %s, %s),
+ report_script = replace(report_script, %s, %s),
+ server_script = replace(server_script, %s, %s),
+ custom_query = replace(custom_query, %s, %s)
+ where
+ ifnull(standard, 'Yes') = 'No'
+ """, (d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d],
+ d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], ))
+
+
+
+
+def get_dt_to_be_renamed():
rendt = {
- 'KRA Sheet' : 'Appraisal Template Goal'
- }
+ 'Receivable Voucher' : 'Sales Invoice',
+ 'RV Detail' : 'Sales Invoice Item',
+ 'RV Tax Detail' : 'Sales Taxes and Charges',
+ 'Advance Adjustment Detail' : 'Sales Invoice Advance',
+}
new = {
'Receivable Voucher' : 'Sales Invoice',
@@ -100,36 +226,94 @@
'Professional Training Details' : 'Employee Training',
'Previous Experience Detail' : 'Employee External Work History',
}
-
- for d in rendt:
- print d + ' --------> '+ rendt[d]
-
- #rename
- rename('DocType', d, rendt[d], 1)
-
- # update txt
- obj = get_obj('DocType', rendt[d])
- obj.doc.save()
+ return rendt
- # RUN ONLY IN LOCAL
- ######################
+def get_mapper_to_be_renamed():
+ ren_mapper = {
+ 'Sales Order-Receivable Voucher' : 'Sales Order-Sales Invoice',
+ 'Receivable Voucher-Delivery Note' : 'Sales Invoice-Delivery Note',
+ 'Delivery Note-Receivable Voucher' : 'Delivery Note-Sales Invoice'
+ }
-
- # replace dt in js/py file
- for extn in ['js', 'py', 'txt']:
- replace_code('/var/www/erpnext/', d, rendt[d], extn)
-
-
+ ren_map = {
+ 'Sales Order-Receivable Voucher' : 'Sales Order-Sales Invoice',
+ 'Sales Order-Indent' : 'Sales Order-Purchase Request',
+ 'Receivable Voucher-Delivery Note' : 'Sales Invoice-Delivery Note',
+ 'Purchase Receipt-Payable Voucher' : 'Purchase Receipt-Purchase Invoice',
+ 'Purchase Order-Payable Voucher' : 'Purchase Order-Purchase Invoice',
+ 'Project-Receivable Voucher' : 'Project-Sales Invoice',
+ 'Lead-Enquiry' : 'Lead-Opportunity',
+ 'KRA Template-Appraisal' : 'Appraisal Template-Appraisal',
+ 'Indent-Purchase Order' : 'Purchase Request-Purchase Order',
+ 'Enquiry-Quotation' : 'Opportunity-Quotation',
+ 'Delivery Note-Receivable Voucher' : 'Delivery Note-Sales Invoice'
+ }
+ return ren_mapper
+#--------------------------------------------------------------------------------------------------------
+
+def update_local_file_system():
+ """ RUN ONLY IN LOCAL"""
+
+ # doctype renaming
+ rendt = get_dt_to_be_renamed()
+
+ # replace dt in js/py file
+ update_file_content(rendt)
+ # git mv
+ rename_dt_files(rendt)
+
+
+ # Mapper renaming
+ ren_mapper = get_mapper_to_be_renamed()
+
+ rename_mapper_files(ren_mapper)
-#------TO-DO--------
-# remove dir
-# git remove
-# dt mapper rename
-# change in gl mapper
+ # git rm production dt mapper
+ os.system('git rm -r erpnext/production/DocType\ Mapper/')
+
+
+
+def update_file_content(rendt):
+ for d in rendt:
+ for extn in ['js', 'py', 'txt']:
+ replace_code('/var/www/erpnext/', d, rendt[d], extn)
+
+
+def rename_dt_files(rendt):
+ for d in rendt:
+ mod = webnotes.conn.sql("select module from tabDocType where name = %s", rendt[d])[0][0]
+ path = 'erpnext/' + '_'.join(mod.lower().split()) + '/doctype/'
+ old = '_'.join(d.lower().split())
+ new = '_'.join(rendt[d].lower().split())
+
+ # rename old dir
+ os.system('git mv ' + path + old + ' ' + path + new)
+ print 'git mv ' + path + old + ' ' + path + new
+
+ # rename all files in that dir
+ for extn in ['js', 'py', 'txt']:
+ if os.path.exists(path + new + '/'+ old + '.' +extn):
+ os.system('git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn)
+ print 'git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn
+
+
+def rename_mapper_files(ren_mapper):
+ for d in ren_mapper:
+ # module
+ mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", ren_mapper[d])[0][0].lower().split())
+ path = 'erpnext/' + mod + '/DocType Mapper/'
+
+ # rename old dir
+ esc = make_esc('$ ')
+ os.system('git mv ' + esc(path + d) + ' ' + esc(path + ren_mapper[d]))
+ print 'git mv ' + esc(path + d) + ' ' + esc(path + ren_mapper[d])
+ os.system('git mv ' + esc(path + ren_mapper[d] + '/'+ d + '.' +extn) + ' ' + esc(path + ren_mapper[d] + '/' + ren_mapper[d] + '.' +extn))
+ print 'git mv ' + esc(path + ren_mapper[d] + '/'+ d + '.txt') + ' ' + esc(path + ren_mapper[d] + '/' + ren_mapper[d] + '.txt')
+