40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
from trytond.model import fields
|
|
from trytond.pool import PoolMeta
|
|
|
|
|
|
class Party(metaclass=PoolMeta):
|
|
__name__ = 'party.party'
|
|
|
|
siren = fields.Function(fields.Many2One(
|
|
'party.identifier', "SIREN"),
|
|
'get_siren', searcher='search_siren')
|
|
|
|
def get_siren(self, name):
|
|
for identifier in self.identifiers:
|
|
if identifier.type == 'fr_siren':
|
|
return identifier.id
|
|
|
|
@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
|