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 @@
-
-
+
+