**Impacted versions:** 11.0

**Steps to reproduce:**
Add a bunch of `company_dependent` fields on `res_bank`:

```
class ResBank(models.Model):
    _inherit = "res.bank"

    cpa_add_routing_record = fields.Boolean(company_dependent=True)
    cpa_short_name = fields.Char(company_dependent=True, size=15, default='A NAME')
    cpa_client_number = fields.Char(company_dependent=True, size=10)
    cpa_file_creation_number = fields.Integer(company_dependent=True, default=1)
    cpa_test_record_allowed = fields.Boolean(company_dependent=True, default=True)
    cpa_institutional_id_number_for_returns = fields.Integer(company_dependent=True, size=9)
    cpa_account_number_for_returns = fields.Char(company_dependent=True, size=12)
    cpa_processing_center = fields.Selection([
        ('81510', "A"),
        ('278', "B"),
    ], company_dependent=True)
```

Then add a constrain:
```
    @api.constrains('cpa_processing_center', 'cpa_account_number_for_returns')
    def _check_cpa_account_number_for_returns_for_desj(self):
        if self.cpa_processing_center == '81510' and not self.cpa_account_number_for_returns:
            raise ValidationError("boom")
```
Run this test class:

```
class TestResBank(tests.TransactionCase):
    def setUp(self):
        super(TestResBank, self).setUp()
        self._createBankJournal()

    def _createBankJournal(self):
        self.bank = self.env['res.bank'].create({
            'name': 'ING',
            'cpa_file_creation_number': 22,
            'cpa_client_number': '0385910000',
            'cpa_short_name': 'Sartigan',
            'cpa_processing_center': '278',
            'cpa_add_routing_record': True
        })

    def testConstrains_order_1(self):
        """Passes"""
        self.bank.write({
            'cpa_institutional_id_number_for_returns': 918283746,
            'cpa_account_number_for_returns': '98765h',
            'cpa_processing_center': '81510',
            'cpa_add_routing_record': False,
        })

    def testConstrains_order_2(self):
        """Fails!"""
        self.bank.write({
            'cpa_processing_center': '81510',
            'cpa_add_routing_record': False,
            'cpa_institutional_id_number_for_returns': 918283746,
            'cpa_account_number_for_returns': '98765h',
        })

```

**Current behavior:**
The first test passes but the second one fails

**Expected behavior:**
Both tests pass

**More details:**
- The two tests are essentially identical except the order of the fields in the write method is different. 
- I believe the order should not matter. 
- The problem does not happen if company_dependent is removed from all fields 
- I think the constrain is trigerred before all fields are set 

Here's a module I made solely to trigger the bug:
[model_constrains.zip](https://github.com/odoo/odoo/files/1482451/model_constrains.zip)
odoo/addons/base/res/ir_property.py
_name = 'ir.property'
    name = fields.Char(index=True)
    res_id = fields.Char(string='Resource', index=True, help="If not set, acts as a default value for new resources",)
    company_id = fields.Many2one('res.company', string='Company', index=True)
    fields_id = fields.Many2one('ir.model.fields', string='Field', ondelete='cascade', required=True, index=True)
    value_float = fields.Float()
    value_integer = fields.Integer()
    value_text = fields.Text()  
    value_binary = fields.Binary()
    value_reference = fields.Char()
    value_datetime = fields.Datetime()
    type = fields.Selection([('char', 'Char'),
                             ('float', 'Float'),
                             ('boolean', 'Boolean'),
                             ('integer', 'Integer'),
                             ('text', 'Text'),
                             ('binary', 'Binary'),
                             ('many2one', 'Many2One'),
                             ('date', 'Date'),
                             ('datetime', 'DateTime'),
                             ('selection', 'Selection'),
                             ],
                            required=True,
                            default='many2one',
                            index=True)
    @api.multi
    def _update_values(self, values):