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

  1. # -*- coding: utf-8 -*-
  2. '''
  3. Created on 2 janv. 2017
  4. @author: Thibault Francois
  5. '''
  6. from openerp import models, fields, api, _
  7. class GenerateShiftTemplate(models.TransientModel):
  8. _name = 'beesddoo.shift.generate_shift_template'
  9. day_ids = fields.Many2many('beesdoo.shift.daynumber', relation='template_gen_day_number_rel', column1='wizard_id', column2='day_id')
  10. planning_id = fields.Many2one('beesdoo.shift.planning', required=True)
  11. type_id = fields.Many2one('beesdoo.shift.type', default=lambda self: self._context.get('active_id'))
  12. line_ids = fields.One2many('beesddoo.shift.generate_shift_template.line', 'wizard_id')
  13. @api.multi
  14. def generate(self):
  15. self.ensure_one()
  16. ids = []
  17. for day in self.day_ids:
  18. for line in self.line_ids:
  19. shift_template_data = {
  20. 'name': '%s' % self.type_id.name,
  21. 'planning_id': self.planning_id.id,
  22. 'task_type_id': self.type_id.id,
  23. 'day_nb_id': day.id,
  24. 'start_time': line.start_time,
  25. 'end_time': line.end_time,
  26. 'duration': line.end_time - line.start_time,
  27. 'worker_nb': line.worker_nb,
  28. }
  29. new_rec = self.env['beesdoo.shift.template'].create(shift_template_data)
  30. ids.append(new_rec.id)
  31. return {
  32. 'name': _('Generated Shift Template'),
  33. 'type': 'ir.actions.act_window',
  34. 'view_type': 'form',
  35. 'view_mode': 'kanban,tree,form',
  36. 'res_model': 'beesdoo.shift.template',
  37. 'target': 'current',
  38. 'domain': [('id', 'in', ids)],
  39. 'context': {'group_by': 'day_nb_id'},
  40. }
  41. class GenerateShiftTemplateLine(models.TransientModel):
  42. _name = 'beesddoo.shift.generate_shift_template.line'
  43. wizard_id = fields.Many2one('beesddoo.shift.generate_shift_template')
  44. start_time = fields.Float(required=True)
  45. end_time = fields.Float(required=True)
  46. worker_nb = fields.Integer(default=1)