[IMP] My Pipeline working

This commit is contained in:
Fabien Pinckaers
2015-08-29 15:34:34 +02:00
parent 98210d88b9
commit bbcc144d2c
12 changed files with 63 additions and 55 deletions
+36
View File
@@ -1221,3 +1221,39 @@ class crm_lost_reason(osv.Model):
_columns = {
'name': fields.char('Name', required=True),
}
class crm_team(osv.Model):
_inherit = "crm.team"
def action_your_pipeline(self, cr, uid, context={}):
imd = self.pool.get('ir.actions.act_window')
action = imd.for_xml_id(cr, uid, 'crm', "crm_lead_opportunities_tree_view", context=context)
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
team_id = user.sale_team_id.id
if not team_id:
team_id = self.search(cr, uid, [], context=context, limit=1)
team_id = team_id and team_id[0]
action['help'] = """
<p class='oe_view_nocontent_create'>Click here to add new opportunities</p><p>
Looks like you are not a member of a sales team. You should add yourself
as a member of one of the sales team.
</p>"""
if team_id:
action['help'] += "<p>As you don't belong to any sales team, Odoo opens the first one by default.</p>"
newcontext = eval(action['context'], {'uid': uid})
if team_id:
newcontext.update({
'default_team_id': team_id,
'search_default_team_id': team_id
})
result = {
'name': action['name'],
'help': action['help'],
'type': action['type'],
'views': [[False, 'kanban'], [False, 'tree'], [False, 'form'], [False, 'graph'], [False, 'calendar'], [False, 'pivot']],
'target': action['target'],
'context': newcontext,
'res_model': action['res_model'],
}
return result
+12 -5
View File
@@ -54,18 +54,25 @@
</field>
</record>
<record id="action_your_pipeline" model="ir.actions.server">
<field name="name">Your Pipeline</field>
<field name="model_id" ref="crm.model_crm_team"/>
<field name="state">code</field>
<field name="code">action = self.action_your_pipeline(cr, uid, context=context)</field>
<field eval="True" name="condition"/>
</record>
<record model="ir.actions.act_window" id="crm_lead_opportunities_tree_view">
<field name="name">Pipeline</field>
<field name="name">Your Pipeline</field>
<field name="res_model">crm.lead</field>
<field name="view_mode">tree,graph,pivot,form,calendar</field>
<field name="view_mode">kanban,tree,graph,pivot,form,calendar</field>
<field name="domain">[('type','=','opportunity')]</field>
<field name="context">{
'stage_type': 'opportunity',
'default_type': 'opportunity',
'default_user_id': uid,
'search_default_assigned_to_me': 1,
}
</field>
}</field>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
<p>
@@ -102,7 +109,7 @@
<menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="5"/>
<menuitem name="Leads" id="menu_crm_leads" parent="base.menu_sales" sequence="1"
action="crm_lead_all_leads" groups="crm.group_use_lead"/>
<menuitem name="Pipeline" id="menu_crm_opportunities" action="crm_lead_opportunities_tree_view" parent="base.menu_sales" sequence="1"/>
<menuitem id="menu_crm_opportunities" action="action_your_pipeline" parent="base.menu_sales" sequence="4"/>
<record id="crm_lead_action_activities" model="ir.actions.act_window">
<field name="name">Next Activities</field>
+2 -1
View File
@@ -368,7 +368,8 @@
name="type_opportunity"
domain="[('type', '=', 'opportunity')]"/>
<separator/>
<filter string="My Leads"
<filter string="My Opportunities"
name="assigned_to_me"
domain="[('user_id','=',uid)]"
help="Leads that are assigned to me"/>
<filter string="Unassigned" name="unassigned"
-1
View File
@@ -60,7 +60,6 @@
(4, ref('stage_lead4'))]"/>
</record>
<record model="crm.team" id="sales_team.crm_team_1">
<field name="member_ids" eval="[(4, ref('base.user_root')),(4, ref('base.user_demo'))]"/>
<field name="stage_ids" eval="[(4, ref('crm_stage_2_1')),
(4, ref('crm_stage_2_2')),
(4, ref('crm_stage_2_3')),
+9 -28
View File
@@ -8,12 +8,9 @@ class crm_team(osv.Model):
_name = "crm.team"
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = "Sales Team"
_order = "complete_name"
_order = "name"
_period_number = 5
def get_full_name(self, cr, uid, ids, field_name, arg, context=None):
return dict(self.name_get(cr, uid, ids, context=context))
def _get_default_team_id(self, cr, uid, context=None, user_id=None):
if context is None:
context = {}
@@ -29,16 +26,13 @@ class crm_team(osv.Model):
_columns = {
'name': fields.char('Sales Team', size=64, required=True, translate=True),
'complete_name': fields.function(get_full_name, type='char', size=256, readonly=True, store=True, string="Full Name"),
'code': fields.char('Code', size=8),
'active': fields.boolean('Active', help="If the active field is set to "\
"false, it will allow you to hide the sales team without removing it."),
'company_id': fields.many2one('res.company', 'Company'),
'user_id': fields.many2one('res.users', 'Team Leader'),
'member_ids': fields.many2many('res.users', 'sale_member_rel', 'team_id', 'member_id', 'Team Members'),
'member_ids': fields.one2many('res.users', 'sale_team_id', 'Team Members'),
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this sales team"),
'parent_id': fields.many2one('crm.team', 'Parent Team'),
'child_ids': fields.one2many('crm.team', 'parent_id', 'Child Teams'),
'working_hours': fields.float('Working Hours', digits=(16, 2)),
'color': fields.integer('Color Index'),
}
@@ -51,35 +45,22 @@ class crm_team(osv.Model):
('code_uniq', 'unique (code)', 'The code of the sales team must be unique !')
]
_constraints = [
(osv.osv._check_recursion, 'Error ! You cannot create recursive Sales team.', ['parent_id'])
]
def create(self, cr, uid, values, context=None):
if context is None:
context = {}
context['mail_create_nosubscribe'] = True
return super(crm_team, self).create(cr, uid, values, context=context)
def name_get(self, cr, uid, ids, context=None):
"""Overrides orm name_get method"""
if not isinstance(ids, list):
ids = [ids]
res = []
if not ids:
return res
reads = self.read(cr, uid, ids, ['name', 'parent_id'], context)
for record in reads:
name = record['name']
if record['parent_id']:
name = record['parent_id'][1] + ' / ' + name
res.append((record['id'], name))
return res
class res_partner(osv.Model):
_inherit = 'res.partner'
_columns = {
'team_id': fields.many2one('crm.team', 'Sales Team', oldname='section_id'),
}
class res_users(osv.Model):
_inherit = ['res.users']
_columns = {
'sale_team_id': fields.many2one('crm.team','Sales Team')
}
+1 -3
View File
@@ -14,12 +14,10 @@
<search string="Salesteams Search">
<filter name="personal" string="My Salesteams" domain="['|', ('member_ids', '=', uid), ('user_id', '=', uid)]"/>
<field name="name"/>
<field name="parent_id"/>
<field name="user_id"/>
<field name="code"/>
<group expand="0" string="Group By...">
<filter string="Team Leader" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Parent Sales Teams" domain="[]" context="{'group_by':'parent_id'}"/>
</group>
</search>
</field>
@@ -27,7 +25,7 @@
<!-- Case Teams Action -->
<record id="crm_team_salesteams_act" model="ir.actions.act_window">
<field name="name">Sales Teams</field>
<field name="name">Dashboard</field>
<field name="res_model">crm.team</field>
<field name="view_type">form</field>
<field name="view_mode">sales_team_dashboard</field>
@@ -62,11 +62,4 @@
</field>
</record>
<record id="action_sales_team_dashboard" model="ir.actions.client">
<field name="name">Sales Team Dashboard</field>
<field name="res_model">crm.team</field>
<field name="tag">sales_team_dashboard</field>
</record>
<menuitem action="action_sales_team_dashboard" id="menu_sales_team_dashboard" parent="base.menu_sales" sequence="20" groups="base.group_sale_salesman,base.group_sale_manager"/>
</odoo>
-1
View File
@@ -10,7 +10,6 @@
</record>
<record model="crm.team" id="crm_team_1">
<field name="name">Indirect Sales</field>
<field name="member_ids" eval="[(4, ref('base.user_root')),(4, ref('base.user_demo'))]"/>
</record>
</data>
</odoo>
@@ -3,7 +3,7 @@
<templates>
<!--
This template is the rubbon at the top of the salesteam dashboard that adds
This template is the ribbon at the top of the salesteam dashboard that adds
some figures to it. We call this rubbon the "SalesDashboard".
-->
<t t-name="sales_team.SalesDashboard">
@@ -233,7 +233,7 @@
<h2>Hi there!</h2>
<h4>Great sales journeys start with a clean pipeline.</h4>
<h4>Create a few opportunities to activate your dashboard.</h4>
<a class="btn btn-primary btn-lg o_dashboard_action" name="crm.crm_lead_opportunities">Your Pipeline</a>
<a class="btn btn-primary o_dashboard_action" name="crm.action_your_pipeline">Your Pipeline</a>
</div>
</div>
</div>
@@ -21,7 +21,6 @@
<record model="crm.team" id="website.salesteam_website_sales">
<field name="name">Website Sales</field>
<field name="code">WS</field>
<field name="member_ids" eval="[(4, ref('base.user_root'))]"/>
<field name="use_leads">True</field>
<field name="use_opportunities" eval="False"/>
</record>
-1
View File
@@ -30,7 +30,6 @@
<record model="crm.team" id="website.salesteam_website_sales">
<field name="name">Website Sales</field>
<field name="code">WS</field>
<field name="member_ids" eval="[(4, ref('base.user_root'))]"/>
<field name="use_quotations" eval="False"/>
</record>
+1 -5
View File
@@ -548,13 +548,9 @@ Weight: 31 grams</field>
<field name="price_discount">-0.2000</field>
<field name="sequence">1</field>
</record>
<record model="crm.team" id="website.salesteam_website_sales">
<field name="member_ids" eval="[(4, ref('base.user_root'), ref('base.user_demo'))]"/>
</record>
<!-- product.public.category -->
<record id="product.Components" model="product.public.category">
<field name="name">Components</field>
<field name="sequence">15</field>