97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
from trytond.model import (
|
|
Workflow, ModelSQL, ModelView, Unique, fields)
|
|
from trytond.transaction import Transaction
|
|
from trytond.pyson import Eval, If
|
|
|
|
class Maintenance(Workflow, ModelSQL, ModelView):
|
|
'Equipment Maintenance'
|
|
__name__ = 'optical_equipment.maintenance'
|
|
|
|
|
|
code = fields.Char(
|
|
"Code", select=True,states={'readonly': True })
|
|
|
|
state = fields.Selection([
|
|
('draft', "Draft"),
|
|
('agended', "Agended"),
|
|
('in_progress', "In Progress")
|
|
], "State",required=True, readonly=True, sort=False)
|
|
|
|
company = fields.Many2One('company.company', "Company", readonly=True)
|
|
propietary = fields.Many2One('party.party', "Propietary", required=True)
|
|
propietary_address = fields.Many2One('party.address', "Propietary Address", required=True,
|
|
domain=[('party', '=', Eval('propietary'))]
|
|
)
|
|
equipment = fields.Many2One('optical_equipment.equipment', "Equipment",
|
|
domain=[])
|
|
|
|
|
|
#when the maintenance is in agended status
|
|
estimated_agended = fields.DateTime("Date Maintenance")
|
|
technical = fields.Many2One('company.employee')
|
|
|
|
maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance',
|
|
'Maintenance Lines', states={
|
|
'readonly': Eval('state') != 'draft',})
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super(Maintenance, cls).__setup__()
|
|
cls._transitions.update({
|
|
('draft', 'agended'),
|
|
('agended', 'in_progress'),
|
|
('in_progress', 'finished')
|
|
})
|
|
cls._buttons.update({
|
|
'draft': {},
|
|
'agended': {},
|
|
'in_progress': {},
|
|
'finished': {},
|
|
})
|
|
|
|
@staticmethod
|
|
def default_company():
|
|
return Transaction().context.get('company')
|
|
|
|
@classmethod
|
|
def default_state(cls):
|
|
return 'draft'
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('draft')
|
|
def draft(cls, maintenances):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('agended')
|
|
def agended(cls, maintenances):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('in_progress')
|
|
def inProgress(cls, maintenances):
|
|
pass
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('finished')
|
|
def finished(cls, maintenances):
|
|
pass
|
|
|
|
class MaintenanceLine(ModelSQL, ModelView):
|
|
'Maintenance Line'
|
|
__name__ = 'optical_equipment.maintenance.line'
|
|
|
|
maintenance_acitivity = fields.Many2One('product.product', 'Product',
|
|
ondelete='RESTRICT',
|
|
domain=[If(Eval('state').in_(['draft']),
|
|
('maintenance_activity', '=', True),()),])
|
|
|
|
maintenance_acitivity = fields.Many2One('product.product', 'Product',
|
|
ondelete='RESTRICT',
|
|
domain=[If(Eval('state').in_(['draft']),
|
|
('replacement', '=', True),()),])
|