From 3ffca32ace19d4bf718cdf14a8b6c0a167d43339 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 16 Mar 2012 16:21:44 +0530 Subject: [PATCH] rename dt patch updated --- erpnext/patches/jan_mar_2012/rename_dt.py | 260 ++++++++++++++++++---- 1 file changed, 222 insertions(+), 38 deletions(-) diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/erpnext/patches/jan_mar_2012/rename_dt.py index b3bcc34c7e..bd703a5da8 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 @@ def execute(): 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 @@ def execute(): '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') +