瀏覽代碼

actualicado

deisy 6 年之前
父節點
當前提交
e1f3b8be42
共有 17 個文件被更改,包括 154 次插入120 次删除
  1. 二進制
      __init__.pyc
  2. 3 5
      __openerp__.py
  3. 二進制
      models/__init__.pyc
  4. 41 23
      models/crm_task.py
  5. 二進制
      models/crm_task.pyc
  6. 8 4
      models/eiru_crm.py
  7. 二進制
      models/eiru_crm.pyc
  8. 0 2
      models/res_partner.py
  9. 二進制
      models/res_partner.pyc
  10. 1 5
      models/task_type.py
  11. 二進制
      models/task_type.pyc
  12. 0 28
      static/src/js/web_task_color.js
  13. 0 13
      views/assets_view.xml
  14. 54 19
      views/crm_task_view.xml
  15. 27 11
      views/eiru_crm_view.xml
  16. 1 3
      views/menus_view.xml
  17. 19 7
      views/partner_view.xml

二進制
__init__.pyc


+ 3 - 5
__openerp__.py

@@ -2,7 +2,7 @@
 
 {
 'name':'Eiru CRM',
-'author':'Deisy',
+'author':'Deisy Samudio',
 'description':'',
 'data':[
     'views/crm_task_view.xml',
@@ -11,14 +11,12 @@
     'views/partner_view.xml',
     'views/menus_view.xml',
     'views/task_type_view.xml',
-    'views/assets_view.xml',
     'datas/task_type_data.xml',
     'security/ir.model.access.csv',],
 'depends':[
-    'crm',
     'base',
-    'partner_social_fields3',
-    'web_widget_color'],
+    'crm',
+    'partner_social_fields3'],
 'application':True,
 "images": [
 		"static/description/icon.png",

二進制
models/__init__.pyc


+ 41 - 23
models/crm_task.py

@@ -1,61 +1,67 @@
 # -*- coding:utf-8 -*-
 
-from openerp import fields, models, api
+from openerp import fields, models, api, osv
 from datetime import datetime
 
 
-class CrmTask(models.Model):
+class crm_task(models.Model):
     _name="crm.task"
 
-    name = fields.Char(string="Actividad")
+    name = fields.Char(string="Actividad", size=100)
+    active = fields.Boolean("Activo", default=True)
     date_action_next = fields.Datetime('Fecha Prox. Accion')
     user_id = fields.Many2one('res.users', 'Responsable')
     partner_id = fields.Many2one('res.partner', 'Cliente')
-    company_id = fields.Many2one('res.company', 'Compañia')
     description = fields.Text('Descripción')
     state = fields.Selection([
         ('pending', 'Pendiente'),
         ('done', 'Realizado'),
         ('cancel','Cancelado')],
         string='Estado', track_visibility='onchange', default='pending')
-    priority = fields.Selection([('0','P'), ('1','Poco'),('2','Normal'), ('3','Alto')], 'Prioridad')
-    date_closed = fields.Datetime('Cerrado', readonly=True)
-    opportunity_id = fields.Many2one ('crm.lead', 'Oportunidad')
-    create_date = fields.Datetime('Fecha de creación')
-    task_type_id = fields.Many2one('crm.task.type',
-        string="Tipo de Tarea", track_visibility='onchange')
-    hex_value = fields.Char(
-        string="Hex Value",
-        related="task_type_id.color",
-        store=False,
-        size=7)
+    opportunity_id = fields.Many2one ('crm.lead', string='Oportunidad',ondelete='cascade')
+    task_type_id = fields.Many2one('crm.task.type', string="Tipo de Tarea")
+    is_opportunity = fields.Boolean(string="Es oportunidad?")
 
+    @api.onchange('opportunity_id')
+    def onchange_opportunity_id(self):
+        res = {}
+        opportunity = self.env['crm.lead'].search([('id','=', self.opportunity_id.id)])
+        self.partner_id = opportunity.partner_id.id
+        res = {'value' :{'partner_id': self.partner_id}}
+        return res
 
-    def onchange_stage_id(self, cr, uid, ids, stage_id, context=None):
-        return {'state': stage_id}
+    def onchange_stage_id(self):
+        res = {'value':{'state':self.stage_id}}
+        return res
 
-    def onchange_task_type(self, cr, uid, ids, task_type_id, context=None):
-        return {'task_type_id': task_type_id}
+
+    # @api.onchange('task_type_id')
+    def onchange_task_type_id(self):
+        res = {}
+        if hasattr(self, 'partner_id'):
+            task = self.env['crm.task.type'].search([('id','=', self.task_type_id.id)])
+            partner = self.env['res.partner'].search([('id','=', self.partner_id.id)])
+            partner = partner.name
+            self.name = "%s %s" % (task.name,partner)
+            res = {'value':{'name':self.name}}
+        return res
 
     @api.one
     def action_done(self):
         if self.state == 'pending':
             self.state = 'done'
-            # self.hex_value='#58ACFA'
         else:
             self.state = 'pending'
-            # self.hex_value='#FA5858'
 
     @api.one
     def action_cancel(self):
         self.state = 'cancel'
-        # self.hex_value='#A4A4A4'
 
     @api.multi
     def unlink(self):
         for all_id in self:
             res= self.env.cr.execute("DELETE FROM crm_task WHERE id= %s" % (all_id.id))
-            return res
+        return res
 
     @api.one
     def _current_datetime(self):
@@ -64,3 +70,15 @@ class CrmTask(models.Model):
             self.expired_date = True
 
     expired_date = fields.Boolean(string="Fecha Vencida", compute="_current_datetime", store=False)
+
+    @api.multi
+    def createOpportunity(self):
+        vals = {
+        'name': self.name,
+        'partner_id': self.partner_id.id,
+        'user_id': self.user_id.id,
+        'type':'opportunity'
+        }
+        self.is_opportunity = True
+        res = self.env['crm.lead'].create(vals)
+        return res

二進制
models/crm_task.pyc


+ 8 - 4
models/eiru_crm.py

@@ -3,7 +3,7 @@
 from openerp import api, fields, models
 from datetime import datetime
 
-class EiruCrm(models.Model):
+class crm_lead(models.Model):
     _inherit="crm.lead"
 
     task_ids = fields.One2many('crm.task','opportunity_id',"Actividades")
@@ -13,19 +13,23 @@ class EiruCrm(models.Model):
     @api.multi
     def open_wizard(self):
         now = datetime.now()
+        view = self.env.ref('eiru_crm.crm_task_wizard')
         return {
             'name': 'Añadir Actividad',
-            'type': 'ir.actions.act_window',
             'res_model': 'crm.task',
             'view_type': 'form',
             'view_mode': 'form',
             'target': 'new',
+            'views': [(view.id, 'form')],
+            'view_id': view.id,
             'context': {
                 'default_date_action_next': now.strftime("%Y-%m-%d %H:%M:00"),
                 'default_user_id': self.user_id.id,
                 'default_opportunity_id': self.id,
-                'default_partner_id': self.partner_id.id,},
-            'flags': {'form': {'action_buttons': True}}
+                'default_partner_id': self.partner_id.id,
+                },
+            # 'flags': {'form': {'action_buttons': True}},
+            'type': 'ir.actions.act_window',
         }
 
     @api.one

