diff --git a/beesdoo_shift/data/stage.xml b/beesdoo_shift/data/stage.xml
index 73fcc0c..b4d69ed 100644
--- a/beesdoo_shift/data/stage.xml
+++ b/beesdoo_shift/data/stage.xml
@@ -31,13 +31,13 @@
Excused - Absolute Necessity
- 6
+ 7
4
excused_necessity
Cancelled
- 7
+ 8
8
cancel
diff --git a/beesdoo_shift/models/cooperative_status.py b/beesdoo_shift/models/cooperative_status.py
index 6c9fe58..886e306 100644
--- a/beesdoo_shift/models/cooperative_status.py
+++ b/beesdoo_shift/models/cooperative_status.py
@@ -32,7 +32,7 @@ class CooperativeStatus(models.Model):
_order = 'cooperator_id'
- today = fields.Date(help="Field that allow to compute field and store them even if they are based on the current date")
+ today = fields.Date(help="Field that allow to compute field and store them even if they are based on the current date", default=fields.Date.today)
cooperator_id = fields.Many2one('res.partner')
info_session = fields.Boolean('Information Session ?')
info_session_date = fields.Datetime('Information Session Date')
diff --git a/beesdoo_shift/models/task.py b/beesdoo_shift/models/task.py
index 41a16d2..9deb853 100644
--- a/beesdoo_shift/models/task.py
+++ b/beesdoo_shift/models/task.py
@@ -31,7 +31,7 @@ class Task(models.Model):
worker_id = fields.Many2one('res.partner', track_visibility='onchange', domain=[('eater', '=', 'worker_eater')])
start_time = fields.Datetime(track_visibility='always')
end_time = fields.Datetime(track_visibility='always')
- stage_id = fields.Many2one('beesdoo.shift.stage', required=True, track_visibility='onchange')
+ stage_id = fields.Many2one('beesdoo.shift.stage', required=True, track_visibility='onchange', default=lambda self: self.env.ref('beesdoo_shift.open'))
super_coop_id = fields.Many2one('res.users', string="Super Cooperative", domain=[('partner_id.super', '=', True)], track_visibility='onchange')
color = fields.Integer(related="stage_id.color", readonly=True)
is_regular = fields.Boolean(default=False)
@@ -59,14 +59,20 @@ class Task(models.Model):
#TODO button to replaced someone
@api.model
- def unsubscribe_from_today(self, worker_ids, today=None):
+ def unsubscribe_from_today(self, worker_ids, today=None, end_date=None):
today = today or fields.Date.today()
- today = today + ' 00:00:00'
- to_unsubscribe = self.search([('worker_id', 'in', worker_ids), ('start_time', '>=', today)])
+ today += ' 00:00:00'
+ if end_date:
+ end_date += ' 23:59:59'
+ date_domain = [('worker_id', 'in', worker_ids), ('start_time', '>=', today)]
+ if end_date:
+ date_domain.append(('end_time', '<=', end_date))
+ to_unsubscribe = self.search([('worker_id', 'in', worker_ids)] + date_domain)
+
to_unsubscribe.write({'worker_id': False, 'is_regular': False})
#What about replacement ?
#Remove worker, replaced_id and regular
- to_unsubscribe_replace = self.search([('replaced_id', 'in', worker_ids), ('start_time', '>=', today)])
+ to_unsubscribe_replace = self.search([('replaced_id', 'in', worker_ids)] + date_domain)
to_unsubscribe_replace.write({'worker_id': False, 'is_regular': False, 'replaced_id': False})
@api.multi
diff --git a/beesdoo_shift/wizard/holiday.py b/beesdoo_shift/wizard/holiday.py
index f6634b4..36a2e5b 100644
--- a/beesdoo_shift/wizard/holiday.py
+++ b/beesdoo_shift/wizard/holiday.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from openerp import models, fields, api, _
+from openerp.exceptions import ValidationError
class Subscribe(models.TransientModel):
_name = 'beesdoo.shift.holiday'
@@ -12,4 +13,7 @@ class Subscribe(models.TransientModel):
def holidays(self):
self = self._check() #maybe a different group
status_id = self.env['cooperative.status'].search([('cooperator_id', '=', self.cooperator_id.id)])
+ if status_id.holiday_end_time >= status_id.today:
+ raise ValidationError(_("You cannot encode new holidays since the previous holidays encoded are not over yet"))
status_id.sudo().write({'holiday_start_time': self.holiday_start_day, 'holiday_end_time': self.holiday_end_day})
+ self.env['beesdoo.shift.shift'].sudo().unsubscribe_from_today([self.cooperator_id.id], today=self.holiday_start_day, end_date=self.holiday_end_day)