You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.0 KiB
52 lines
2.0 KiB
'''
|
|
Created on 2 janv. 2017
|
|
|
|
@author: Thibault Francois
|
|
'''
|
|
|
|
from odoo import models, fields, api, _
|
|
|
|
class GenerateShiftTemplate(models.TransientModel):
|
|
_name = 'beesddoo.shift.generate_shift_template'
|
|
|
|
day_ids = fields.Many2many('beesdoo.shift.daynumber', relation='template_gen_day_number_rel', column1='wizard_id', column2='day_id')
|
|
planning_id = fields.Many2one('beesdoo.shift.planning', required=True)
|
|
type_id = fields.Many2one('beesdoo.shift.type', default=lambda self: self._context.get('active_id'))
|
|
line_ids = fields.One2many('beesddoo.shift.generate_shift_template.line', 'wizard_id')
|
|
|
|
@api.multi
|
|
def generate(self):
|
|
self.ensure_one()
|
|
ids = []
|
|
for day in self.day_ids:
|
|
for line in self.line_ids:
|
|
shift_template_data = {
|
|
'name': '%s' % self.type_id.name,
|
|
'planning_id': self.planning_id.id,
|
|
'task_type_id': self.type_id.id,
|
|
'day_nb_id': day.id,
|
|
'start_time': line.start_time,
|
|
'end_time': line.end_time,
|
|
'duration': line.end_time - line.start_time,
|
|
'worker_nb': line.worker_nb,
|
|
}
|
|
new_rec = self.env['beesdoo.shift.template'].create(shift_template_data)
|
|
ids.append(new_rec.id)
|
|
return {
|
|
'name': _('Generated Shift Template'),
|
|
'type': 'ir.actions.act_window',
|
|
'view_type': 'form',
|
|
'view_mode': 'kanban,tree,form',
|
|
'res_model': 'beesdoo.shift.template',
|
|
'target': 'current',
|
|
'domain': [('id', 'in', ids)],
|
|
'context': {'group_by': 'day_nb_id'},
|
|
}
|
|
|
|
class GenerateShiftTemplateLine(models.TransientModel):
|
|
_name = 'beesddoo.shift.generate_shift_template.line'
|
|
|
|
wizard_id = fields.Many2one('beesddoo.shift.generate_shift_template')
|
|
start_time = fields.Float(required=True)
|
|
end_time = fields.Float(required=True)
|
|
worker_nb = fields.Integer(default=1)
|