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.

59 lines
2.6 KiB

  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api, _
  3. from openerp.exceptions import ValidationError
  4. class CooperativeStatus(models.Model):
  5. _name = 'cooperative.status'
  6. _rec_name = 'cooperator_id'
  7. cooperator_id = fields.Many2one('res.partner')
  8. info_session = fields.Boolean('Information Session ?')
  9. info_session_date = fields.Datetime('Information Session Date')
  10. super = fields.Boolean("Super Cooperative")
  11. sr = fields.Integer("Compteur shift regulier")
  12. sc = fields.Integer("Compteur shift de compensation")
  13. time_holiday = fields.Integer("Holidays Days NB", default=0)
  14. time_extension = fields.Integer("Extension Days NB", default=0) #Durée initial par défault sur ir_config_parameter
  15. holiday_start_time = fields.Date("Holidays Start Day")
  16. alert_start_time = fields.Date("Alert Start Day")
  17. extension_start_time = fields.Date("Extension Start Day")
  18. #Champ compute
  19. status = fields.Selection([('ok', 'Up to Date'), ('holiday', 'Holidays'), ('alert', 'Alerte'), ('unsubscribed', 'Unsubscribed')], compute="_compute_status", string="Cooperative Status")
  20. working_mode = fields.Selection(
  21. [
  22. ('regular', 'Regular worker'),
  23. ('irregular', 'Irregular worker'),
  24. ('exempt', 'Exempted'),
  25. ],
  26. string="Working mode",
  27. )
  28. def _compute_status(self):
  29. for rec in self:
  30. rec.status = 'ok'
  31. _sql_constraints = [
  32. ('cooperator_uniq', 'unique (cooperator_id)', _('You can only set one cooperator status per cooperator')),
  33. ]
  34. class ResPartner(models.Model):
  35. _inherit = 'res.partner'
  36. cooperative_status_ids = fields.One2many('cooperative.status', 'cooperator_id', readonly=True)
  37. super = fields.Boolean(related='cooperative_status_ids.super', string="Super Cooperative", readonly=True, store=True)
  38. info_session = fields.Boolean(related='cooperative_status_ids.info_session', string='Information Session ?', readonly=True, store=True)
  39. info_session_date = fields.Datetime(related='cooperative_status_ids.info_session_date', string='Information Session Date', readonly=True, store=True)
  40. working_mode = fields.Selection(related='cooperative_status_ids.working_mode', readonly=True, store=True)
  41. @api.multi
  42. def coop_subscribe(self):
  43. return {
  44. 'name': _('Subscribe Cooperator'),
  45. 'type': 'ir.actions.act_window',
  46. 'view_type': 'form',
  47. 'view_mode': 'form',
  48. 'res_model': 'beesdoo.shift.subscribe',
  49. 'target': 'new',
  50. }
  51. #TODO access right + vue on res.partner