65 lines
2.2 KiB
Python
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'),
|
|
]
|