二進制
models/eiru_crm.pyc


+ 0 - 2
models/res_partner.py

@@ -11,5 +11,3 @@ class ResPartner(models.Model):
             partner.activity_count = self.env['crm.task'].search_count([('partner_id', '=', partner.id),('state','=','pending')])
 
     task_ids = fields.One2many('crm.task', 'partner_id','Actividades')
-    activity_count = fields.Integer(compute="_activity_count", string="Actividades", store=False)
-    

二進制
models/res_partner.pyc


+ 1 - 5
models/task_type.py

@@ -5,9 +5,5 @@ from openerp import fields, models
 class CrmTaskType(models.Model):
     _name = "crm.task.type"
 
+    active = fields.Boolean("Activo", default=True)
     name = fields.Char(string='Tipo de Tarea', required=True, help="Ej: Llamada, Reunión, Envio de mensaje, etc." )
-    color = fields.Char(
-        string="Color",
-        help="Choose your color",
-        size=7
-    )

二進制
models/task_type.pyc


+ 0 - 28
static/src/js/web_task_color.js

@@ -1,28 +0,0 @@
-openerp.eiru_crm = function (instance) {
-    instance.web_calendar.CalendarView = instance.web_calendar.CalendarView.extend({
-        event_data_transform: function (event) {
-            var res = this._super.apply(this, arguments);
-	    //This would go off when there is no color set for hex_value. You could control this too.
-            if (res && res.hasOwnProperty('className')) {
-		//If you would uncomment the next line it would use the default colour that is set for the user. (default behaviour from Odoo calendars)
-
-
-		if(res.title.indexOf('false') > -1)
-		{
-		   res.title = res.title.substring(0, res.title.indexOf(',' + '#40FF00'));
-		}
-            }
-            if (event.hex_value && res.title) {
-                res.backgroundColor = event.hex_value;
-                res.title = res.title.substring(0, res.title.indexOf(', ' + event.hex_value));
-                res.color= event.hex_value;
-
-            }
-            return res;
-        }
-
-
-
-
-    });
-};

