diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml
index 325062521c0..98abcbf6e23 100644
--- a/addons/crm/crm_data.xml
+++ b/addons/crm/crm_data.xml
@@ -76,6 +76,16 @@
To manage quotations and sale orders, install the "Sales Management" application.
]]>
+
+
+ Too expensive
+
+
+ We don't have people/skills
+
+
+ Not enough stock
+
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 7f927e006b7..2c06865df44 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -272,6 +272,7 @@ 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')
}
_defaults = {
@@ -1085,6 +1086,7 @@ class crm_lead(format_address, osv.osv):
break
return res
+
class crm_lead_tag(osv.Model):
_name = "crm.lead.tag"
_description = "Category of lead"
@@ -1093,4 +1095,11 @@ class crm_lead_tag(osv.Model):
'team_id': fields.many2one('crm.team', 'Sales Team'),
}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
+class crm_lost_reason(osv.Model):
+ _name = "crm.lost.reason"
+ _description = 'Reason for loosing leads'
+
+ _columns = {
+ 'name': fields.char('Name', required=True),
+ }
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index e50e35eab5d..c80723049f8 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -450,6 +450,7 @@
+
@@ -558,6 +559,7 @@
+
@@ -585,6 +587,7 @@
+
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index af8cb59281d..fa8918ffa55 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -107,8 +107,38 @@
-
+
+
+ crm.lost.reason.form
+ crm.lost.reason
+
+
+
+
+
+ Lost Reasons
+ crm.lost.reason
+ form
+ tree,form
+
+
+ Click to define a new lost reason.
+
+ Use lost reasons to explain why an opportunity is lost.
+
+ Some examples of lost reasons: "We don't have people/skill", "Price too high"
+
+
+
+
+
+
+
crm.stage.tree
crm.stage
diff --git a/addons/crm/report/crm_opportunity_report.py b/addons/crm/report/crm_opportunity_report.py
index 7230f94b3d4..318e2e52786 100644
--- a/addons/crm/report/crm_opportunity_report.py
+++ b/addons/crm/report/crm_opportunity_report.py
@@ -60,6 +60,7 @@ class crm_opportunity_report(osv.Model):
('lead','Lead'),
('opportunity','Opportunity'),
],'Type', help="Type is used to separate Leads and Opportunities"),
+ 'lost_reason': fields.many2one('crm.lost.reason', 'Lost Reason', readonly=True),
}
def init(self, cr):
@@ -93,7 +94,8 @@ class crm_opportunity_report(osv.Model):
c.create_date as create_date,
extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close,
abs(extract('epoch' from (c.date_deadline - c.date_closed))/(3600*24)) as delay_expected,
- extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open
+ extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open,
+ c.lost_reason
FROM
crm_lead c
WHERE c.active = 'true'
diff --git a/addons/crm/report/crm_opportunity_report_view.xml b/addons/crm/report/crm_opportunity_report_view.xml
index d99eca3fcde..14ce6c170f6 100644
--- a/addons/crm/report/crm_opportunity_report_view.xml
+++ b/addons/crm/report/crm_opportunity_report_view.xml
@@ -97,6 +97,7 @@
+
diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv
index 78050974198..fff272c55de 100644
--- a/addons/crm/security/ir.model.access.csv
+++ b/addons/crm/security/ir.model.access.csv
@@ -28,4 +28,7 @@ access_crm_lead_tag_salesman,crm_lead_tag salesman,model_crm_lead_tag,base.group
access_crm_lead_tag_manager,crm_lead_tag manager,model_crm_lead_tag,base.group_sale_manager,1,1,1,1
access_crm_phonecall_category,crm_phonecall_category,model_crm_phonecall_category,base.group_user,1,0,0,0
access_crm_phonecall_category_salesman,crm_phonecall_category salesman,model_crm_phonecall_category,base.group_sale_salesman,1,1,1,0
-access_crm_phonecall_category_manager,crm_phonecall_category manager,model_crm_phonecall_category,base.group_sale_manager,1,1,1,1
\ No newline at end of file
+access_crm_phonecall_category_manager,crm_phonecall_category manager,model_crm_phonecall_category,base.group_sale_manager,1,1,1,1
+access_crm_lost_reason,crm.lost.reason,model_crm_lost_reason,base.group_sale_manager,1,1,1,1
+access_crm_lost_reason,crm.lost.reason,model_crm_lost_reason,base.group_sale_salesman,1,1,1,0
+access_crm_lost_reason,crm.lost.reason,model_crm_lost_reason,base.group_user,1,0,0,0
\ No newline at end of file