From 91163236cad2db749ed00dc02b89b3e355d43585 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 6 Apr 2016 13:48:43 +0200 Subject: [PATCH] [MOV] sale: move sale part from warning module --- addons/sale/res_partner.py | 9 +++++- addons/sale/res_partner_view.xml | 8 ++++++ addons/sale/sale.py | 47 +++++++++++++++++++++++++++++++- addons/sale/sale_view.xml | 8 +++++- 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/addons/sale/res_partner.py b/addons/sale/res_partner.py index 51413aa96a7..55f97cdf246 100644 --- a/addons/sale/res_partner.py +++ b/addons/sale/res_partner.py @@ -2,6 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from openerp.osv import fields,osv +from openerp.addons.base.res.res_partner import WARNING_MESSAGE, WARNING_HELP class res_partner(osv.osv): _inherit = 'res.partner' @@ -18,5 +19,11 @@ class res_partner(osv.osv): _columns = { 'sale_order_count': fields.function(_sale_order_count, string='# of Sales Order', type='integer'), - 'sale_order_ids': fields.one2many('sale.order','partner_id','Sales Order') + 'sale_order_ids': fields.one2many('sale.order', 'partner_id', 'Sales Order'), + 'sale_warn': fields.selection(WARNING_MESSAGE, 'Sales Order', help=WARNING_HELP, required=True), + 'sale_warn_msg': fields.text('Message for Sales Order'), + } + + _defaults = { + 'sale_warn': 'no-message', } diff --git a/addons/sale/res_partner_view.xml b/addons/sale/res_partner_view.xml index a877cf80310..42761445cbd 100644 --- a/addons/sale/res_partner_view.xml +++ b/addons/sale/res_partner_view.xml @@ -49,6 +49,14 @@ + + + + + + + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index dec6476163c..3d37fcb8fe3 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -8,7 +8,7 @@ from openerp import api, fields, models, _ import openerp.addons.decimal_precision as dp from openerp.exceptions import UserError from openerp.tools import float_is_zero, float_compare, DEFAULT_SERVER_DATETIME_FORMAT - +from openerp.addons.base.res.res_partner import WARNING_MESSAGE, WARNING_HELP class res_company(models.Model): _inherit = "res.company" @@ -212,6 +212,36 @@ class SaleOrder(models.Model): values['team_id'] = self.partner_id.team_id.id self.update(values) + @api.onchange('partner_id') + def onchange_partner_id_warning(self): + if not self.partner_id: + return + warning = {} + title = False + message = False + partner = self.partner_id + + # If partner has no warning, check its company + if partner.sale_warn == 'no-message' and partner.parent_id: + partner = partner.parent_id + + if partner.sale_warn != 'no-message': + # Block if partner only has warning but parent company is blocked + if partner.sale_warn != 'block' and partner.parent_id and partner.parent_id.sale_warn == 'block': + partner = partner.parent_id + title = _("Warning for %s") % partner.name + message = partner.sale_warn_msg + warning = { + 'title': title, + 'message': message, + } + if partner.sale_warn == 'block': + self.update({'partner_id': False, 'partner_invoice_id': False, 'partner_shipping_id': False, 'pricelist_id': False}) + return {'warning': warning} + + if warning: + return {'warning': warning} + @api.model def create(self, vals): if vals.get('name', 'New') == 'New': @@ -227,6 +257,7 @@ class SaleOrder(models.Model): result = super(SaleOrder, self).create(vals) return result + @api.multi def _prepare_invoice(self): """ @@ -784,6 +815,18 @@ class SaleOrderLine(models.Model): if self.order_id.pricelist_id and self.order_id.partner_id: vals['price_unit'] = self.env['account.tax']._fix_tax_included_price(product.price, product.taxes_id, self.tax_id) self.update(vals) + + title = False + message = False + warning = {} + if product.sale_line_warn != 'no-message': + title = _("Warning for %s") % product.name + message = product.sale_line_warn_msg + warning['title'] = title + warning['message'] = message + if product.sale_line_warn == 'block': + self.product_id = False + return {'warning': warning} return {'domain': domain} @api.onchange('product_uom', 'product_uom_qty') @@ -913,6 +956,8 @@ class ProductTemplate(models.Model): "Timesheets on contract: Invoice based on the tracked hours on the related timesheet.\n" "Create a task and track hours: Create a task on the sale order validation and track the work hours.", default='manual') + sale_line_warn = fields.Selection(WARNING_MESSAGE, 'Sales Order Line', help=WARNING_HELP, required=True, default="no-message") + sale_line_warn_msg = fields.Text('Message for Sales Order Line') @api.multi @api.depends('product_variant_ids.sales_count') diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 571637efd11..53a6021aee1 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -565,7 +565,6 @@ - @@ -581,6 +580,13 @@ + + + + + +