management maintenances services, maintenances, agended

This commit is contained in:
sinergia 2022-09-27 11:30:21 -05:00
parent 87a843754d
commit e630edb389
19 changed files with 359 additions and 221 deletions

View File

@ -18,6 +18,9 @@ def register():
maintenance.MaintenanceService,
maintenance.MaintenanceActivity,
maintenance.MaintenanceLine,
maintenance.AgendedInitial,
maintenance.ReAgended,
maintenance.ServiceMaintenanceAgended,
move.Move,
move.ShipmentOut,
sale.Sale,
@ -33,5 +36,7 @@ def register():
Pool.register(
subscription.CreateContract,
subscription.CreateProrogue,
subscription.CreateSubscriptionInvoice,
subscription.CreateSubscriptionInvoice,
maintenance.AssingAgended,
maintenance.ReAssingAgended,
module='optical_equipment', type_='wizard')

View File

@ -8,5 +8,8 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
equipment_sequence = fields.Many2One('ir.sequence', "Equipment Sequence",
domain=[('sequence_type', '=', Id('optical_equipment', 'sequence_type_equipment'))
]
)
])
maintenance_sequence = fields.Many2One('ir.sequence', "Maintenance Sequence",
domain=[('sequence_type', '=', Id('optical_equipment', 'sequence_type_maintenances'))
])

View File

@ -1,15 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="party"/>
<field name="party"/>
<label name="contact"/>
<field name="contact"/>
<label name="number"/>
<field name="number"/>
<label name="description"/>
<field name="description" colspan="3"/>
<label name="reference"/>
<field name="reference"/>
</form>

View File

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="number"/>
<field name="party"/>
<field name="reference"/>
</tree>

View File

@ -1,10 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="2">
<image name="tryton-question" xexpand="0" xfill="0"/>
<group col="2" xexpand="1" id="create_date">
<label string="Create Subscription Invoices for date" id="create"/>
<field name="date"/>
</group>
</form>

View File

@ -1,25 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level
this repository contains the full copyright notices and license terms. -->
<form>
<group id="create_subscription">
<label name="initial_contract" />
<field name="initial_contract" colspan="3"/>
<label name="party"/>
<field name="party"/>
<label name="contact"/>
<field name="contact"/>
<label name="invoice_recurrence"/>
<field name="invoice_recurrence"/>
<label name="start_date"/>
<field name="start_date"/>
<label name="end_date"/>
<field name="end_date"/>
<label name="invoice_start_date"/>
<field name="invoice_start_date"/>
<label name="unit_price"/>
<field name="unit_price"/>
</group>
<newline/>
<field name="equipments"/>
</form>

View File