+ 0 - 13
views/assets_view.xml

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

+ 54 - 19
views/crm_task_view.xml

@@ -5,29 +5,28 @@
       <field name="name">crm_task_form</field>
       <field name="model">crm.task</field>
       <field name="type">form</field>
+      <field name="new">new</field>
       <field name="arch" type="xml">
         <form>
-          <header>
-            <field name="state" clickable="True" widget="statusbar"/>
+          <header class="oe_edit_only">
+              <button name="createOpportunity" string="Convertir a Oportunidad" type="object" attrs="{'invisible':['|',('is_opportunity','!=', False),('opportunity_id','!=', False)]}"/>
+              <field name="state" clickable="True" widget="statusbar"/>
           </header>
           <sheet>
             <group>
               <field name="task_type_id" widget="radio" required='True'/>
             </group>
             <group>
-              <field name="name"/>
+              <field name="name" required='True'/>
               <field name="date_action_next"/>
-              <field name="user_id"/>
-              <field name="partner_id"/>
-              <field name="opportunity_id"/>
+              <field name="opportunity_id"
+                options='{"no_create": 1, "no_create_edit": 1}'/>
+              <field name="partner_id" required='True'/>
+              <field name="user_id" options='{"no_create": 1, "no_create_edit": 1}' required='True'/>
               <field name="description"/>
+              <field name="is_opportunity" invisible='1'/>
             </group>
           </sheet>
-          <!-- <footer>
-
-            <button name="write" string="Crear" type="object" class="oe_highlight"/> or
-              <button type="cancel" string="Cancelar" class="oe_form_button_cancel"/>
-          </footer> -->
         </form>
       </field>
     </record>
@@ -60,9 +59,8 @@
       <field name="model">crm.task</field>
       <field name="type">calendar</field>
       <field name="arch" type="xml">
-        <calendar color="task_type_id" date_start="date_action_next" date_stop="" string="Tareas" event_open_popup="%(crm_task_form)s" >
+        <calendar color="task_type_id" quick_add="false" date_start="date_action_next" date_stop="" string="Tareas" event_open_popup="%(crm_task_form)d">
           <field name="name"/>
-          <field name="hex_value"/>
         </calendar>
       </field>
     </record>
@@ -72,17 +70,18 @@
       <field name="model">crm.task</field>
       <field name="type">tree</field>
       <field name="arch" type="xml">
-        <tree string="Oportunidades" colors="red:expired_date == True and state == 'pending';gray:state == 'cancel';green:state == 'pending'">
-          <field name="task_type_id"/>
+        <tree string="Oportunidades" clickable="True" colors="red:expired_date == True and state == 'pending';gray:state == 'cancel';green:state == 'pending'">
+          <field name="task_type_id" options='{"no_open": True, "no_create": 1, "no_create_edit": 1}'/>
           <field name="date_action_next"/>
+          <field name="name"/>
           <field name="description"/>
           <field name="user_id"/>
-          <field name="partner_id" />
+          <field name="partner_id"/>
           <field name="state"/>
           <field name="expired_date" invisible='1'/>
