diff --git a/addons/warning/warning.py b/addons/warning/warning.py
index c1a9f3c88ef8c7f0c07c6faa5e26dd931b980593..705098db2b1c144dc90c62ec2ae348d863d899ed 100644
--- a/addons/warning/warning.py
+++ b/addons/warning/warning.py
@@ -34,34 +34,29 @@ class res_partner(osv.osv):
 
 
 
-class sale_order(osv.osv):
+class sale_order(osv.Model):
     _inherit = 'sale.order'
-    def onchange_partner_id(self, cr, uid, ids, part, context=None):
-        if not part:
-            return {'value':{'partner_invoice_id': False, 'partner_shipping_id':False, 'payment_term_id' : False}}
+
+    @api.onchange('partner_id')
+    def onchange_partner_id_warning(self):
+        if not self.partner_id:
+            return
         warning = {}
         title = False
         message = False
-        partner = self.pool.get('res.partner').browse(cr, uid, part, context=context)
-        if partner.sale_warn != 'no-message':
-            title =  _("Warning for %s") % partner.name
-            message = partner.sale_warn_msg
+        if self.partner_id.sale_warn != 'no-message':
+            title =  _("Warning for %s") % self.partner_id.name
+            message = self.partner_id.sale_warn_msg
             warning = {
                     'title': title,
                     'message': message,
             }
-            if partner.sale_warn == 'block':
-                return {'value': {'partner_id': False, 'partner_invoice_id': False, 'partner_shipping_id':False, 'pricelist_id' : False}, 'warning': warning}
-
-        result =  super(sale_order, self).onchange_partner_id(cr, uid, ids, part, context=context)
-
-        if result.get('warning',False):
-            warning['title'] = title and title +' & '+ result['warning']['title'] or result['warning']['title']
-            warning['message'] = message and message + ' ' + result['warning']['message'] or result['warning']['message']
+            if self.partner_id.sale_warn == 'block':
+                self.update({'partner_id': False, 'partner_invoice_id': False, 'partner_shipping_id': False, 'pricelist_id': False})
+                return {'warning': warning}
 
         if warning:
-            result['warning'] = warning
-        return result
+            return {'warning': warning}
 
 
 class purchase_order(osv.osv):
@@ -164,14 +159,14 @@ class product_product(osv.osv):
 class sale_order_line(osv.osv):
     _inherit = 'sale.order.line'
     def product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0,
-            uom=False, qty_uos=0, uos=False, name='', partner_id=False,
+            uom=False, name='', partner_id=False,
             lang=False, update_tax=True, date_order=False, packaging=False,
             fiscal_position_id=False, flag=False, warehouse_id=False, context=None):
         warning = {}
         if not product:
             return {'value': {'th_weight' : 0, 'product_packaging': False,
-                'product_uos_qty': qty}, 'domain': {'product_uom': [],
-                   'product_uos': []}}
+                'product_uom_qty': qty}, 'domain': {'product_uom': [],
+                   'product_uom': []}}
         product_obj = self.pool.get('product.product')
         product_info = product_obj.browse(cr, uid, product)
         title = False
@@ -186,7 +181,7 @@ class sale_order_line(osv.osv):
                 return {'value': {'product_id': False}, 'warning': warning}
 
         result =  super(sale_order_line, self).product_id_change_with_wh( cr, uid, ids, pricelist, product, qty,
-            uom, qty_uos, uos, name, partner_id,
+            uom, qty_uom, uom, name, partner_id,
             lang, update_tax, date_order, packaging, fiscal_position_id, flag, warehouse_id=warehouse_id, context=context)
 
         if result.get('warning',False):