@ -3,7 +3,24 @@ from trytond.model import (
class Diary(ModelSQL, ModelView):
'Diary'
__name__ = 'optical_equipment.maintenance.diary'
__name__ = 'optical_equipment_maintenance.diary'
code = fields.Char(
"Code", select=True,states={'readonly': True })
date_expected = fields.DateTime("Expected Date")
date_estimated = fields.DateTime("Estimated Date")
date_end = fields.DateTime("Date End")
maintenance_service = fields.Many2One('optical_equipment.maintenance.service', 'Maintenance Service')
technical = fields.Many2One('company.employee', "Technical")
state = fields.Selection([('draft', "Draft"),
('agended', "Agended"),
('in_progress', "In Progress"),
('failed', "Failed"),
('finished', "Finished")
], "State", required=True, readonly=True, sort=True)
@classmethod
def default_state(self):
return 'draft'

View File

@ -11,6 +11,14 @@
<field name="user" ref="res.user_admin"/>
<field name="group" ref="group_equipment_admin"/>
</record>
<record model="res.group" id="group_maintenance_admin">
<field name="name">Maintenance Administration</field>
</record>
<record model="res.user-res.group"
id="user_admin_group_maintenance_admin">
<field name="user" ref="res.user_admin"/>
<field name="group" ref="group_maintenance_admin"/>
</record>
<menuitem
name="Equipment"
sequence="40"
@ -83,13 +91,7 @@
<field name="domain"></field>
<field name="act_window" ref="act_optical_equipment_form"/>
</record>
<!--
<record model="ir.model.button" id="draft_equipment_button">
<field name="name">draft</field>
<field name="string">Draft</field>
<field name="model" search="[('model', '=', 'optical_equipment.equipment')]"/>
</record>
-->
<record model="ir.model.button" id="registred_equipment_button">
<field name="name">registred</field>
<field name="string">Registred</field>
@ -153,6 +155,24 @@
<field name="name">Equipment</field>
<field name="sequence_type" ref="sequence_type_equipment"/>
</record>
<record model="ir.sequence.type" id="sequence_type_maintenances">
<field name="name">Maintenances</field>
</record>
<record model="ir.sequence.type-res.group"
id="sequence_type_maintenance_group_admin">
<field name="sequence_type" ref="sequence_type_maintenances"/>
<field name="group" ref="res.group_admin"/>
</record>
<record model="ir.sequence.type-res.group"
id="sequence_type_maintenance_group_maintenance_admin">
<field name="sequence_type" ref="sequence_type_maintenances"/>
<field name="group" ref="group_maintenance_admin"/>
</record>
<record model="ir.sequence" id="sequence_maintenances">
<field name="name">Maintenance</field>
<field name="sequence_type" ref="sequence_type_maintenances"/>
</record>
<record model="ir.action.report" id="report_equipment">
<field name="name">Equipment</field>
<field name="model">optical_equipment.equipment</field>

View File

@ -2,12 +2,130 @@
# this repository contains the full copyright notices and license terms.
from trytond.model import (
Workflow, ModelSQL, ModelView, Unique, fields, sequence_ordered)
from trytond.wizard import (
Button, StateAction, StateTransition, StateView, Wizard)
from trytond.transaction import Transaction
from trytond.pyson import Eval, If, Id
from trytond.pyson import Bool, Eval, If, Id
from trytond.pool import Pool
from datetime import timedelta
import math as mt
import numpy as np
from trytond.exceptions import UserError
class MaintenanceService(Workflow, ModelSQL, ModelView):
'Equipment Maintenance Service'
__name__ = 'optical_equipment.maintenance.service'
_states = {'readonly': If(Eval('state') != 'draft', True)}
code = fields.Char("Code", readonly=True, select=True)
reference = fields.Char("Reference", select=True,
help="The identification of an external origin.")
description = fields.Char("Description",states=_states)
sale_date = fields.Char("Sale Date")
sale_origin = fields.Reference("Sale Origin", selection='get_origin', select=True,
states={'readonly': True})
company = fields.Many2One('company.company', "Company", readonly=True)
maintenance_type = fields.Selection([('preventive', 'Preventive'),
('corrective', 'Corrective')
], "Maintenance Type", states=_states)
propietary = fields.Many2One('party.party', "Propietary", required=True, states=_states)
propietary_address = fields.Many2One('party.address', "Propietary Address", required=True,
domain=[('party', '=', Eval('propietary'))],
states=_states)
lines = fields.One2Many('optical_equipment.maintenance', 'service_maintenance', "Lines",
states={'readonly': If(Eval('state') != 'in_progress', True)})
estimated_agended = fields.DateTime("Date Maintenance", states=_states)
history_agended = fields.Many2Many('optical_equipment.maintenance.service-maintenance.diary', 'maintenance_service', 'agended', "History Agended", readonly=True)
state_agended = fields.Selection([('no_agenda', "No agenda"),
('agended', "Agended"),
('in_progress', "In progress"),
('finish', "Finish"),
('failed', "Failed")], "State Agenda", states=_states)
technical = fields.Many2One('company.employee', "Technical", states=_states)
state = fields.Selection([('draft', "Draft"),
('agended', "Agended"),
('in_progress', "In Progress"),
('failed', "Failed"),
('finished', "Finished")
], "State", required=True, readonly=True, sort=True)
@classmethod
def __setup__(cls):
super(MaintenanceService, cls).__setup__()
cls._transitions = ({
('draft', 'agended'),
('agended', 'in_progress'),
('in_progress', 'finished'),
})
cls._buttons.update({
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
'finished': {'invisible': Eval('state').in_(['draft', 'agended', 'finished'])},
})
@staticmethod
def default_company():
return Transaction().context.get('company')
@classmethod
def default_maintenance_type(self):
return 'preventive'
@classmethod
def default_state_agended(self):
return 'no_agenda'
@classmethod
def default_state(self):
return 'draft'
@classmethod
def _get_origin(cls):
'Return list of Model names for origin Reference'
pool = Pool()
Sale = pool.get('sale.line')
return [Sale.__name__]
@classmethod
def get_origin(cls):
Model = Pool().get('ir.model')
get_name = Model.get_name
models = cls._get_origin()
return [(None, '')] + [(m, get_name(m)) for m in models]
@classmethod
def set_code(cls, maintenance):
pool = Pool()
Config = pool.get('optical_equipment.configuration')
config = Config(2)
if config.maintenance_sequence != None:
if not maintenance.code:
try:
maintenance.code = config.maintenance_sequence.get()
maintenance.save()
except UserError:
raise UserError(str('Validation Error'))
else:
raise UserError(gettext('optical_equipment.msg_not_sequence_equipment'))
@classmethod
@ModelView.button
@Workflow.transition('in_progress')
def in_progress(cls, maintenances):
pass
@classmethod
@ModelView.button
@Workflow.transition('finished')
def finished(cls, maintenances):
pass
class Maintenance(Workflow, ModelSQL, ModelView):
'Equipment Maintenance'
@ -31,18 +149,17 @@ class Maintenance(Workflow, ModelSQL, ModelView):
], "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'))]
propietary = fields.Many2One('party.party', "Propietary",
depends=['service_maintenance'])
propietary_address = fields.Many2One('party.address', "Propietary Address",
domain=[('party', '=', Eval('propietary'))],
depends=['service_maintenance']
)
equipment = fields.Many2One('optical_equipment.equipment', "Equipment",
domain=[('state', '!=', 'draft'),
('propietary', '=', Eval('propietary'))]
)
equipment = fields.Many2One('optical_equipment.equipment', "Equipment", required=True,
domain=[('propietary', '=', Eval('propietary'))],
depends=['service_maintenance'])
#when the maintenance is in agended status
diary = fields.One2Many('optical_equipment.maintenance.diary', 'diary')
diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary')
estimated_agended = fields.DateTime("Date Maintenance")
state_agended = fields.Selection([('no_agenda', "No agenda"),
('agended', "Agended"),
@ -59,28 +176,28 @@ class Maintenance(Workflow, ModelSQL, ModelView):
clean_eyes = fields.Boolean("Limpieza de lentes y espejos")
optical = fields.Boolean("Optical")
check_calibration = fields.Boolean("Verificar Calibración")
# maintenance_activity = fields.Many2Many('optical_equipment.maintenance-product.product', 'activity', 'maintenance', "Maintenance Activitys")
maintenance_activity = fields.One2Many('optical_equipment_maintenance.activity', 'maintenance', "Maintenance Activitys")
maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines')
@classmethod
def __setup__(cls):
super(Maintenance, cls).__setup__()
cls._transitions.update({
('draft', 'agended'),
('agended', 'in_progress'),
('in_progress', 'finished')
('draft', 'finished')
})
cls._buttons.update({
'agended': {'invisible': Eval('state').in_(['agended', 'in_progress', 'finished'])},
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
'finished': {'invisible': Eval('state').in_(['draft', 'agended', 'finished'])},
})
@staticmethod
def default_company():
return Transaction().context.get('company')
@fields.depends('service_maintenance')
def on_change_service_maintenance(self):
self.propietary = self.service_maintenance.propietary
self.propietary_address = self.service_maintenance.propietary_address
@classmethod
def default_state(cls):
return 'draft'
@ -93,13 +210,6 @@ class Maintenance(Workflow, ModelSQL, ModelView):
def default_state_agended(cls):
return 'no_agenda'
@classmethod
@ModelView.button
@Workflow.transition('agended')
def agended(cls, maintenances):
pass
@classmethod
@ModelView.button
@Workflow.transition('in_progress')
@ -110,6 +220,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
@ModelView.button
@Workflow.transition('finished')
def finished(cls, maintenances):
raise UserError(str("Esto es una prueba"))
pass
@classmethod
@ -123,101 +234,107 @@ class Maintenance(Workflow, ModelSQL, ModelView):
})
]
class MaintenanceActivity(ModelView, ModelSQL):
'Maintenance Activitys'
__name__ = 'optical_equipment_maintenance.activity'
maintenance = fields.Many2One('optical_equipment.maintenance')
product = fields.Many2One('product.product', 'Product',
domain=[('maintenance_activity', '=', True)])
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 MaintenanceService(ModelSQL, ModelView):
'Equipment Maintenance Service'
__name__ = 'optical_equipment.maintenance.service'
class AssingAgended(Wizard):
'Assing Agended'
__name__ = 'optical_equipment_maintenance.assing_agended'
code = fields.Char(
"Code", select=True,states={'readonly': True })
reference = fields.Char(
"Reference", select=True,
help="The identification of an external origin.")
description = fields.Char("Description",
states={
'readonly': Eval('state') != 'draft',
})
#sale_date = fields.Function(fields.Char("Sale Date"), 'get_sale_date')
sale_origin = fields.Reference("Sale Origin", selection='get_origin', select=True,
states={'readonly': True})
company = fields.Many2One('company.company', "Company", readonly=True)
maintenance_type = fields.Selection([('preventive', 'Preventive'),
('corrective', 'Corrective')
], "Maintenance Type")
propietary = fields.Many2One('party.party', "Propietary", required=True)
propietary_address = fields.Many2One('party.address', "Propietary Address", required=True,
domain=[('party', '=', Eval('propietary'))]
)
lines = fields.One2Many('optical_equipment.maintenance', 'service_maintenance', "Lines")
estimated_agended = fields.DateTime("Date Maintenance")
state_agended = fields.Selection([('no_agenda', "No agenda"),
('agended', "Agended"),
('in_progress', "In progress"),
('finish', "Finish"),
('failed', "Failed")], "State Agenda")
technical = fields.Many2One('company.employee', "Technical")
state = fields.Selection([('draft', "Draft"),
('agended', "Agended"),
('in_progress', "In Progress"),
('failed', "Failed"),
('finished', "Finished")
], "State",required=True, readonly=True, sort=False)
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),
])
@staticmethod
def default_company():
return Transaction().context.get('company')
assing_agended = StateAction('optical_equipment.act_maintenance_service_form')
@classmethod
def default_state(self):
return 'draft'
@classmethod
def get_sale_date(self):
pass
@classmethod
def _get_origin(cls):
'Return list of Model names for origin Reference'
def do_assing_agended(self, action):
pool = Pool()
Sale = pool.get('sale.line')
Diary = pool.get('optical_equipment_maintenance.diary')
MaintenanceService = pool.get('optical_equipment.maintenance.service')
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()
return [Sale.__name__]
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.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)
@classmethod
def get_origin(cls):
Model = Pool().get('ir.model')
get_name = Model.get_name
models = cls._get_origin()
class ReAssingAgended(Wizard):
'Assing Agended'
__name__ = 'optical_equipment_maintenance.reassing_agended'
return [(None, '')] + [(m, get_name(m)) for m in models]
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),
])
@classmethod
@ModelView.button
@Workflow.transition('agended')
def agended(cls, maintenances):
pass
assing_agended = StateAction('optical_equipment.act_maintenance_service_form')
@classmethod
@ModelView.button
@Workflow.transition('in_progress')
def in_progress(cls, maintenances):
pass
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()
@classmethod
@ModelView.button
@Workflow.transition('finished')
def finished(cls, maintenances):
pass
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 MaintenanceActivity(ModelSQL):
'Maintenance - Products'
__name__ = 'optical_equipment.maintenance-product.product'
activity = fields.Many2One('product.product', "Activity", select=True)
maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", select=True)
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")
class MaintenanceLine(ModelSQL, ModelView):
'Maintenance Line'
__name__ = 'optical_equipment.maintenance.line'
@ -372,6 +489,3 @@ class CalibrationSample(sequence_ordered(), ModelView, ModelSQL):
mistake = fields.Float("Mistake")
mistake_rate = fields.Float("% Mistake")
expanded_uncertainty = fields.Float("Uncertainy Expanded")

