108 lines
3.2 KiB
Python
108 lines
3.2 KiB
Python
from __future__ import unicode_literals
|
|
def execute():
|
|
import webnotes
|
|
import webnotes.model.sync
|
|
webnotes.model.sync.sync('support', 'communication')
|
|
webnotes.conn.commit()
|
|
webnotes.conn.begin()
|
|
|
|
# change doctype property setter and custom fields, and save them
|
|
move_customizations()
|
|
|
|
try:
|
|
remove_communication_log()
|
|
except Exception, e:
|
|
if e.args[0] != 1146:
|
|
raise e
|
|
|
|
def move_customizations():
|
|
import webnotes.model.doc
|
|
import webnotes.model.doctype
|
|
|
|
res = webnotes.conn.sql("""\
|
|
delete from `tabProperty Setter`
|
|
where property='previous_field'
|
|
and doc_type = 'Communication Log'""")
|
|
|
|
res = webnotes.conn.sql("""\
|
|
select name from `tabCustom Field`
|
|
where dt='Communication Log'""")
|
|
for r in res:
|
|
d = webnotes.model.doc.Document('Custom Field', r[0])
|
|
d.dt = 'Communication'
|
|
d.save()
|
|
from webnotes.model.db_schema import updatedb
|
|
updatedb('Communication')
|
|
|
|
res = webnotes.conn.sql("""\
|
|
select field_name from `tabProperty Setter`
|
|
where doc_type='Communication Log' and field_name is not null""")
|
|
|
|
doclist = webnotes.model.doctype.get('Communication', 0)
|
|
field_list = [d.fieldname for d in doclist if d.doctype=='DocField']
|
|
for r in res:
|
|
if r[0] in field_list:
|
|
webnotes.conn.sql("""\
|
|
update `tabProperty Setter`
|
|
set doc_type = 'Communication'
|
|
where field_name=%s and doc_type='Communication Log'""", r[0])
|
|
|
|
webnotes.conn.sql("""\
|
|
delete from `tabProperty Setter`
|
|
where doc_type='Communication Log'""")
|
|
|
|
webnotes.clear_cache(doctype="Communication")
|
|
|
|
def remove_communication_log():
|
|
import webnotes
|
|
import webnotes.model
|
|
import webnotes.model.doc
|
|
import webnotes.model.doctype
|
|
|
|
webnotes.conn.auto_commit_on_many_writes = True
|
|
|
|
# get all communication log records
|
|
comm_log_list = webnotes.conn.sql("select * from `tabCommunication Log`",
|
|
as_dict=1)
|
|
|
|
field_list = [d.fieldname for d in \
|
|
webnotes.model.doctype.get('Communication', 0) \
|
|
if d.doctype=='DocField']
|
|
|
|
# copy it to communication
|
|
for comm_log in comm_log_list:
|
|
d = webnotes.model.doc.Document('Communication')
|
|
|
|
for key in comm_log.keys():
|
|
if key not in webnotes.model.default_fields:
|
|
d.fields[key] = comm_log[key]
|
|
|
|
parenttype = (comm_log.get('parenttype') or '').lower()
|
|
if parenttype in field_list:
|
|
d.fields[parenttype] = comm_log.get('parent')
|
|
|
|
d.naming_series = 'COMM-'
|
|
d.subject = 'Follow Up'
|
|
d.content = comm_log.get('notes') or ''
|
|
d.medium = comm_log.get('follow_up_type') or ''
|
|
d.sales_person = comm_log.get('follow_up_by')
|
|
d.communication_date = comm_log.get('date')
|
|
d.category = 'Miscellaneous'
|
|
d.action = 'No Action'
|
|
d.save(ignore_fields=1)
|
|
|
|
# delete records with parent type "Customer", "Lead", "Supplier"
|
|
webnotes.conn.sql("""\
|
|
delete from `tabCommunication Log`
|
|
where parenttype in ('Customer', 'Lead', 'Supplier',
|
|
'Opportunity', 'Quotation')""")
|
|
|
|
# if all records deleted, drop table communication log
|
|
# and delete doctype communication log
|
|
# if for some reason, records remain, dont drop table and dont delete doctype
|
|
count = webnotes.conn.sql("select count(*) from `tabCommunication Log`")[0][0]
|
|
if not count:
|
|
webnotes.model.delete_doc('DocType', 'Communication Log')
|
|
webnotes.conn.commit()
|
|
webnotes.conn.sql("drop table `tabCommunication Log`")
|
|
webnotes.conn.begin() |