trytondo-optical_equipment/agended.py

145 lines
5.0 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.model import ModelSQL, ModelView, fields
from trytond.wizard import Button, StateAction, StateView, Wizard
from trytond.pool import Pool
from datetime import timedelta
class AgendedInitial(ModelView):
'Agended maintenance service'
__name__ = 'optical_equipment_maintenance.agended'
maintenance_service = fields.Many2One(
'optical_equipment_maintenance.service',
'Maintenaince Service',
required=True,
domain=[('state', '=', 'draft')],
)
estimated_agended = fields.DateTime('Date Maintenance', required=True)
technical = fields.Many2One('company.employee', 'Technical', required=True)
class AssingAgended(Wizard):
'Assing Agended'
__name__ = 'optical_equipment_maintenance.assing_agended'
start = StateView(
'optical_equipment_maintenance.agended',
'optical_equipment.assing_agended_view_form',
[
Button('Cancel', 'end', 'tryton-cancel'),
Button('Assing', 'assing_agended', 'tryton-ok', default=True),
],
)
assing_agended = StateAction(
'optical_equipment.act_maintenance_service_form')
def default_start(self, fields):
if len(self.records) > 0:
default = {'maintenance_service': self.records[0].id}
else:
default = {'maintenance_service': None}
return default
def do_assing_agended(self, action):
pool = Pool()
Diary = pool.get('optical_equipment_maintenance.diary')
Config = pool.get('optical_equipment.configuration')
config = Config(3)
diary = Diary(
code=config.agended_sequence.get(),
maintenance_service=self.start.maintenance_service,
date_expected=self.start.estimated_agended,
date_estimated=self.start.estimated_agended + timedelta(days=15),
date_end=self.start.estimated_agended + timedelta(days=15),
technical=self.start.technical.id,
state='agended',
)
diary.save()
maintenanceService = self.start.maintenance_service
maintenanceService.estimated_agended = self.start.estimated_agended
maintenanceService.technical = self.start.technical
maintenanceService.state_agended = 'agended'
maintenanceService.state = 'agended'
maintenanceService.current_agended = diary.id
maintenanceService.history_agended += (diary.id,)
maintenanceService.set_code(maintenanceService)
maintenanceService.save()
class ReAgended(ModelView):
'Agended maintenance service'
__name__ = 'optical_equipment_maintenance.reagended'
maintenance_service = fields.Many2One(
'optical_equipment_maintenance.service',
'Maintenaince Service',
required=True,
domain=[('state', '=', 'failed')],
)
estimated_agended = fields.DateTime('Date Maintenance', required=True)
technical = fields.Many2One('company.employee', 'Technical', required=True)
class ReAssingAgended(Wizard):
'Assing Agended'
__name__ = 'optical_equipment_maintenance.reassing_agended'
start = StateView(
'optical_equipment_maintenance.reagended',
'optical_equipment.reassing_agended_view_form',
[
Button('Cancel', 'end', 'tryton-cancel'),
Button('Assing', 'assing_agended', 'tryton-ok', default=True),
],
)
assing_agended = StateAction(
'optical_equipment.act_maintenance_service_form')
def default_start(self, fields):
if len(self.records) > 0:
default = {'maintenance_service': self.records[0].id}
else:
default = {'maintenance_service': None}
return default
def do_assing_agended(self, action):
pool = Pool()
Diary = pool.get('optical_equipment_maintenance.diary')
diary = Diary(
maintenance_service=self.start.maintenance_service,
date_expected=self.start.estimated_agended,
date_estimated=self.start.estimated_agended + timedelta(days=15),
date_end=self.start.estimated_agended + timedelta(days=15),
technical=self.start.technical.id,
state='agended',
)
diary.save()
maintenanceService = self.start.maintenance_service
maintenanceService.estimated_agended = self.start.estimated_agended
maintenanceService.technical = self.start.technical
maintenanceService.state_agended = 'agended'
maintenanceService.state = 'agended'
maintenanceService.history_agended += (diary.id,)
maintenanceService.save()
class ServiceMaintenanceAgended(ModelSQL):
'Service Maintenance - Agended'
__name__ = 'optical_equipment_maintenance.service-maintenance.diary'
maintenance_service = fields.Many2One(
'optical_equipment_maintenance.service', 'Maintenance Service'
)
agended = fields.Many2One('optical_equipment_maintenance.diary', 'Agended')