Files
2026-03-14 09:42:12 +00:00

65 lines
2.2 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 sql import Literal
from sql.operators import Equal
from trytond.model import Exclude, fields
from trytond.pool import PoolMeta
class Configuration(metaclass=PoolMeta):
__name__ = 'party.configuration'
@classmethod
def __setup__(cls):
super().__setup__()
cls.identifier_types.selection.extend([
('winbooks_supplier', "WinBooks Supplier"),
('winbooks_customer', "WinBooks Customer"),
])
class Party(metaclass=PoolMeta):
__name__ = 'party.party'
winbooks_supplier_identifier = fields.Function(
fields.Many2One('party.identifier', "WinBooks Supplier Identifier"),
'get_winbooks_identifier', searcher='search_winbooks_identifier')
winbooks_customer_identifier = fields.Function(
fields.Many2One('party.identifier', "WinBooks Customer Identifier"),
'get_winbooks_identifier', searcher='search_winbooks_identifier')
def get_winbooks_identifier(self, name):
return self._get_identifier(name, {name[:-len('_identifier')]})
@classmethod
def search_winbooks_identifier(cls, name, clause):
return cls._search_identifier(
name, clause, {name[:-len('_identifier')]})
class Identifier(metaclass=PoolMeta):
__name__ = 'party.identifier'
@classmethod
def __setup__(cls):
super().__setup__()
t = cls.__table__()
cls._sql_constraints += [
('winbooks_party_unique',
Exclude(t, (t.party, Equal),
where=t.type.in_(
['winbooks_supplier', 'winbooks_customer'])
& (t.active == Literal(True))),
'account_export_winbooks.'
'msg_party_identifier_winbooks_party_unique'),
('winbooks_code_unique',
Exclude(t, (t.code, Equal),
where=t.type.in_(
['winbooks_supplier', 'winbooks_customer'])
& (t.active == Literal(True))),
'account_export_winbooks.'
'msg_party_identifier_winbooks_code_unique'),
]