View File

@ -33,13 +33,22 @@
<field name="type">form</field>
<field name="name">maintenance_service_form</field>
</record>
<record model="ir.ui.view" id= "maintenance_equipment_view_form">
<field name="model">optical_equipment.maintenance-optical_equipment.equipment</field>
<field name="inherit" ref="maintenance_view_form"/>
<field name="name">maintenance_equipment_form</field>
</record>
<record model="ir.ui.view" id="maintenance_activity_view_form">
<field name="model">optical_equipment_maintenance.activity</field>
<field name="type">form</field>
<field name="name">maintenance_activity_form</field>
</record>
<record model="ir.ui.view" id="maintenance_activity_view_tree">
<field name="model">optical_equipment_maintenance.activity</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
<field name="name">maintenance_activity_tree</field>
</record>
<record model="ir.action.act_window.view" id="act_maintenance_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="maintenance_view_tree"/>
@ -51,7 +60,7 @@
<field name="act_window" ref="act_maintenance_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_maintenance_form_domain_draft">
<field name="name">Draft</field>
<field name="name">Draft</field>
<field name="sequence" eval="10"/>
<field name="domain"
eval="[('state', '=', 'draft')]"
@ -107,11 +116,6 @@
<field name="string">Draft</field>
<field name="model" search="[('model', '=', 'optical_equipment.maintenance.service')]"/>
</record>
<record model="ir.model.button" id="maintenance_service_agended_button">
<field name="name">agended</field>
<field name="string">Agended</field>
<field name="model" search="[('model', '=', 'optical_equipment.maintenance.service')]"/>
</record>
<record model="ir.model.button" id="maintenance_service_in_progress_button">
<field name="name">in_progress</field>
<field name="string">In progress</field>
@ -122,6 +126,12 @@
<field name="string">Finished</field>
<field name="model" search="[('model', '=', 'optical_equipment.maintenance.service')]"/>
</record>
<record model="ir.model.button" id="maintenance_finished_button">
<field name="name">finished</field>
<field name="string">Finished</field>
<field name="model" search="[('model', '=', 'optical_equipment.maintenance')]"/>
</record>
<record model="ir.action.act_window.domain" id="act_maintenance_service_form_domain_draft">
<field name="name">Draft</field>
@ -197,7 +207,7 @@
<field name="name">maintenance_calendar</field>
</record>
<record model="ir.action.act_window" id="act_maintenance_service_calendar">
<field name="name">Agenda</field>
<field name="name">Calendar</field>
<field name="res_model">optical_equipment.maintenance.service</field>
</record>
<record model="ir.action.act_window.view"
@ -206,24 +216,49 @@
<field name="view" ref="maintenance_service_view_calendar"/>
<field name="act_window" ref="act_maintenance_service_calendar"/>
</record>
<record model="ir.action.act_window.view"
<record model="ir.action.act_window.view"
id="act_maintenance_calendar_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="maintenance_service_view_form"/>
<field name="act_window" ref="act_maintenance_service_calendar"/>
</record>
<menuitem parent="menu_equipment"
<record model="ir.ui.view" id="assing_agended_view_form">
<field name="model">optical_equipment_maintenance.agended</field>
<field name="type">form</field>
<field name="name">assing_agended_form</field>
</record>
<record model="ir.action.wizard" id="act_assing_agended">
<field name="name">Assing Agended</field>
<field name="wiz_name">optical_equipment_maintenance.assing_agended</field>
</record>
<record model="ir.ui.view" id="reassing_agended_view_form">
<field name="model">optical_equipment_maintenance.reagended</field>
<field name="type">form</field>
<field name="name">reassing_agended_form</field>
</record>
<record model="ir.action.wizard" id="act_reassing_agended">
<field name="name">ReAssing Agended</field>
<field name="wiz_name">optical_equipment_maintenance.reassing_agended</field>
</record>
<menuitem parent="menu_diary"
action="act_maintenance_service_calendar"
sequence="10"
id="menu_agenda_form"/>
<menuitem parent="menu_equipment"
action="act_maintenance_service_form"
sequence="10"
sequence="20"
id="menu_maintenance_service_form"/>
<menuitem parent="menu_maintenance_service_form"
action="act_maintenance_form"
sequence="40"
sequence="30"
id="menu_maintenance_form"/>
<menuitem parent="menu_diary"
action="act_assing_agended"
sequence="10"
id="menu_assing_agended_form"/>
<menuitem parent="menu_diary"
action="act_reassing_agended"
sequence="20"
id="menu_reassing_agended_form"/>
</data>
</tryton>

