From 59a2e876b71d62e7070798cedf1b6bc76f0207b7 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Fri, 18 Sep 2015 16:05:39 +0200 Subject: [PATCH] [FIX] sale: raise error if no order found When creating a SO line, make sure we found an appropriate SO. --- addons/sale/i18n/sale.pot | 7 ++++++- addons/sale/sale_analytic.py | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot index adeed2c15d0..a3b964d9f3f 100644 --- a/addons/sale/i18n/sale.pot +++ b/addons/sale/i18n/sale.pot @@ -931,6 +931,12 @@ msgstr "" msgid "No incoterm on reports" msgstr "" +#. module: sale +#: code:addons/sale/sale_analytic.py:50 +#, python-format +msgid "No valid Sale Order was found. Make sure that at least one Sale Order in state \"Sale\" is linked to the specified contract." +msgstr "" + #. module: sale #: selection:sale.config.settings,group_product_variant:0 msgid "No variants on products" @@ -1787,4 +1793,3 @@ msgstr "" #: model:ir.model.fields,field_description:sale.field_sale_config_settings_sale_pricelist_setting msgid "unknown" msgstr "" - diff --git a/addons/sale/sale_analytic.py b/addons/sale/sale_analytic.py index 482936a22d4..7b3cc1eecad 100644 --- a/addons/sale/sale_analytic.py +++ b/addons/sale/sale_analytic.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from openerp import api, fields, models +from openerp import api, fields, models, _ +from openerp.exceptions import UserError class SaleOrderLine(models.Model): @@ -45,6 +46,8 @@ class AccountAnalyticLine(models.Model): def _get_sale_order_line_vals(self): order = self.env['sale.order'].search([('project_id', '=', self.account_id.id), ('state', '=', 'sale')], limit=1) + if not order: + raise UserError(_('No valid Sale Order was found. Make sure that at least one Sale Order in state "Sale" is linked to the specified contract.')) last_so_line = self.env['sale.order.line'].search([('order_id', '=', order.id)], order='sequence desc', limit=1) last_sequence = last_so_line.sequence + 1 if last_so_line else 100