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.

83 lines
3.6 KiB

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