-          <button name="action_done" string="Done" type="object" icon="gtk-apply" help="Done" attrs="{'invisible':[('state','!=','pending'),('state','!=','cancel')]}"/>
-          <button name="action_done" string="Pending" type="object" icon="gtk-undo" help="Pending" attrs="{'invisible':[('state','!=','done')]}"/>
-          <button name="action_cancel" string="Cancel" type="object" icon="gtk-cancel" help="Cancel" attrs="{'invisible':[('state','=','cancel')]}"/>
+          <button name="action_done" string="Realizado" type="object" icon="gtk-apply" attrs="{'invisible':[('state','=','done')]}"/>
+          <button name="action_done" string="Pendiente" type="object" icon="gtk-undo" attrs="{'invisible':[('state','=','pending')]}"/>
+          <button name="action_cancel" string="Cancelado" type="object" icon="gtk-cancel" attrs="{'invisible':[('state','=','cancel')]}"/>
 
         </tree>
       </field>
@@ -137,5 +136,41 @@
     <field name="domain">[('opportunity_id', '=', active_id),('state','=','pending')]</field>
   </record>
 
+<!-- Form Wizard view with custom buttons -->
+
+  <record model="ir.ui.view" id="crm_task_wizard">
+    <field name="name">crm_task_wizard</field>
+    <field name="model">crm.task</field>
+    <field name="type">form</field>
+    <field name="target">new</field>
+    <field name="arch" type="xml">
+      <form>
+        <header class="oe_edit_only" >
+          <button name="createOpportunity" string="Convertir a Oportunidad" type="object" attrs="{'invisible':['|',('is_opportunity','!=', False),('opportunity_id','!=', False)]}"/>
+          <field name="state" clickable="True" widget="statusbar"/>
+        </header>
+        <sheet>
+          <group>
+            <field name="task_type_id" widget="radio" required='True'/>
+          </group>
+          <group>
+            <field name="name" required='True'/>
+            <field name="date_action_next"/>
+            <field name="opportunity_id"
+              options='{"no_create": 1, "no_create_edit": 1}'/>
+            <field name="partner_id" required='True'/>
+            <field name="user_id" required='True' options='{"no_create": 1, "no_create_edit": 1}'/>
+            <field name="description"/>
+            <field name="is_opportunity" invisible='1'/>
+          </group>
+        </sheet>
+        <footer>
+          <button name="write" string="Crear" type="object" class="oe_highlight"/> o
+          <button string="Cancelar" class="oe_link" special="cancel"/>
+        </footer>
+      </form>
+    </field>
+  </record>
+
  </data>
 </openerp>

+ 27 - 11
views/eiru_crm_view.xml

@@ -34,19 +34,20 @@
               <group>
                 <group>
                   <field name="partner_id"
+                    required='True'
                     on_change="on_change_partner_id(partner_id)"
                     string="Customer"
                     context="{'default_name': partner_name,
                     'default_email': email_from,
-                    'default_phone': phone,
+                    'default_mobile': mobile,
                     'default_facebook': facebook,
                     'default_instagram': instagram
                     }"/>
-                  <field name="contact_name" string="Nombre de Contacto"/>
+
                   <field name="partner_name" string="Company Name"/>
                   <field name="email_from" string="Email" widget="email"/>
-                  <field name="phone"/>
-                  <field name="facebook" widget="url"/>
+                  <field name="mobile"/>
+                  <field name="facebook" widget="url" />
                   <field name="instagram" widget="url"/>
                 </group>
                 <group name="new_group">
@@ -75,7 +76,7 @@
                   <field name="description"/>
                 </page>
                 <page string="Historial de Tareas">
-                  <field name="task_ids" widget="one2many_list">
+                  <field name="task_ids" widget="many2one_clickable">
                     <tree create="false" colors="red:expired_date == True and state == 'pending';gray:state == 'cancel';green:state == 'pending'">
                       <field name="task_type_id"/>
                       <field name="name"/>
@@ -83,11 +84,12 @@
                       <field name="date_action_next"/>
                       <field name="state"/>
                       <field name="expired_date" invisible='1'/>
