'Sync commercial fields and address fields from company and to children after create/update,
just as if those were all modeled as fields.related to the parent'

@api.multi
def _fields_sync(self, values):

    if (values.get('parent_id') or values.get('type', 'contact')):
        if values.get('parent_id'):
            self._commercial_sync_from_company()
        if (self.parent_id and (self.type == 'contact')):
            onchange_vals = self.onchange_parent_id().get('value', {})
            self.update_address(onchange_vals)
    if self.child_ids:
        if (self.commercial_partner_id == self):
            commercial_fields = self._commercial_fields()
            if any(((field in values) for field in commercial_fields)):
                self._commercial_sync_to_children()
        for child in self.child_ids.filtered((lambda c: (not c.is_company))):
            if (child.commercial_partner_id != self.commercial_partner_id):
                self._commercial_sync_to_children()
                break
        address_fields = self._address_fields()
        if any(((field in values) for field in address_fields)):
            contacts = self.child_ids.filtered((lambda c: (c.type == 'contact')))
            contacts.update_address(values)
