1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: utf-8 -*-
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields, api
from dateutil.relativedelta import relativedelta
class ShiftExtension(models.Model):
_name = 'shift.extension'
_order = 'date_start, partner_id'
name = fields.Char(string='Name', readonly=True)
partner_id = fields.Many2one(
string='Partner', comodel_name='res.partner', required=True)
type_id = fields.Many2one(
string='Type', comodel_name='shift.extension.type', required=True)
date_start = fields.Date(string='Begin Date', required=True)
date_stop = fields.Date(string='End Date', required=True)
@api.model
def create(self, vals):
vals['name'] = self.env['ir.sequence'].next_by_code('shift.extension')
return super(ShiftExtension, self).create(vals)
@api.multi
@api.onchange('type_id', 'date_start')
def onchange_type_id(self):
for extension in self:
if extension.type_id and extension.type_id.duration\
and extension.date_start:
date_start = fields.Date.from_string(extension.date_start)
extension.date_stop = date_start +\
relativedelta(days=extension.type_id.duration)
@api.model
def default_get(self, field_list):
'''
Get default type for case that's from smart button partner (Ext)
'''
default_type = self._context.get('default_type', False)
res = super(ShiftExtension, self).default_get(field_list)
if default_type == 'extension':
extension_type = self.env['shift.extension.type'].search([
('extension_method', '=', 'to_next_regular_shift')
])
if extension_type:
res.update({
'type_id': extension_type[0].id,
'date_start': fields.Date.context_today(self)
})
self.onchange_type_id()
return res