-
-                      <button name="action_done" string="Done" type="object" icon="gtk-apply" help="Done" attrs="{'invisible':[('state','!=','pending'),('state','!=','cancel')]}"/>
-                      <button name="action_done" string="Pending" type="object" icon="gtk-undo" help="Pending" attrs="{'invisible':[('state','!=','done')]}"/>
-                      <button name="action_cancel" string="Cancel" type="object" icon="gtk-cancel" help="Cancel" attrs="{'invisible':[('state','=','cancel')]}"/>
                       <field name="description"/>
+
+                      <button name="action_done" string="Realizado" type="object" icon="gtk-apply" attrs="{'invisible':[('state','=','done')]}"/>
+                      <button name="action_done" string="Pendiente" type="object" icon="gtk-undo" attrs="{'invisible':[('state','=','pending')]}"/>
+                      <button name="action_cancel" string="Cancelado" type="object" icon="gtk-cancel" attrs="{'invisible':[('state','=','cancel')]}"/>
+
                     </tree>
                   </field>
                 </page>
@@ -173,7 +175,21 @@
            </field>
        </record>
 
-
-
+      <record model="ir.ui.view" id="inherit_opportunity_tree_view">
+         <field name="name">Opportunities Tree</field>
+         <field name="model">crm.lead</field>
+         <field name="inherit_id" ref="crm.crm_case_tree_view_oppor"/>
+         <field name="arch" type="xml">
+           <field name="country_id"  position="replace">
+             <field name="country_id" invisible="1"/>
+           </field>
+           <field name="date_action"  position="replace">
+             <field name="date_action"  invisible="1"/>
+           </field>
+          <field name="title_action"  position="replace">
+            <field name="title_action"  invisible="1"/>
+          </field>
+        </field>
+      </record>
   </data>
 </openerp>

+ 1 - 3
views/menus_view.xml

@@ -44,13 +44,11 @@
       <field name="name">Oportunidades</field>
     </record>
 
-
-
     <!-- Add new menus -->
     <menuitem name="CRM" id="base.menu_crm" parent="base.menu_base_partner" sequence="1"/>
 
     <menuitem name="Tareas" id="menu_crm_task" parent="base.menu_crm" sequence="50"
-      action="eiru_crm.crm_task_from_partner" groups="base.group_sale_manager"/>
+      action="eiru_crm.crm_task_from_partner" groups="base.group_sale_salesman"/>
 
       <!-- Change menu path -->
       <menuitem id="crm.menu_crm_opportunities" parent="base.menu_crm"/>

+ 19 - 7
views/partner_view.xml

@@ -7,20 +7,32 @@
       <field name="inherit_id" ref="base.view_partner_form"/>
       <field name="priority" eval="50"/>
       <field name="arch" type="xml">
-        <xpath expr="//div[@name='buttons']" position="inside">
-          <button class="oe_inline oe_stat_button" type="action" name="%(eiru_crm.crm_task_from_partner)d"
-            icon="fa-calendar"
-            context="{'search_default_partner_id': active_id}">
-            <field name="activity_count" string="Actividad" widget="statinfo"/>
-					</button>
-        </xpath>
         <xpath expr="//button[@name='schedule_meeting']" 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>
+        <notebook>
+          <page string="Historial Tareas de CRM">
+            <field name="task_ids" widget="many2one_clickable">
+              <tree editable="top" colors="red:expired_date == True and state == 'pending';gray:state == 'cancel';green:state == 'pending'">
+                <field name="task_type_id" options='{"no_open": True, "no_create": 1, "no_create_edit": 1}' required="True"/>
+                <field name="name"/>
+                <field name="user_id" required="True"/>
+                <field name="date_action_next"/>
+                <field name="state"/>
+                <field name="expired_date" invisible='1'/>
+                <field name="description"/>
+
+                <button name="action_done" string="Realizado" type="object" icon="gtk-apply" attrs="{'invisible':[('state','=','done')]}"/>
+                <button name="action_done" string="Pendiente" type="object" icon="gtk-undo" attrs="{'invisible':[('state','=','pending')]}"/>
+                <button name="action_cancel" string="Cancelado" type="object" icon="gtk-cancel" attrs="{'invisible':[('state','=','cancel')]}"/>
 
+              </tree>
+            </field>
+          </page>
+         </notebook>
       </field>
     </record>
   </data>