Hi,
I have requirement to customize the subject of the lead which is automatically created when the emails are fetched, is their anyway in the server action I could control what needs to have in the subject field when a new lead is created.
Thanks
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
Hi,
I have requirement to customize the subject of the lead which is automatically created when the emails are fetched, is their anyway in the server action I could control what needs to have in the subject field when a new lead is created.
Thanks
The function that is being called when a message arrives is message_new
that is present in mail_thread
, but in many cases is re-implemented by modules that need to create objects from mails.
def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
...
if custom_values and isInstance(custom_values,dict):
data.update(custom_values)
res_id = model.pool.create(cr, uid, data, context=context)
return res_id
as you can see, you have the parameter msg_dict. Of course, in there is where you get 'the mail' as a dictionary with the different values (e.g. the body, email_from, subject).
By updating custom_values.update({'name': 'whatever you want'})
If you choose to re-implement this method, you can put in a dictionary called custom_values
all values that are going to be used in the creation of the new object (if any). As key you must use the name of the columns of the object being created (in this case, the lead). After this, you could even call the method message_new
defined in mail_thread
or not, depending in your particular requirements.
Also, when a message for an object already created arrives, the function that is being called is message_update
. In there, with a similar functionality as the ut supra explained, you can put the values that you want to update for the existing object (in this case, a dictionary called update_vals
is where you need to put the new values).
def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None):
if update_vals:
self.write(cr, uid, ids, update_vals, context=context)
I solved in this way:
First of all - setup "incoming mail server".
Setup "Create a new record" - crm.lead.
Create new server action with type "python code".
There is python code example:
def parse_description(description):
'''
there is parse function
It is example for parsing messages like this:
Name: John
Phone: +100500
'''
fields=['name','phone']
_dict={}
description=description.lower()
for line in description.split('\n'):
for field in fields:
if field in line:
split_line=line.split(':')
if len(split_line)>1:
pre_dict[field]=line.split(':')[1]
return dict
lead=self.browse(cr,uid,context['active_id'],context=context) description=lead['description'] _dict=parse_description(description) self.write(cr,uid,context['active_id'],{ 'partner_name':_dict.get('name'), 'contact_name':_dict.get('name'), 'phone':_dict.get(u'phone'), 'mobile':_dict.get(u'phone')})
Of couse for good results you should know python language - the main place is "parse_description" function.
My requirement is to fetch mails and create leads in crm_lead :-)
I Configured Incoming Server :-) http://Pop.gmail.com With All info :-)
But How to proceed Further
Thanks .... Anton Lavrenov :)
Atul : I got these traceback while i am fetching mail 2014-07-01 13:39:40,188 4992 INFO v8_demo openerp.addons.mail.mail_thread: Routing mail from Atul Jain <jain.atul43@gmail.com> to jain.atul10@hotmail.com with Message-Id <CAG=2G76_SRthL3ybGGyx2Lai5H=RMNxUOjRRR=+5-ODrcgtEZw@mail.gmail.com>: fallback to model:crm.lead, thread_id:False, custom_values:None, uid:1 2014-07-01 13:39:40,445 4992 ERROR v8_demo openerp.addons.fetchmail.fetchmail: Failed to fetch mail from imap server Gmail. Traceback (most recent call last): File "/home/atul/openerp-8/openerp/addons/fetchmail/fetchmail.py", line 206, in fetch_mail action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids' :[res_id], 'active_model': context.get("thread_model", server.object_id.model)}) File "/home/atul/openerp-8/openerp/addons/base/ir/ir_actions.py", line 967, in run res = func(cr, uid, action, eval_context=eval_context, context=run_context) File "/home/atul/openerp-8/openerp/addons/base/ir/ir_actions.py", line 805, in run_action_code_multi eval(action.code.strip(), eval_context, mode="exec", nocopy=True) # nocopy allows to return 'action' File "/home/atul/openerp-8/openerp/tools/safe_eval.py", line 254, in safe_eval return eval(c, globals_dict, locals_dict) File "", line 14, in File "", line 4, in parse_description ValueError: "'bool' object has no attribute 'lower'" while evaluating
When the lead is created automatically through an email automation, the lead name it gets created is subject of an email which I want to customise it, currently I dont see any option to manipulate email objects before the leads gets created.
Can u pls explain where u had used this function lines in your python coding lead=self.browse(cr,uid,context['active_id'],context=context) description=lead['description'] _dict=parse_description(description) self.write(cr,uid,context['active_id'],{ 'partner_name':_dict.get('name'), 'contact_name':_dict.get('name'), 'phone':_dict.get(u'phone'), 'mobile':_dict.get(u'phone')})
It appears that in early 2013 the codebase was changed so the email content is no longer put into the description field of the created lead. The email that creates the lead is stored as a message that is attached to the lead and I am still working on how to extract information from this.
When email created then it will fill name-email, subject etc.
This video will helpful to generate lead/opportunity etc from incoming emails. It is also possible to customise that it will read email body and fill data in document fields.
#Odoo #CreateOpportunityFromIncomingEmail #OdooIncomingEmailToOpportunity #OdooOpportunity #OdooLeadGeneration #OdooAutomaticLeadGeneration
Crea un account oggi per scoprire funzionalità esclusive ed entrare a far parte della nostra fantastica community!
RegistratiPost correlati | Risposte | Visualizzazioni | Attività | |
---|---|---|---|---|
|
1
mar 15
|
18012 | ||
|
2
apr 23
|
8715 | ||
|
0
feb 23
|
1668 | ||
|
3
mar 16
|
11754 | ||
|
8
ott 15
|
5782 |
I am not sure what are you asking. The only thing you want to do is to change the name of the lead being created, no matter what?