View File

@ -44,6 +44,8 @@ class Template(metaclass=PoolMeta):
'Template'
__name__ = 'product.template'
product = fields.Many2One('optical_equipment.maintenance', "Maintenance Activity",
ondelete='CASCADE', select=True)
equipment = fields.Boolean('It is equipment',
states={'invisible': Eval('type', 'goods') != 'goods',
},depends=['type']

View File

@ -42,11 +42,12 @@ class Sale(metaclass=PoolMeta):
maintenanceService = MaintenanceService(
maintenance_type='preventive',
state_agended='no_agenda',
propietary=cls.party,
propietary_address=cls.shipment_address,
propietary=sale.party,
propietary_address=sale.shipment_address,
sale_origin=line,
sale_date=sale.sale_date,
state="draft"
)
#raise UserError(str((maintenanceService)))
maintenanceService.save()
cls.agended = True
sale.save()

View File

@ -105,9 +105,7 @@ class Contract(ModelSQL, ModelView):
else:
continue
#raise UserError(str((contract[0].prorogues)))
if contract[0].contract and contract[0].prorogues == ():
#raise UserError(str(contract[0].contract))
Subscription.quote([contract[0].contract])
Subscription.run([contract[0].contract])
else:
@ -118,9 +116,7 @@ class Contract(ModelSQL, ModelView):
subscription = Subscription.search([('state', '=', 'draft'),
('id', 'in', IdProrogues)])
raise UserError(str(subscription))
#raise UserError(str(list(contract[0].prorogues)))
raise UserError(str(list(contract[0].prorogues).find(['state', '=', 'draft'])))
raise UserError(str(list(contract[0].prorogues).find(['state', '=', 'draft'])))
@classmethod

View File

@ -27,8 +27,9 @@ xml:
sale.xml
purchase.xml
uom.xml
maintenance.xml
move.xml
subscription.xml
message.xml
diary.xml
maintenance.xml

View File

@ -14,6 +14,8 @@
<field name="maintenance_type"/>
<label name="equipment"/>
<field name="equipment"/>
<label name="service_maintenance"/>
<field name="service_maintenance"/>
<notebook colspan="6">
<page string="Agended" id="agended">
<label name="estimated_agended"/>
@ -24,20 +26,8 @@
<field name="state_agended"/>
</page>
<page string="Preventive" id="preventive">
<label name="initial_operation"/>
<field name="initial_operation"/>
<label name="check_equipment"/>
<field name="check_equipment"/>
<label name="check_eletric_system"/>
<field name="check_eletric_system"/>
<label name="clean_int_ext"/>
<field name="clean_int_ext"/>
<label name="clean_eyes"/>
<field name="clean_eyes"/>
<label name="optical"/>
<field name="optical"/>
<label name="check_calibration"/>
<field name="check_calibration"/>
<field name="maintenance_activity"/>
<newline/>
</page>
<page string="Corrective" id="corrective">
<label name="maintenance_lines"/>
@ -53,7 +43,6 @@
<label name="state"/>
<field name="state"/>
<group id="button">
<button name="agended"/>
<button name="in_progress"/>
<button name="finished"/>
</group>

View File

@ -2,8 +2,6 @@
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="maintenance_type"/>
<field name="maintenance_type"/>
<label name="propietary"/>
<field name="propietary"/>
<label name="propietary_address"/>
@ -16,6 +14,10 @@
<field name="reference"/>
<label name="sale_origin"/>
<field name="sale_origin"/>
<label name="sale_date"/>
<field name="sale_date"/>
<label name="maintenance_type"/>
<field name="maintenance_type"/>
<newline/>
<notebook colspan="6">
<page string="General" id="general">
@ -29,6 +31,9 @@
<page string="Lines Of Mantenaince" id="lines_maintenance">
<field name="lines"/>
</page>
<page string="Agendes" id="agendes">
<field name="history_agended"/>
</page>
<page string="Other Info" id="other_info">
<label name="company"/>
<field name="company"/>
@ -38,7 +43,6 @@
<label name="state"/>
<field name="state"/>
<group id="button">
<button name="agended"/>
<button name="in_progress"/>
<button name="finished"/>
</group>

View File

@ -3,7 +3,12 @@
this repository contains the full copyright notices and license terms.-->
<tree>
<field name="code"/>
<field name="company"/>
<field name="sale_origin"/>
<field name="sale_date"/>
<field name="estimated_agended" widget="date"/>
<field name="estimated_agended" string="Time" widget="time"/>
<field name="technical"/>
<field name="propietary"/>
<field name="propietary_address"/>
<field name="lines" string="# Equipments"/>
</tree>

View File

@ -7,4 +7,6 @@
<field name="propietary"/>
<field name="propietary_address"/>
<field name="equipment"/>
<field name="state"/>
<button name="finished"/>
</tree>

View File

@ -6,5 +6,7 @@ this repository contains the full copyright notices and license terms. -->
<separator id="sequences" string="Sequences" colspan="4"/>
<label name="equipment_sequence"/>
<field name="equipment_sequence"/>
<label name="maintenance_sequence"/>
<field name="maintenance_sequence"/>
</form>