From 744c721950a948ac979b4e650a01226751785d4a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 31 Mar 2016 23:03:49 +0200 Subject: [PATCH] Add sale_crm_usability module --- sale_crm_usability/__init__.py | 4 ++ sale_crm_usability/__openerp__.py | 29 ++++++++++ sale_crm_usability/sale_crm.py | 61 ++++++++++++++++++++++ sale_crm_usability/sale_crm_view.xml | 45 ++++++++++++++++ sale_crm_usability/wizard/__init__.py | 3 ++ sale_crm_usability/wizard/crm_make_sale.py | 22 ++++++++ 6 files changed, 164 insertions(+) create mode 100644 sale_crm_usability/__init__.py create mode 100644 sale_crm_usability/__openerp__.py create mode 100644 sale_crm_usability/sale_crm.py create mode 100644 sale_crm_usability/sale_crm_view.xml create mode 100644 sale_crm_usability/wizard/__init__.py create mode 100644 sale_crm_usability/wizard/crm_make_sale.py diff --git a/sale_crm_usability/__init__.py b/sale_crm_usability/__init__.py new file mode 100644 index 0000000..bc748f4 --- /dev/null +++ b/sale_crm_usability/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import sale_crm +from . import wizard diff --git a/sale_crm_usability/__openerp__.py b/sale_crm_usability/__openerp__.py new file mode 100644 index 0000000..92c053d --- /dev/null +++ b/sale_crm_usability/__openerp__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (http://www.akretion.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# @author Alexis de Lattre + +{ + 'name': 'Sale CRM Usability', + 'version': '8.0.1.0.0', + 'category': 'Customer Relationship Management', + 'license': 'AGPL-3', + 'summary': 'Link between opportunities and sale orders', + 'description': """ +Sale CRM Usability +================== + +This module adds a One2many link from opportunities to sale orders. + +When a sale order linked to an opportunity is confirmed, the opportunity +is automatically moved to the *Won* step. + +This module has been written by Alexis de Lattre from Akretion +. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['sale_crm'], + 'data': ['sale_crm_view.xml'], + 'installable': True, +} diff --git a/sale_crm_usability/sale_crm.py b/sale_crm_usability/sale_crm.py new file mode 100644 index 0000000..91d1f7c --- /dev/null +++ b/sale_crm_usability/sale_crm.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (http://www.akretion.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# @author Alexis de Lattre + +from openerp import models, fields, api, _ +from openerp.exceptions import Warning as UserError + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + lead_id = fields.Many2one( + 'crm.lead', string='Opportunity') + + @api.multi + def action_button_confirm(self): + res = super(SaleOrder, self).action_button_confirm() + won_stage = self.env.ref('crm.stage_lead6') + for order in self: + if order.lead_id: + order.lead_id.stage_id = won_stage + order.lead_id.message_post(_( + "Stage automatically updated to Won upon " + "confirmation of the quotation %s" % order.name)) + return res + + +class CrmLead(models.Model): + _inherit = 'crm.lead' + + sale_ids = fields.One2many( + 'sale.order', 'lead_id', string='Quotations', readonly=True) + + @api.multi + def view_sale_orders(self): + self.ensure_one() + if self.sale_ids: + action = { + 'name': _('Quotations'), + 'type': 'ir.actions.act_window', + 'res_model': 'sale.order', + 'target': 'current', + 'context': + "{'default_partner_id': %s, 'default_lead_id': %s}" % ( + self.partner_id.id or False, self[0].id), + } + if len(self.sale_ids) == 1: + action.update({ + 'view_mode': 'form,tree,calendar,graph', + 'res_id': self.sale_ids[0].id, + }) + else: + action.update({ + 'view_mode': 'tree,form,calendar,graph', + 'domain': "[('id', 'in', %s)]" % self.sale_ids.ids, + }) + return action + else: + raise UserError(_( + 'There are no quotations linked to this opportunity')) diff --git a/sale_crm_usability/sale_crm_view.xml b/sale_crm_usability/sale_crm_view.xml new file mode 100644 index 0000000..85009e0 --- /dev/null +++ b/sale_crm_usability/sale_crm_view.xml @@ -0,0 +1,45 @@ + + + + + + + + sale_crm_usability.sale.order.form + sale.order + + + + + + + + + + sale_crm_usability.opportunity.form + crm.lead + + 100 + + + +