trytonpsk-staff_payroll/position.py

67 lines
2.3 KiB
Python
Raw Normal View History

2020-04-16 00:37:53 +02:00
# 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 ModelView, ModelSQL, fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval, Bool
2021-06-04 23:04:40 +02:00
from trytond.i18n import gettext
from .exceptions import MissingConfigPosition
2020-04-16 00:37:53 +02:00
2021-06-04 23:04:40 +02:00
class Position(metaclass=PoolMeta):
2020-04-16 00:37:53 +02:00
__name__ = 'staff.position'
workday_definition = fields.One2Many('staff.workday_definition',
'position', 'Workday Definition')
@classmethod
def __setup__(cls):
super(Position, cls).__setup__()
cls._buttons.update({
'create_workdays': {
'invisible': Bool(Eval('workday_definition')),
},
})
def _default_workdays(self):
pool = Pool()
Workday = pool.get('staff.workday_definition')
Config = pool.get('staff.configuration')
config = Config(1)
if not config.default_hour_workday or not config.default_hour_workday:
2021-06-04 23:04:40 +02:00
raise MissingConfigPosition(gettext('staff_payroll.msg_missing_config_default'))
2020-04-16 00:37:53 +02:00
for day in Workday.weekday.selection:
values = {
'position': self.id, 'weekday': day[0],
'workday': config.default_hour_workday,
'restday': config.default_restday
}
Workday.create([values])
@classmethod
@ModelView.button
def create_workdays(cls, records):
for rec in records:
rec._default_workdays()
class WorkdayDefinition(ModelSQL, ModelView):
'Workday Definition'
__name__ = 'staff.workday_definition'
position = fields.Many2One('staff.position', 'Position',
required=True, ondelete='CASCADE')
2023-07-21 16:32:50 +02:00
workday = fields.Numeric('Workday', digits=(6, 4), required=True)
2020-04-16 00:37:53 +02:00
restday = fields.Numeric('Restday', digits=(2, 2), required=True)
weekday = fields.Selection([
('monday', 'Monday'),
('tuesday', 'Tuesday'),
('wednesday', 'Wednesday'),
('thursday', 'Thursday'),
('friday', 'Friday'),
('saturday', 'Saturday'),
('sunday', 'Sunday'),
], 'Weekday', required=True)
note = fields.Text('Note')
@classmethod
def __setup__(cls):
super(WorkdayDefinition, cls).__setup__()