From 78e0313f3e8c2ef3de6b643b4fcff0ca40f06edc Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 6 Apr 2016 13:49:07 +0200 Subject: [PATCH] [MOV] stock: Move stock part from warning module --- addons/stock/partner.py | 7 +++++++ addons/stock/partner_view.xml | 16 ++++++++++++++++ addons/stock/stock.py | 29 ++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/addons/stock/partner.py b/addons/stock/partner.py index 917c5de1ce9..6b424f83deb 100644 --- a/addons/stock/partner.py +++ b/addons/stock/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' @@ -16,4 +17,10 @@ class res_partner(osv.osv): relation='stock.location', string="Vendor Location", help="This stock location will be used, instead of the default one, as the source location for goods you receive from the current partner"), + 'picking_warn' : fields.selection(WARNING_MESSAGE, 'Stock Picking', help=WARNING_HELP, required=True), + 'picking_warn_msg' : fields.text('Message for Stock Picking'), + } + + _defaults = { + 'picking_warn': 'no-message', } diff --git a/addons/stock/partner_view.xml b/addons/stock/partner_view.xml index 761361e6676..750f64c7dd2 100644 --- a/addons/stock/partner_view.xml +++ b/addons/stock/partner_view.xml @@ -21,5 +21,21 @@ + + res.partner.stock.warning + res.partner + + + + + + + + + + + + diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 5be3493852a..4575fc97c4f 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -914,9 +914,36 @@ class stock_picking(models.Model): location_dest_id = picking_type.default_location_dest_id.id res['value'] = {'location_id': location_id, - 'location_dest_id': location_dest_id,} + 'location_dest_id': location_dest_id} + + if partner_id: + warning = {} + title = False + message = False + partner = self.pool['res.partner'].browse(cr, uid, partner_id, context=context) + + # If partner has no warning, check its company + if partner.picking_warn == 'no-message' and partner.parent_id: + partner = partner.parent_id + + if partner.picking_warn != 'no-message': + # Block if partner only has warning but parent company is blocked + if partner.picking_warn != 'block' and partner.parent_id and partner.parent_id.picking_warn == 'block': + partner = partner.parent_id + title = _("Warning for %s") % partner.name + message = partner.picking_warn_msg + warning = { + 'title': title, + 'message': message + } + if partner.picking_warn == 'block': + return {'value': {'partner_id': False}, 'warning': warning} + return {'warning': warning} + return res + + def _default_location_destination(self): # retrieve picking type from context; if none this returns an empty recordset picking_type_id = self._context.get('default_picking_type_id')