瀏覽代碼

Ajuste varios

deisy 6 年之前
父節點
當前提交
15df75aa81

+ 5 - 1
__openerp__.py

@@ -11,11 +11,15 @@
     'views/partner_view.xml',
     'views/menus_view.xml',
     'views/task_type_view.xml',
+    'views/crm_campaign.xml',
     'datas/task_type_data.xml',
-    'security/ir.model.access.csv',],
+    'template.xml',
+    'security/ir.model.access.csv',
+    ],
 'depends':[
     'base',
     'crm',
+    'web',
     'partner_social_fields',],
 'application':True,
 "images": [

+ 5 - 0
datas/task_type_data.xml

@@ -14,5 +14,10 @@
     <record model="crm.task.type" id="type4">
       <field name="name">Correo</field>
     </record>
+
+    <record model="crm.case.stage" id="leads_stage">
+    <field name="name">Iniciativa</field>
+    <field name="code">LEAD_NO_DELETE</field>
+  </record>
   </data>
 </openerp>

+ 1 - 1
models/crm_task.py

@@ -7,7 +7,7 @@ from datetime import datetime
 class crm_task(models.Model):
     _name="crm.task"
 
-    name = fields.Char(string="Actividad", size=100)
+    name = fields.Char(string="Tarea", size=100)
     active = fields.Boolean("Activo", default=True)
     date_action_next = fields.Datetime('Fecha Prox. Accion')
     date_last_state_update = fields.Datetime('Last State Update')

二進制
models/crm_task.pyc


+ 91 - 2
models/eiru_crm.py

@@ -1,6 +1,6 @@
 # -*- coding:utf-8 -*-
 
-from openerp import api, fields, models
+from openerp import api, fields, models, exceptions, osv
 from datetime import datetime
 
 class crm_lead(models.Model):
@@ -70,7 +70,96 @@ class crm_lead(models.Model):
             }
         return {'value': values}
 
+    def case_mark_won(self, cr, uid, ids, context=None):
+        """ Mark the case as won: state=done and probability=100
+        """
+        for each in ids:
+            crm = self.pool.get('crm.lead').browse(cr, uid, each)
+            self.pool.get('res.partner').write(cr, uid, crm.partner_id.id, {'customer': True}, context=context)
+
+        stages_leads = {}
+        for lead in self.browse(cr, uid, ids, context=context):
+            stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 100.0), ('on_change', '=', True)], context=context)
+            if stage_id:
+                if stages_leads.get(stage_id):
+                    stages_leads[stage_id].append(lead.id)
+                else:
+                    stages_leads[stage_id] = [lead.id]
+            else:
+                raise osv.except_osv(_('Warning!'),
+                    _('To relieve your sales pipe and group all Won opportunities, configure one of your sales stage as follow:\n'
+                        'probability = 100 % and select "Change Probability Automatically".\n'
+                        'Create a specific stage or edit an existing one by editing columns of your opportunity pipe.'))
+        for stage_id, lead_ids in stages_leads.items():
+            self.write(cr, uid, lead_ids, {'stage_id': stage_id}, context=context)
+        return True
+
+    def create(self, cr, uid, vals, context=None):
+
+        context = dict(context or {})
+        if vals.get('type') and not context.get('default_type'):
+            context['default_type'] = vals.get('type')
+        if vals.get('section_id') and not context.get('default_section_id'):
+            context['default_section_id'] = vals.get('section_id')
+        if vals.get('user_id'):
+            vals['date_open'] = fields.datetime.now()
+
+        partner_id = vals['partner_id']
+        values = {
+        'email': vals['email_from'],
+        'phone': vals['phone'],
+        'mobile': vals['mobile'],
+        'facebook': vals['facebook'],
+        'instagram': vals['instagram']
+        }
+
+        self.pool.get('res.partner').write(cr,uid,partner_id,values, context=context)
+
+        # context: no_log, because subtype already handle this
+        create_context = dict(context, mail_create_nolog=True)
+        return super(crm_lead, self).create(cr, uid, vals, context=create_context)
+
+    def write(self, cr, uid, ids, vals, context=None):
+        # stage change: update date_last_stage_update
+        if 'stage_id' in vals:
+            vals['date_last_stage_update'] = fields.datetime.now()
+        if vals.get('user_id'):
+            vals['date_open'] = fields.datetime.now()
+        # stage change with new stage: update probability and date_closed
+        if vals.get('stage_id') and not vals.get('probability'):
+            onchange_stage_values = self.onchange_stage_id(cr, uid, ids, vals.get('stage_id'), context=context)['value']
+            vals.update(onchange_stage_values)
+        self.update_partner(cr,uid,ids,vals)
+        return super(crm_lead, self).write(cr, uid, ids, vals, context=context)
+
+    def update_partner(self, cr, uid, ids, vals, context=None):
+        context = dict(context or {})
+
+        crm = self.pool.get('crm.lead').browse(cr,uid, ids)
+        partner_id = crm.partner_id.id
+        values = {'email_from','phone','mobile','facebook','instagram'}
+        vals2 = {}
+
+        for each in vals:
+            if each in values:
+                if each == 'email_from':
+                    vals2['email'] = vals[each]
+                else:
+                    vals2[each] = vals[each]
+
+        self.pool.get('res.partner').write(cr,uid,partner_id,vals2, context=context)
+        return True
+
 class CrmStage(models.Model):
     _inherit="crm.case.stage"
 
