lims_device_maintenance: refactor the wizard to generate calendar
This commit is contained in:
parent
dfedaadb3e
commit
c98a6d3887
|
@ -46,6 +46,16 @@ msgctxt "field:lims.lab.device.maintenance.generate.start,end_date:"
|
|||
msgid "End Date"
|
||||
msgstr "Fecha de finalización"
|
||||
|
||||
msgctxt ""
|
||||
"field:lims.lab.device.maintenance.generate.start,maintenance_program:"
|
||||
msgid "Maintenance Program"
|
||||
msgstr "Programa de mantenimiento"
|
||||
|
||||
msgctxt ""
|
||||
"field:lims.lab.device.maintenance.generate.start,maintenance_program_domain:"
|
||||
msgid "Maintenance Program domain"
|
||||
msgstr "Dominio para Programa de mantenimiento"
|
||||
|
||||
msgctxt "field:lims.lab.device.maintenance.generate.start,maintenances:"
|
||||
msgid "Maintenances"
|
||||
msgstr "Mantenimientos"
|
||||
|
@ -190,10 +200,6 @@ msgctxt "selection:lims.lab.device.maintenance.program,frequency:"
|
|||
msgid "Yearly"
|
||||
msgstr "Anual"
|
||||
|
||||
msgctxt "view:lims.lab.device.maintenance.program:"
|
||||
msgid "Generate Calendar"
|
||||
msgstr "Generar Calendario"
|
||||
|
||||
msgctxt "view:lims.lab.device.maintenance:"
|
||||
msgid "Comments"
|
||||
msgstr "Observaciones"
|
||||
|
|
|
@ -60,13 +60,6 @@ class LabDeviceMaintenanceProgram(ModelSQL, ModelView):
|
|||
latest_date = fields.Function(fields.Date('Latest scheduled date'),
|
||||
'get_latest_date')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LabDeviceMaintenanceProgram, cls).__setup__()
|
||||
cls._buttons.update({
|
||||
'generate_maintenance': {},
|
||||
})
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return '%s - %s' % (self.activity.rec_name, self.device.description)
|
||||
|
||||
|
@ -84,12 +77,6 @@ class LabDeviceMaintenanceProgram(ModelSQL, ModelView):
|
|||
latest_maintenance[0].date or None)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action(
|
||||
'lims_device_maintenance.wizard_device_generate_maintenance_calendar')
|
||||
def generate_maintenance(cls, programs):
|
||||
pass
|
||||
|
||||
|
||||
class LabDeviceMaintenance(Workflow, ModelSQL, ModelView):
|
||||
'Device Maintenance Calendar'
|
||||
|
@ -209,6 +196,14 @@ class LabDeviceGenerateMaintenanceStart(ModelView):
|
|||
|
||||
start_date = fields.Date('Start Date', required=True)
|
||||
end_date = fields.Date('End Date', required=True)
|
||||
maintenance_program = fields.Many2Many(
|
||||
'lims.lab.device.maintenance.program', None, None,
|
||||
'Maintenance Program', required=True,
|
||||
domain=[('id', 'in', Eval('maintenance_program_domain'))],
|
||||
depends=['maintenance_program_domain'])
|
||||
maintenance_program_domain = fields.One2Many(
|
||||
'lims.lab.device.maintenance.program',
|
||||
None, 'Maintenance Program domain')
|
||||
maintenances = fields.One2Many('lims.lab.device.maintenance',
|
||||
None, 'Maintenances')
|
||||
|
||||
|
@ -225,23 +220,41 @@ class LabDeviceGenerateMaintenance(Wizard):
|
|||
])
|
||||
generate = StateTransition()
|
||||
open = StateAction(
|
||||
'lims_device_maintenance.act_lab_device_maintenance_calendar_list')
|
||||
'lims_device_maintenance.act_lab_device_maintenance_calendar_related')
|
||||
|
||||
def default_start(self, fields):
|
||||
Date = Pool().get('ir.date')
|
||||
today = Date.today()
|
||||
return {
|
||||
'start_date': today,
|
||||
'end_date': today,
|
||||
}
|
||||
|
||||
def transition_generate(self):
|
||||
pool = Pool()
|
||||
MaintenanceProgram = pool.get('lims.lab.device.maintenance.program')
|
||||
Maintenance = pool.get('lims.lab.device.maintenance')
|
||||
Date = pool.get('ir.date')
|
||||
|
||||
program = MaintenanceProgram(Transaction().context['active_id'])
|
||||
device_id = Transaction().context['active_id']
|
||||
programs = MaintenanceProgram.search([
|
||||
('device', '=', device_id),
|
||||
])
|
||||
today = Date.today()
|
||||
defaults = {
|
||||
'start_date': today,
|
||||
'end_date': today,
|
||||
'maintenance_program_domain': [p.id for p in programs],
|
||||
}
|
||||
return defaults
|
||||
|
||||
def transition_generate(self):
|
||||
Maintenance = Pool().get('lims.lab.device.maintenance')
|
||||
|
||||
new_maintenances = []
|
||||
for program in self.start.maintenance_program:
|
||||
new_maintenances.extend(self._get_new_maintenances(program))
|
||||
|
||||
maintenances = Maintenance.create(new_maintenances)
|
||||
if maintenances:
|
||||
Maintenance.pending(maintenances)
|
||||
self.start.maintenances = maintenances
|
||||
return 'open'
|
||||
|
||||
return 'end'
|
||||
|
||||
def _get_new_maintenances(self, program):
|
||||
new_maintenances = []
|
||||
for date in self._get_dates(self.start.start_date,
|
||||
program.frequency, self.start.end_date):
|
||||
|
@ -257,13 +270,7 @@ class LabDeviceGenerateMaintenance(Wizard):
|
|||
maintenance['notice_date'] = (date +
|
||||
relativedelta.relativedelta(days=-program.notice_days))
|
||||
new_maintenances.append(maintenance)
|
||||
|
||||
maintenances = Maintenance.create(new_maintenances)
|
||||
if maintenances:
|
||||
Maintenance.pending(maintenances)
|
||||
self.start.maintenances = maintenances
|
||||
return 'open'
|
||||
return 'end'
|
||||
return new_maintenances
|
||||
|
||||
def _get_dates(self, start_date, frequency, end_date):
|
||||
dates = []
|
||||
|
|
|
@ -101,13 +101,6 @@
|
|||
<field name="name">lab_device_maintenance_program_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Device Maintenance Program Buttons -->
|
||||
|
||||
<record model="ir.model.button" id="device_maintenance_program_generate_maintenance_button">
|
||||
<field name="name">generate_maintenance</field>
|
||||
<field name="model" search="[('model', '=', 'lims.lab.device.maintenance.program')]"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Generate Device Maintenance Calendar -->
|
||||
|
||||
<record model="ir.ui.view"
|
||||
|
@ -120,6 +113,11 @@
|
|||
<field name="name">Generate Maintenance Calendar</field>
|
||||
<field name="wiz_name">lims.lab.device.maintenance.generate</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="wizard_device_generate_maintenance_calendar_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.lab.device,-1</field>
|
||||
<field name="action" ref="wizard_device_generate_maintenance_calendar"/>
|
||||
</record>
|
||||
|
||||
<!-- Device Maintenance Calendar -->
|
||||
|
||||
|
|
|
@ -4,4 +4,5 @@
|
|||
<field name="start_date"/>
|
||||
<label name="end_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="maintenance_program" colspan="4"/>
|
||||
</form>
|
||||
|
|
|
@ -14,6 +14,4 @@
|
|||
<label name="latest_date"/>
|
||||
<field name="latest_date"/>
|
||||
</group>
|
||||
<button name="generate_maintenance" colspan="4"
|
||||
string="Generate Calendar"/>
|
||||
</form>
|
||||
|
|
|
@ -5,5 +5,4 @@
|
|||
<field name="responsible"/>
|
||||
<field name="notice_days"/>
|
||||
<field name="latest_date"/>
|
||||
<button name="generate_maintenance" string="Generate Calendar"/>
|
||||
</tree>
|
||||
|
|
Loading…
Reference in New Issue