diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index b702daf7b6f..70239d01acb 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -202,6 +202,15 @@ class crm_lead(format_address, osv.osv): opp_id: Event.search_count(cr,uid, [('opportunity_id', '=', opp_id)], context=context) for opp_id in ids } + + def _calls_count(self, cr, uid, ids, field_name, args, context=None): + res = dict.fromkeys(ids, 0) + phonecall_data = self.pool['crm.phonecall'].read_group( + cr, uid, [('opportunity_id', 'in', ids)], ['opportunity_id'], ['opportunity_id'], context=context) + for data in phonecall_data: + res[data['opportunity_id'][0]] = data['opportunity_id_count'] + return res + _columns = { 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null', track_visibility='onchange', select=True, help="Linked partner (optional). Usually created when converting the lead."), @@ -242,7 +251,7 @@ class crm_lead(format_address, osv.osv): 'date_conversion': fields.datetime('Conversion Date', readonly=1), # Messaging and marketing - 'message_bounce': fields.integer('Bounce'), + 'message_bounce': fields.integer('Bounce', help="Counter of the number of bounced emails for this contact"), # Only used for type opportunity 'probability': fields.float('Probability', group_operator="avg"), 'planned_revenue': fields.float('Expected Revenue', track_visibility='always'), @@ -274,7 +283,8 @@ class crm_lead(format_address, osv.osv): 'company_id': fields.many2one('res.company', 'Company', select=1), 'planned_cost': fields.float('Planned Costs'), 'meeting_count': fields.function(_meeting_count, string='# Meetings', type='integer'), - 'lost_reason': fields.many2one('crm.lost.reason', 'Lost Reason', select=True, track_visibility='onchange') + 'lost_reason': fields.many2one('crm.lost.reason', 'Lost Reason', select=True, track_visibility='onchange'), + 'calls_count': fields.function(_calls_count, string='# Phonecalls', type='integer'), } _defaults = { diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 8f4b4d01116..1f1b6187982 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -125,7 +125,7 @@
@@ -176,8 +176,8 @@ - + @@ -186,7 +186,11 @@ - + + + + + @@ -194,10 +198,6 @@ - - - - @@ -373,7 +373,7 @@ help="No salesperson"/> + help="Not marked as Dead"/> @@ -419,7 +419,7 @@
-
-
+ + +
+ -
+
+
+
Opportunities
- -
- @ -
+ + diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 615c10031cb..f9cbe46b289 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -1,4 +1,4 @@ @charset "utf-8"; .openerp .oe_margin_top_8 { margin-top: 8px; -} \ No newline at end of file +} diff --git a/addons/sale/sales_team_view.xml b/addons/sale/sales_team_view.xml index bac84c8a085..a44b4ad169e 100644 --- a/addons/sale/sales_team_view.xml +++ b/addons/sale/sales_team_view.xml @@ -32,9 +32,9 @@ - -
-
+ +
+ -
+
+ - -
+
Invoiced -

+
+ +
- +
@@ -101,18 +104,33 @@ - + + + + - - - + + - + + +
+ X +
+ +
+ +
+
+
+
+
+
diff --git a/addons/sales_team/static/src/css/sales_team.css b/addons/sales_team/static/src/css/sales_team.css index a14e147beab..e1fe6d8a417 100644 --- a/addons/sales_team/static/src/css/sales_team.css +++ b/addons/sales_team/static/src/css/sales_team.css @@ -2,15 +2,10 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams { /* Customize width and height of kanban according bootstrap3 */ width: 357px; - min-height: 254px !important; - /* End of customize */ - cursor: default; + min-height: 80px !important; } -.openerp .oe_kanban_view .oe_kanban_salesteams_avatars img { - width: 30px; -} -.openerp .oe_salesteams_kanban_content { - margin-right: 16px; +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_kanban_content div:first-child { + margin-right: 0px; } .openerp .oe_kanban_view .oe_deadline { padding-left: 0.5em; @@ -21,4 +16,4 @@ } .openerp .oe_margin_top_16 { margin-top: 16px; -} \ No newline at end of file +} diff --git a/addons/sales_team/static/src/css/sales_team.sass b/addons/sales_team/static/src/css/sales_team.sass index 5587108c83b..aed7da9f0c3 100644 --- a/addons/sales_team/static/src/css/sales_team.sass +++ b/addons/sales_team/static/src/css/sales_team.sass @@ -5,16 +5,11 @@ .oe_kanban_crm_salesteams /* Customize width and height of kanban according bootstrap3 */ width: 357px - min-height: 254px !important - /* End of customize */ - cursor: default - .oe_kanban_salesteams_avatars - img - width: 30px + min-height: 80px !important + .oe_kanban_content div:first-child + margin-right: 0px .oe_deadline padding-left: 0.5em - .oe_salesteams_kanban_content - margin-right: 16px .oe_salesteam_kanban_view margin-left: 0px margin-right: -2px diff --git a/addons/website_crm_score/views/marketing.xml b/addons/website_crm_score/views/marketing.xml index ffe49e8d4c3..c04771cdea1 100644 --- a/addons/website_crm_score/views/marketing.xml +++ b/addons/website_crm_score/views/marketing.xml @@ -66,7 +66,7 @@
- - +
- + @@ -238,7 +237,7 @@ Click to create a salesmen.

- Link users to salesteam, set a per 30 days lead capacity for each of them and set filters to auto assign your leads. + Link users to salesteam, set a per 30 days lead capacity for each of them and set filters to auto assign your leads.

@@ -256,7 +255,7 @@ - + @@ -302,7 +301,7 @@ - + \ No newline at end of file diff --git a/addons/website_crm_score/views/sales.xml b/addons/website_crm_score/views/sales.xml index 46e8099e460..9a84ee82630 100644 --- a/addons/website_crm_score/views/sales.xml +++ b/addons/website_crm_score/views/sales.xml @@ -4,7 +4,7 @@ - @@ -43,7 +43,7 @@ - -
- - - - + + + @@ -242,7 +232,7 @@ background-image: -webkit-gradient(linear, left top, left bottom, from(#3faf3f), to(#1a721a));"> - +
- + @@ -290,7 +280,7 @@ - @@ -335,7 +325,7 @@ - + Mark As Spam @@ -347,7 +337,7 @@ for lead_id in context['active_ids']: mail = self.read(cr, uid, lead_id, fields=['email_from'], context=context)['email_from'] vals = values.copy() - # str() below changes the encoding of mail from unicode + # str() below changes the encoding of mail from unicode vals['domain'] = [('email_from', '=', str(mail))] vals['name'] = 'spam-' + mail self.pool['ir.filters'].create_or_replace(cr, uid, vals, context=context) diff --git a/addons/website_crm_score/views/website_crm_score.xml b/addons/website_crm_score/views/website_crm_score.xml index aeeb1987625..13409af1507 100644 --- a/addons/website_crm_score/views/website_crm_score.xml +++ b/addons/website_crm_score/views/website_crm_score.xml @@ -4,7 +4,13 @@ + +