-    type = fields.Selection([('opportunity', 'Oportunidad')], string='Tipo', required=True, default='opportunity')
+    active = fields.Boolean('Activo', default=True)
+    type2 = fields.Selection([('opportunity', 'Oportunidad')], string='Tipo', required=True, default='opportunity')
+    code = fields.Char('Codigo')
+
+    @api.multi
+    def unlink(self):
+        for record in self:
+            if record.code == 'LEAD_NO_DELETE':
+                raise exceptions.Warning(('Aviso'), ('Este estado no puede ser eliminado. Pruebe desactivarlo.'))
+        return super(CrmStage, self).unlink()

二進制
models/eiru_crm.pyc


+ 1 - 1
models/res_partner.py

@@ -10,7 +10,7 @@ class ResPartner(models.Model):
         for partner in self:
             partner.activity_count = self.env['crm.task'].search_count([('partner_id', '=', partner.id),('state','=','pending')])
 
-    task_ids = fields.One2many('crm.task', 'partner_id','Actividades')
+    task_ids = fields.One2many('crm.task', 'partner_id','Tareas')
     instagram = fields.Char('Instagram', size=64, required=False, readonly=False)
 
     def goto_instagram(self, cr, uid, ids, context=None):

二進制
models/res_partner.pyc


+ 32 - 0
static/src/js/custom.js

@@ -0,0 +1,32 @@
+openerp.eiru_crm = function(instance) {
+  var QWeb = instance.web.qweb;
+   _t = instance.web._t;
+
+  instance.web.CrashManager.include({
+
+    show_warning: function(error) {
+      if (!this.active) {
+        return;
+      }
+      if (error.data.exception_type === "except_osv") {
+        error = _.extend({}, error, {
+          data: _.extend({}, error.data, {
+            message: error.data.arguments[0] + "\n\n" + error.data.arguments[1]
+          })
+        });
+      }
+      new instance.web.Dialog(this, {
+        size: 'medium',
+        title: "Aviso del sistema ",
+        buttons: [{
+          text: _t("Ok"),
+          click: function() {
+            this.parents('.modal').modal('hide');
+          }
+        }],
+      }, $('<div>' + QWeb.render('CrashManager.warning', {
+        error: error
+      }) + '</div>')).open();
+    },
+  });
+}

+ 10 - 0
template.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data>
+    <template id="assets_backend" inherit_id="web.assets_backend">
+      <xpath expr="." position="inside">
+        <script type="text/javascript" src="/eiru_crm/static/src/js/custom.js"/>
+      </xpath>
+    </template>
+  </data>
+</openerp>

+ 20 - 0
views/crm_campaign.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+        <record id="change_crm_marketing_group_view" model="ir.ui.view">
+            <field name="name">crm.lead.inherit.form</field>
+            <field name="model">crm.lead</field>
+            <field name="inherit_id" ref="marketing_crm.view_crm_opportunity_form"/>
+            <field name="arch" type="xml">
+                <xpath expr="//group[@string='Marketing']" position="replace">
+                    <group string="Marketing">
+                        <field name="campaign_id" />
+                        <field name="medium_id" />
+                        <field string="Origen de la oportunidad" name="source_id" />
+                    </group>
+                </xpath>
+            </field>
+        </record>
+
+    </data>
+</openerp>

