Define generic getter and searcher for identifier of party
This commit is contained in:
+16
-9
@@ -142,28 +142,22 @@ class Party(
|
||||
def get_code_readonly(self, name):
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def tax_identifier_types(cls):
|
||||
return TAX_IDENTIFIER_TYPES
|
||||
|
||||
def get_tax_identifier(self, name):
|
||||
types = self.tax_identifier_types()
|
||||
def _get_identifier(self, name, types):
|
||||
for identifier in self.identifiers:
|
||||
if identifier.type in types:
|
||||
return identifier.id
|
||||
|
||||
@classmethod
|
||||
def search_tax_identifier(cls, name, clause):
|
||||
def _search_identifier(cls, name, clause, types):
|
||||
_, operator, value = clause
|
||||
nested = clause[0][len(name) + 1:]
|
||||
types = cls.tax_identifier_types()
|
||||
domain = [
|
||||
('identifiers', 'where', [
|
||||
(nested or 'rec_name', operator, value),
|
||||
('type', 'in', types),
|
||||
]),
|
||||
]
|
||||
# Add party without tax identifier
|
||||
# Add party without identifier
|
||||
if ((operator == '=' and value is None)
|
||||
or (operator == 'in' and None in value)):
|
||||
domain = ['OR',
|
||||
@@ -175,6 +169,19 @@ class Party(
|
||||
]
|
||||
return domain
|
||||
|
||||
@classmethod
|
||||
def tax_identifier_types(cls):
|
||||
return TAX_IDENTIFIER_TYPES
|
||||
|
||||
def get_tax_identifier(self, name):
|
||||
types = self.tax_identifier_types()
|
||||
return self._get_identifier(name, types)
|
||||
|
||||
@classmethod
|
||||
def search_tax_identifier(cls, name, clause):
|
||||
types = cls.tax_identifier_types()
|
||||
return cls._search_identifier(name, clause, types)
|
||||
|
||||
def get_full_name(self, name):
|
||||
return self.name
|
||||
|
||||
|
||||
@@ -12,28 +12,8 @@ class Party(metaclass=PoolMeta):
|
||||
'get_siren', searcher='search_siren')
|
||||
|
||||
def get_siren(self, name):
|
||||
for identifier in self.identifiers:
|
||||
if identifier.type == 'fr_siren':
|
||||
return identifier.id
|
||||
return self._get_identifier(name, {'fr_siren'})
|
||||
|
||||
@classmethod
|
||||
def search_siren(cls, name, clause):
|
||||
_, operator, value = clause
|
||||
nested = clause[0][len(name) + 1:]
|
||||
domain = [
|
||||
('identifiers', 'where', [
|
||||
(nested or 'rec_name', operator, value),
|
||||
('type', '=', 'fr_siren'),
|
||||
]),
|
||||
]
|
||||
# Add party without tax identifier
|
||||
if ((operator == '=' and value is None)
|
||||
or (operator == 'in' and None in value)):
|
||||
domain = ['OR',
|
||||
domain, [
|
||||
('identifiers', 'not where', [
|
||||
('type', '=', 'fr_siren'),
|
||||
]),
|
||||
],
|
||||
]
|
||||
return domain
|
||||
return cls._search_identifier(name, clause, {'fr_siren'})
|
||||
|
||||
Reference in New Issue
Block a user