trytonpsk-staff_payroll/configuration.py

89 lines
3.1 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 import backend
from trytond.model import fields
from trytond.pool import PoolMeta, Pool
from trytond.pyson import Eval
from trytond.tools.multivalue import migrate_property
__all__ = ['StaffConfiguration', 'StaffConfigurationSequence']
def default_func(field_name):
@classmethod
def default(cls, **pattern):
return getattr(
cls.multivalue_model(field_name),
'default_%s' % field_name, lambda: None)()
return default
class StaffConfiguration:
__metaclass__ = PoolMeta
__name__ = 'staff.configuration'
staff_payroll_sequence = fields.MultiValue(fields.Many2One('ir.sequence',
'Payroll Sequence', required=True, domain=[
('code', '=', 'staff.payroll')])
)
default_hour_workday = fields.Integer('Default Hour Workday',
required=True, help='In hours')
default_restday = fields.Integer('Default Restday', required=True,
help='In hours')
default_liquidation_period = fields.Integer('Default Liquidation Period',
required=True, help='In days')
week_hours_work = fields.Integer('Week Hours Work', required=True,
help='In hours')
default_journal = fields.Many2One('account.journal', 'Default Journal',
required=True)
default_staff_payroll_sequence = default_func('staff_payroll_sequence')
minimum_salary = fields.Integer('Minimum Salary', required=True)
@classmethod
def multivalue_model(cls, field):
pool = Pool()
if field in ['staff_payroll_sequence', 'staff_contract_sequence']:
return pool.get('staff.configuration.sequence')
return super(StaffConfiguration, cls).multivalue_model(field)
class StaffConfigurationSequence:
__metaclass__ = PoolMeta
__name__ = 'staff.configuration.sequence'
staff_payroll_sequence = fields.Many2One(
'ir.sequence', "Staff Payroll Sequence", required=True,
domain=[
('company', 'in', [Eval('company', -1), None]),
('code', '=', 'staff.payroll'),
],
depends=['company'])
@classmethod
def __register__(cls, module_name):
TableHandler = backend.get('TableHandler')
exist = TableHandler.table_exist(cls._table)
super(StaffConfigurationSequence, cls).__register__(module_name)
if not exist:
cls._migrate_property([], [], [])
@classmethod
def _migrate_property(cls, field_names, value_names, fields):
field_names.append('staff_payroll_sequence')
value_names.append('staff_payroll_sequence')
fields.append('company')
migrate_property(
'staff.configuration', field_names, cls, value_names,
fields=fields)
@classmethod
def default_staff_payroll_sequence(cls):
pool = Pool()
ModelData = pool.get('ir.model.data')
try:
return ModelData.get_id('staff', 'sequence_staff_payroll')
except KeyError:
return None