+ 15 - 2
views/crm_stage_view.xml

@@ -7,7 +7,10 @@
       <field name="inherit_id" ref="crm.crm_case_stage_form" />
       <field name="arch" type="xml">
         <field name="type" position="replace">
-          <field name="type" widget="selection"/>
+          <field name="type2" widget="selection"/>
+        </field>
+        <field name="on_change" position="after">
+          <field name="active"/>
         </field>
       </field>
     </record>
@@ -18,10 +21,20 @@
       <field name="inherit_id" ref="crm.crm_case_stage_tree"/>
       <field name="arch" type="xml">
         <field name="type" position="replace">
-          <field name="type"/>
+          <field name="type2"/>
         </field>
       </field>
     </record>
 
+    <record id="stage_filter" model="ir.ui.view">
+      <field name="name">Stage Filter</field>
+      <field name="model">crm.case.stage</field>
+      <field name="arch" type="xml">
+        <search>
+           <filter string="No Activo"  domain="[('active', '=', False)]"/>
+        </search>
+      </field>
+    </record>
+
   </data>
 </openerp>

+ 9 - 9
views/eiru_crm_view.xml

@@ -9,15 +9,15 @@
         <form string="Opportunities" position="replace">
           <form string="Opportunities">
             <header>
-              <button name="case_mark_won" string="Mark Won" type="object" class="oe_highlight"/>
-              <button name="case_mark_lost" string="Mark Lost" type="object" class="oe_highlight"/>
-              <field name="stage_id" widget="statusbar" clickable="True"
-                options="{'fold_field': 'fold'}"
-                domain="['&amp;', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'opportunity')]" />
-            </header>
+            <button name="case_mark_won" string="Mark Won" attrs="{'invisible': [('probability', '=', 100)]}" type="object" class="oe_highlight"/>
+               <button name="case_mark_lost" string="Mark Lost" attrs="{'invisible': [('probability', '=', 100)]}" type="object" class="oe_highlight"/>
+               <field name="stage_id" widget="statusbar" clickable="True"
+                   options="{'fold_field': 'fold'}"
+                   domain="['&amp;', ('section_ids', '=', section_id), ('type2', '=', 'opportunity')]"/>
+           </header>
             <sheet>
               <div class="oe_right oe_button_box">
-                <button name="open_wizard" type="object" string="Añadir Actividad"
+                <button name="open_wizard" type="object" string="Añadir Tarea"
                   class="oe_inline oe_stat_button" icon="fa-calendar"/>
               </div>
               <div class="oe_title">
@@ -44,9 +44,10 @@
                     'default_instagram': instagram
                     }"/>
 
-                  <field name="partner_name" string="Company Name"/>
+                  <field name="partner_name" string="Company Name" invisible="1"/>
                   <field name="email_from" string="Email" widget="email"/>
                   <field name="mobile"/>
+                  <field name="phone"/>
                   <field name="facebook" widget="url" />
                   <field name="instagram" widget="url"/>
                 </group>
@@ -68,7 +69,6 @@
                     widget="many2many_tags"
                     context="{'object_name': 'crm.lead'}"
                     domain="[('object_id.model', '=', 'crm.lead')]"/>
-                  <field name="source_id" options='{"no_open": True,"no_create": 1, "no_create_edit": 1}'/>
                 </group>
               </group>
               <notebook colspan="4">

+ 6 - 0
views/partner_view.xml

@@ -13,6 +13,12 @@
         <xpath expr="//button[@name='%(crm.crm_case_categ_phone_incoming0)d']" position="attributes">
           <attribute name="invisible">1</attribute>
         </xpath>
+        <xpath expr="//button[@name='%(crm.crm_case_categ_phone_incoming0)d']" position="attributes">
+          <attribute name="invisible">1</attribute>
+        </xpath>
+        <xpath expr="//field[@name='fax']" position="attributes">
+          <attribute name="invisible">1</attribute>
+        </xpath>
         <notebook>
           <page string="Historial Tareas de CRM">
             <field name="task_ids" widget="many2one_clickable">