133 lines
4.1 KiB
Python
133 lines
4.1 KiB
Python
#This file is part of Presik. 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, Workflow
|
|
from trytond.pyson import Eval, Bool
|
|
|
|
|
|
class Maintenance(Workflow, ModelSQL, ModelView):
|
|
'Hotel Maintenance'
|
|
__name__ = 'hotel.maintenance'
|
|
STATES = {'readonly': Eval('state') != 'draft'}
|
|
STATES_FINISH = {
|
|
'readonly': Eval('state') != 'draft',
|
|
'required': Eval('state') == 'finished'
|
|
}
|
|
room = fields.Many2One('hotel.room', 'Room', required=True,
|
|
states=STATES)
|
|
register_date = fields.Date('Date', states=STATES, required=True,
|
|
help='The date of register of the issue')
|
|
start_date = fields.Date('Start Maintenance', states={
|
|
'required': Eval('state').in_(['in_progress', 'finished']),
|
|
'readonly': Eval('state') == 'finished'
|
|
})
|
|
end_date = fields.Date('End Maintenance', states={
|
|
'required': Eval('state').in_(['in_progress', 'finished']),
|
|
'readonly': Eval('state') == 'finished'
|
|
})
|
|
total_days = fields.Function(fields.Integer('Total Days'), 'get_days')
|
|
issue = fields.Text('Issue', required=True, states={
|
|
'readonly': Eval('state').in_(['finished', 'cancelled'])
|
|
})
|
|
action = fields.Text('Action', states={
|
|
'required': Eval('state') == 'finished',
|
|
'readonly': Eval('state') == 'finished'
|
|
}, depends=['state'])
|
|
inspected_by = fields.Many2One('company.employee', 'Inspected By',
|
|
states=STATES_FINISH)
|
|
state = fields.Selection([
|
|
('draft', 'Draft'),
|
|
('confirmed', 'Confirmed'),
|
|
('in_progress', 'In progress'),
|
|
('finished', 'Finished'),
|
|
('cancelled', 'Canceled'),
|
|
], 'State', readonly=True, select=True)
|
|
criticality = fields.Selection([
|
|
('low', 'Low'),
|
|
('important', 'Important'),
|
|
('urgent', 'Urgent'),
|
|
], 'Criticality', required=True)
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super(Maintenance, cls).__setup__()
|
|
cls._transitions |= set((
|
|
('draft', 'confirmed'),
|
|
('draft', 'cancelled'),
|
|
('confirmed', 'draft'),
|
|
('confirmed', 'in_progress'),
|
|
('cancelled', 'draft'),
|
|
('confirmed', 'cancelled'),
|
|
('in_progress', 'finished'),
|
|
('finished', 'in_progress'),
|
|
))
|
|
cls._buttons.update({
|
|
'confirm': {
|
|
'invisible': Eval('state') != 'draft',
|
|
},
|
|
'in_progress': {
|
|
'invisible': Eval('state') != 'confirmed',
|
|
},
|
|
'finish': {
|
|
'invisible': Eval('state') != 'in_progress',
|
|
},
|
|
'draft': {
|
|
'invisible': Eval('state').in_(['draft', 'cancelled']),
|
|
},
|
|
'cancel': {
|
|
'invisible': Eval('state') == 'finished',
|
|
}
|
|
})
|
|
|
|
@staticmethod
|
|
def default_state():
|
|
return 'draft'
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('draft')
|
|
def draft(cls, records):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('cancelled')
|
|
def cancel(cls, records):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('confirmed')
|
|
def confirm(cls, records):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('in_progress')
|
|
def in_progress(cls, records):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('finished')
|
|
def finish(cls, records):
|
|
pass
|
|
|
|
@fields.depends('start_date', 'end_date')
|
|
def on_change_start_date(self):
|
|
if not self.start_date:
|
|
self.end_date = None
|
|
|
|
def get_days(self, name):
|
|
if self.end_date and self.start_date:
|
|
return (self.end_date - self.start_date).days
|
|
|
|
# FIXME
|
|
def check_method(self):
|
|
"""
|
|
Check the methods.
|
|
FIXME
|
|
"""
|
|
Operation = Pool().get('hotel.operation')
|
|
Operation().check_dates(self.start_date, self.end_date, self.room,
|
|
self.operation)
|