[FIX] crm: set default email_from, email_to in crm history on send/receive mail
authorHarry (Open ERP) <hmo@tinyerp.com>
Tue, 30 Mar 2010 10:40:29 +0000 (16:10 +0530)
committerHarry (Open ERP) <hmo@tinyerp.com>
Tue, 30 Mar 2010 10:40:29 +0000 (16:10 +0530)
bzr revid: hmo@tinyerp.com-20100330104029-l9j4v0dtiuv3rn7y

12 files changed:
addons/crm/crm.py
addons/crm/crm_claims_view.xml
addons/crm/crm_fund_view.xml
addons/crm/crm_helpdesk_view.xml
addons/crm/crm_lead_view.xml
addons/crm/crm_opportunity_view.xml
addons/crm/crm_view.xml
addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
addons/crm/wizard/crm_send_email.py
addons/crm/wizard/crm_send_email_view.xml
addons/hr_recruitment/hr_recruitment_view.xml
addons/project_issue/project_issue_view.xml

index 6473ace..45d0434 100644 (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 {}
index 50c0611..c1a3345 100644 (file)
                             <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>
                         <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index 6babca1..bcd7846 100644 (file)
                             <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>
                        <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index 42bb1e0..307352f 100644 (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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index 11ae3c8..222bc18 100644 (file)
                         <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index 956cba3..bd1b61c 100644 (file)
                             <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>
                         <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index ffbe9ef..6594c2a 100644 (file)
                                     <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>
                                <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index 9db7e24..3a7bf18 100755 (executable)
@@ -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):
index 3adf769..14b7dfe 100644 (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]
index ece20c8..61c7702 100644 (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" />
index d07afd4..9cde61f 100644 (file)
                         <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>
index be1fe6a..203f839 100644 (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>
                                 <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"
                                </form>
                                <tree string="Communication history">
                                    <field name="description"/>
-                                   <field name="email"/>
+                                   <field name="email_to"/>
                                    <field name="date"/>
                                </tree>
                            </field>