[IMP] My Pipeline working
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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')),
|
||||
|
||||
@@ -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')
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user