[FIX] crm: set default email_from, email_to in crm history on send/receive mail

bzr revid: hmo@tinyerp.com-20100330104029-l9j4v0dtiuv3rn7y
This commit is contained in:
Harry (Open ERP) 2010-03-30 16:10:29 +05:30
parent 728caca672
commit b36be96596
12 changed files with 74 additions and 101 deletions

View File

@ -53,13 +53,6 @@ AVAILABLE_PRIORITIES = [
('2','High'),
('1','Highest')
]
icon_lst = {
'form':'STOCK_NEW',
'tree':'STOCK_JUSTIFY_FILL',
'calendar':'STOCK_SELECT_COLOR'
}
class crm_case_section(osv.osv):
_name = "crm.case.section"
_description = "Sales Teams"
@ -321,22 +314,7 @@ class crm_case(osv.osv):
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
if st in s[section]:
self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
return True
def onchange_case_id(self, cr, uid, ids, case_id, name, partner_id, context={}):
if not case_id:
return {}
case = self.browse(cr, uid, case_id, context=context)
value = {}
if not name:
value['name'] = case.name
if (not partner_id) and case.partner_id:
value['partner_id'] = case.partner_id.id
if case.partner_address_id:
value['partner_address_id'] = case.partner_address_id.id
if case.email_from:
value['email_from'] = case.email_from
return {'value': value}
return True
def history(self, cr, uid, ids, keyword, history=False, email=False, details=None, context={}):
cases = self.browse(cr, uid, ids, context=context)
@ -344,7 +322,7 @@ class crm_case(osv.osv):
history=history, email=email, details=details,\
context=context)
def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, context={}):
def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, context={}):
model_obj = self.pool.get('ir.model')
for case in cases:
model_ids = model_obj.search(cr, uid, [('model','=',case._name)])
@ -360,11 +338,12 @@ class crm_case(osv.osv):
if history:
obj = self.pool.get('crm.case.history')
data['description'] = details or case.description
data['email'] = email or \
data['email_to'] = email or \
(case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or False
data['email_from'] = email_from or \
(case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or False
data['email_from'] = (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)
res = obj.create(cr, uid, data, context)
return True
_history = __history
@ -403,12 +382,10 @@ class crm_case(osv.osv):
if not case.description:
raise osv.except_osv(_('Error!'),
_('Can not send mail with empty body,you should have description in the body'))
self.__history(cr, uid, cases, _('Send'), history=True, email=False)
for case in cases:
self.write(cr, uid, [case.id], {
'description': False,
'som': False,
'canal_id': False,
'description': False,
})
emails = [case.email_from] + (case.email_cc or '').split(',')
emails = filter(None, emails)
@ -429,6 +406,7 @@ class crm_case(osv.osv):
reply_to=case.section_id.reply_to,
openobject_id=str(case.id)
)
self.__history(cr, uid, [case], _('Send'), history=True, email=emails, details=body, email_from=emailfrom)
return True
def onchange_partner_id(self, cr, uid, ids, part, email=False):
@ -522,9 +500,7 @@ class crm_case_log(osv.osv):
_order = "id desc"
_columns = {
'name': fields.char('Status', size=64),
'som': fields.many2one('res.partner.som', 'State of Mind'),
'date': fields.datetime('Date'),
'canal_id': fields.many2one('res.partner.canal', 'Channel'),
'date': fields.datetime('Date'),
'section_id': fields.many2one('crm.case.section', 'Section'),
'user_id': fields.many2one('res.users', 'User Responsible', readonly=True),
'model_id': fields.many2one('ir.model', "Model"),
@ -550,8 +526,8 @@ class crm_case_history(osv.osv):
_columns = {
'description': fields.text('Description'),
'note': fields.function(_note_get, method=True, string="Description", type="text"),
'email': fields.char('Email', size=84),
'email_from' : fields.char('From Email', size=84),
'email_to': fields.char('Email TO', size=84),
'email_from' : fields.char('Email From', size=84),
'log_id': fields.many2one('crm.case.log','Log',ondelete='cascade'),
}
crm_case_history()
@ -595,16 +571,16 @@ class crm_email_add_cc_wizard(osv.osv_memory):
case = model_pool.browse(cr, uid, history_line.log_id.res_id)
body = history_line.description.replace('\n','\n> ')
flag = tools.email_send(
case.user_id.address_id.email,
[case.email_from],
email,
[case.user_id.address_id.email],
subject or '['+str(case.id)+'] '+case.name,
model_pool.format_body(body),
email_cc = [email],
model_pool.format_body(body),
openobject_id=str(case.id),
subtype="html"
)
if flag:
model_pool.write(cr, uid, case.id, {'email_cc' : case.email_cc and case.email_cc +','+ email or email})
self.__history(cr, uid, [case], _('Send'), history=True, email=email, details=body, email_from=case.user_id.address_id.email)
else:
raise osv.except_osv(_('Email Fail!'),("Lastest Email is not sent successfully"))
return {}

View File

@ -134,9 +134,7 @@
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
<field name="user_id"/>
</form>
</field>
</page>
@ -148,8 +146,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -165,7 +163,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -132,9 +132,7 @@
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
<field name="user_id"/>
</form>
</field>
</page>
@ -146,8 +144,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -163,7 +161,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -80,9 +80,7 @@
<separator colspan="4" string="Action Information"/>
<field colspan="4" name="name"/>
<field name="date" select="2"/>
<field name="user_id" select="2"/>
<field name="som" select="2"/>
<field name="canal_id"/>
<field name="user_id" select="2"/>
</form>
</field>
</page>
@ -94,8 +92,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -111,7 +109,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -116,8 +116,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -133,7 +133,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -122,9 +122,7 @@
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
<field name="user_id"/>
</form>
</field>
</page>
@ -136,8 +134,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -153,7 +151,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -324,9 +324,7 @@
<separator colspan="4" string="Action Information"/>
<field colspan="4" name="name"/>
<field name="date" select="2"/>
<field name="user_id" select="2"/>
<field name="som" select="2"/>
<field name="canal_id"/>
<field name="user_id" select="2"/>
</form>
</field>
</page>
@ -338,8 +336,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -355,7 +353,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -167,8 +167,7 @@ class email_parser(object):
data = {
'name': self._decode_header(msg['Subject']),
'email_from': self._decode_header(msg['From']),
'email_cc': self._decode_header(msg['Cc'] or ''),
'canal_id': self.canal_id,
'email_cc': self._decode_header(msg['Cc'] or ''),
'user_id': False,
'description': message['body'],
}
@ -291,7 +290,7 @@ class email_parser(object):
self.rpc(self.model, act, [id])
self.rpc(self.model, 'write', [id], data)
self.rpc(self.model, 'history', [id], 'Send', True, msg['From'], body['body'])
self.rpc(self.model, 'history', [id], 'Receive', True, details=body['body'], email_from=msg['From'])
return id
def msg_send(self, msg, emails, priority=None):
@ -323,7 +322,7 @@ class email_parser(object):
# 'description':body,
#}
#self.rpc(self.model, 'write', [id], data)
self.rpc(self.model, 'history', [id], 'Send', True, msg['From'], message['body'])
self.rpc(self.model, 'history', [id], 'Receive', True, details=message['body'], email_from=msg['From'])
return id
def msg_test(self, msg, case_str):

View File

@ -31,8 +31,9 @@ class crm_send_new_email(osv.osv_memory):
_description = "Case Send new email"
_columns = {
'to' : fields.char('To', size=64, required=True),
'cc' : fields.char('CC', size=128),
'email_to' : fields.char('To', size=64, required=True),
'email_from' : fields.char('From', size=64, required=True),
'email_cc' : fields.char('CC', size=128),
'subject': fields.char('Subject', size=128, required=True),
'text': fields.text('Message', required=True),
'state': fields.selection([('done', 'Done'), ('pending', 'Pending'), ('unchanged', 'Unchanged')], string='State', required=True),
@ -82,16 +83,15 @@ class crm_send_new_email(osv.osv_memory):
model = hist.log_id.model_id.model
model_pool = self.pool.get(model)
case = model_pool.browse(cr, uid, hist.log_id.res_id)
emails = [data['to']] + (data['cc'] or '').split(',')
emails = [data['email_to']] + (data['email_cc'] or '').split(',')
emails = filter(None, emails)
body = data['text']
if case.user_id.signature:
body += '\n\n%s' % (case.user_id.signature)
case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['to'], details=body)
email_from = (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)
case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['email_to'], details=body)
email_from = data.get('email_from', False)
flag = tools.email_send(
email_from,
emails,
@ -144,12 +144,15 @@ class crm_send_new_email(osv.osv_memory):
res_id = context and context.get('active_ids', []) or []
for case in mod_obj.browse(cr, uid, res_id):
if 'to' in fields:
res.update({'to': case.email_from})
if 'email_to' in fields:
res.update({'email_to': case.email_from})
if 'email_from' in fields:
res.update({'email_from': (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)})
if 'subject' in fields:
res.update({'subject': '[%s] %s' %(str(case.id), case.name or '')})
if 'cc' in fields:
res.update({'cc': case.email_cc or ''})
if 'email_cc' in fields:
res.update({'email_cc': case.email_cc or ''})
if 'text' in fields:
res.update({'text': case.description or ''})
if 'state' in fields:
@ -174,12 +177,15 @@ class crm_send_new_email(osv.osv_memory):
model = hist.log_id.model_id.model
model_pool = self.pool.get(model)
case = model_pool.browse(cr, uid, hist.log_id.res_id)
if 'to' in fields and hist.email:
res.update({'to': hist.email})
if 'email_to' in fields and hist.email_to:
res.update({'email_to': hist.email_to})
if 'email_from' in fields:
res.update({'email_from': (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)})
if 'text' in fields:
header = '-------- Original Message --------'
sender = 'From: %s' %(hist.email_from or tools.config.get('email_from',False))
to = 'To: %s' % (hist.email)
to = 'To: %s' % (hist.email_to)
sentdate = 'Sent: %s' % (hist.date)
desc = '\n%s'%(hist.description)
original = [header, sender, to, sentdate, desc]

View File

@ -10,8 +10,9 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Send New Mail" col="2">
<field name="to" />
<field name="cc" />
<field name="email_from" />
<field name="email_to" />
<field name="email_cc" />
<field name="subject" />
<field name="doc1" />
<field name="doc2" />
@ -50,8 +51,9 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Reply to last Mail" col="2">
<field name="to" />
<field name="cc" />
<field name="email_from" />
<field name="email_to" />
<field name="email_cc" />
<field name="subject" />
<field name="doc1" />
<field name="doc2" />

View File

@ -148,7 +148,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -164,7 +165,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>

View File

@ -88,8 +88,7 @@
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date" />
<field name="user_id" />
<field name="canal_id"/>
<field name="user_id" />
</form>
</field>
</page>
@ -101,8 +100,8 @@
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<field name="email_to"/>
<field name="email_from"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
@ -118,7 +117,7 @@
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="email_to"/>
<field name="date"/>
</tree>
</field>