cashbook/types.py

74 lines
2.1 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
# This file is part of the cashbook-module from m-ds for Tryton.
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
2023-06-08 15:08:47 +00:00
from trytond.model import ModelView, ModelSQL, fields, Unique, Index
from trytond.transaction import Transaction
2022-12-21 18:12:39 +00:00
from trytond.i18n import gettext
2022-08-08 12:31:42 +00:00
class Type(ModelSQL, ModelView):
'Cashbook Type'
__name__ = 'cashbook.type'
name = fields.Char(string='Name', required=True, translate=True)
short = fields.Char(string='Abbreviation', required=True, size=3)
company = fields.Many2One(
string='Company', model_name='company.company',
required=True, ondelete="RESTRICT")
feature = fields.Selection(
string='Feature', required=True,
selection='get_sel_feature',
2022-12-21 18:12:39 +00:00
help='Select feature set of the Cashbook.')
@classmethod
def __setup__(cls):
2022-08-08 12:31:42 +00:00
super(Type, cls).__setup__()
cls._order.insert(0, ('name', 'ASC'))
t = cls.__table__()
2022-08-09 13:08:41 +00:00
cls._sql_constraints.extend([
2023-11-29 14:19:38 +00:00
('code_uniq',
Unique(t, t.short),
'cashbook.msg_type_short_unique'),
2022-08-09 13:08:41 +00:00
])
2023-06-08 15:08:47 +00:00
cls._sql_indexes.update({
Index(
t,
(t.feature, Index.Equality())),
})
2022-12-21 18:12:39 +00:00
@classmethod
def default_feature(cls):
""" default: general
"""
return 'gen'
@classmethod
def get_sel_feature(cls):
""" get feature-modes
"""
return [('gen', gettext('cashbook.msg_btype_general'))]
def get_rec_name(self, name):
""" short + name
"""
return '%(short)s - %(name)s' % {
'short': self.short or '-',
2023-11-29 14:19:38 +00:00
'name': self.name or '-'}
@classmethod
def search_rec_name(cls, name, clause):
2022-08-09 13:08:41 +00:00
""" search in name + short
"""
return [
'OR',
('name',) + tuple(clause[1:]),
2023-11-29 14:19:38 +00:00
('short',) + tuple(clause[1:])]
@staticmethod
def default_company():
return Transaction().context.get('company') or None
2022-08-08 12:31:42 +00:00
# end Type