diff options
| author | fwi-odoo <fwi@odoo.com> | 2014-10-09 09:19:58 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-11-17 09:30:14 +0100 |
| commit | c92d86e02d808ed43bf3d7b8e440d1850bbb68ac (patch) | |
| tree | 251e5a8ad5b2975846386c52dc7a735f848808ca /addons/crm | |
| parent | 17937e7e9276d25a9900fb310f5f0be1928cabc7 (diff) | |
[IMP] crm: added reason for loosing opportunities
Diffstat (limited to 'addons/crm')
| -rw-r--r-- | addons/crm/crm_data.xml | 10 | ||||
| -rw-r--r-- | addons/crm/crm_lead.py | 11 | ||||
| -rw-r--r-- | addons/crm/crm_lead_view.xml | 3 | ||||
| -rw-r--r-- | addons/crm/crm_view.xml | 32 | ||||
| -rw-r--r-- | addons/crm/report/crm_opportunity_report.py | 4 | ||||
| -rw-r--r-- | addons/crm/report/crm_opportunity_report_view.xml | 1 | ||||
| -rw-r--r-- | addons/crm/security/ir.model.access.csv | 5 |
7 files changed, 62 insertions, 4 deletions
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 @@ <p>To manage quotations and sale orders, install the "Sales Management" application.</p>]]></field> </record> + <!-- opportunities' lost causes --> + <record model="crm.lost.reason" id="lost_reason_1"> + <field name="name">Too expensive</field> + </record> + <record model="crm.lost.reason" id="lost_reason_2"> + <field name="name">We don't have people/skills</field> + </record> + <record model="crm.lost.reason" id="lost_reason_3"> + <field name="name">Not enough stock</field> + </record> </data> </openerp> 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 @@ </group> <group> <field name="tag_ids" widget="many2many_tags"/> + <field name="lost_reason"/> </group> </group> @@ -558,6 +559,7 @@ <field name="partner_id" operator="child_of"/> <field name="stage_id" domain="[]"/> <field name="probability"/> + <field name="lost_reason"/> <separator/> <filter string="New" name="new" domain="[('probability', '=', 0), ('stage_id.sequence', '<=', 1)]"/> @@ -585,6 +587,7 @@ <separator orientation="vertical" /> <filter string="Creation Month" context="{'group_by':'create_date:month'}" name="month"/> <filter string="Expected Closing" context="{'group_by':'date_deadline'}"/> + <filter string="Lost Reason" context="{'group_by':'lost_reason'}"/> </group> </search> </field> 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 @@ <menuitem action="crm_tracking_source_action" id="menu_crm_tracking_source" parent="base.menu_crm_config_lead" sequence="4" groups="base.group_no_one"/> - <!-- CRM STAGE VIEWS --> + <!-- CRM.LOST.REASON VIEWS --> + <record id="crm_lost_reason_view_form" model="ir.ui.view"> + <field name="name">crm.lost.reason.form</field> + <field name="model">crm.lost.reason</field> + <field name="arch" type="xml"> + <form string="Channel"> + <group> + <field name="name"/> + </group> + </form> + </field> + </record> + <record id="crm_lost_reason_action" model="ir.actions.act_window"> + <field name="name">Lost Reasons</field> + <field name="res_model">crm.lost.reason</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to define a new lost reason. + </p><p> + Use lost reasons to explain why an opportunity is lost. + </p><p> + Some examples of lost reasons: "We don't have people/skill", "Price too high" + </p> + </field> + </record> + <menuitem action="crm_lost_reason_action" id="menu_crm_lost_reason" parent="base.menu_crm_config_lead" sequence="6" groups="base.group_no_one"/> + + + <!-- CRM STAGE VIEWS --> <record model="ir.ui.view" id="crm_stage_tree"> <field name="name">crm.stage.tree</field> <field name="model">crm.stage</field> 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 @@ <separator orientation="vertical" /> <filter string="Creation Month" context="{'group_by':'create_date:month'}" name="month"/> <filter string="Expiration Closing" context="{'group_by':'date_deadline:month'}" name="month" help="Expiration Closing Month"/> + <filter string="Lost Reason" context="{'group_by':'lost_reason'}"/> </group> </search> </field> 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 |
