diff --git a/addons/account/partner.py b/addons/account/partner.py index e154c407716..b402a33ed11 100644 --- a/addons/account/partner.py +++ b/addons/account/partner.py @@ -47,6 +47,16 @@ class account_fiscal_position(osv.osv): 'active': True, } + def _check_country(self, cr, uid, ids, context=None): + obj = self.browse(cr, uid, ids[0], context=context) + if obj.country_id and obj.country_group_id: + return False + return True + + _constraints = [ + (_check_country, 'You can not select a country and a group of countries', ['country_id', 'country_group_id']), + ] + @api.v7 def map_tax(self, cr, uid, fposition_id, taxes, context=None): if not taxes: @@ -115,10 +125,17 @@ class account_fiscal_position(osv.osv): domain = [ ('auto_apply', '=', True), '|', ('vat_required', '=', False), ('vat_required', '=', partner.vat_subjected), - '|', ('country_id', '=', None), ('country_id', '=', delivery.country_id.id), - '|', ('country_group_id', '=', None), ('country_group_id.country_ids', '=', delivery.country_id.id) ] - fiscal_position_ids = self.search(cr, uid, domain, context=context) + + fiscal_position_ids = self.search(cr, uid, domain + [('country_id', '=', delivery.country_id.id)], context=context, limit=1) + if fiscal_position_ids: + return fiscal_position_ids[0] + + fiscal_position_ids = self.search(cr, uid, domain + [('country_group_id.country_ids', '=', delivery.country_id.id)], context=context, limit=1) + if fiscal_position_ids: + return fiscal_position_ids[0] + + fiscal_position_ids = self.search(cr, uid, domain + [('country_id', '=', None), ('country_group_id', '=', None)], context=context, limit=1) if fiscal_position_ids: return fiscal_position_ids[0] return False diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml index 36aa1ed409d..45d92f21d23 100644 --- a/addons/account/partner_view.xml +++ b/addons/account/partner_view.xml @@ -16,8 +16,8 @@ - - + +