diff --git a/modules/party/party.py b/modules/party/party.py index 7923c22089..cf32835471 100644 --- a/modules/party/party.py +++ b/modules/party/party.py @@ -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 diff --git a/modules/party_siret/party.py b/modules/party_siret/party.py index 2c7372cb19..0623ecc6ee 100644 --- a/modules/party_siret/party.py +++ b/modules/party_siret/party.py @@ -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'})