#### Impacted versions:

[9.0]
#### Steps to reproduce:

1) Create a new database with demo data
2) Install warning module
3) Go in Inventory app
4) Create a new delivery order
5) Select the partner "Steven Hamilton" (My Company, Chicago, Steven Hamilton)
#### Current behavior:

The Destination Location Zone (location_dest_id) doesn't change. It stays at "Partner Locations/Customers"
#### Expected behavior:

The destination location should be changed to "Physical Locations/My Company, Chicago: Transit Location".

6) Remove the warning module
7) Go in Inventory app
8) Create a new delivery order
9) Select the partner "Steven Hamilton" (My Company, Chicago, Steven Hamilton). See the Destination Location Zone changing.
#### Problem

The warning module override the on_change of stock module. Therefore it inhibit the execution of the original on_change.

I didn't look at the code, but I'm fairly sure the on_change on partner_id in stock module was added after the warning module was done. By testing this addition in the stock module alone it worked fine, but with warning module, it doesn't.

Very easy to break a module in both directions (parent and child)! The new @api.onchange works better because each module can have their own onchange method with different name without having to override any method. Very sad that we need to rewrite code in v7 when we hit a module that already have an onchange method on a field!

addons/warning/warning.py
_inherit = 'purchase.order'
    @api.onchange('partner_id')
    def onchange_partner_id_warning(self):
        if not self.partner_id:
            return
        result = {}
        warning = {}
        title = False
        message = False
        partner = self.partner_id
        
        if partner.purchase_warn == 'no-message' and partner.parent_id:
            partner = partner.parent_id
        if partner.purchase_warn != 'no-message':
            
            if partner.purchase_warn != 'block' and partner.parent_id and partner.parent_id.purchase_warn == 'block':
                partner = partner.parent_id
            title = _("Warning for %s") % partner.name
            message = partner.purchase_warn_msg
            warning = {
                'title': title,
                'message': message
                }
            if partner.purchase_warn == 'block':
                self.update({'partner_id': False})
                return {'warning': warning}
        if warning:
            result['warning'] = warning
        return result
class account_invoice(osv.osv):