Define generic getter and searcher for identifier of party

This commit is contained in:
Cédric Krier
2024-01-19 23:35:21 +01:00
parent 5e10e9df21
commit 1ad42b265f
2 changed files with 18 additions and 31 deletions
+16 -9
View File
@@ -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
+2 -22
View File
@@ -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'})