wiz_calculate_workable_festive.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # -*- coding: utf-8 -*-
  2. # (c) 2016 Alfredo de la Fuente - AvanzOSC
  3. # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
  4. from openerp import models, fields, api, exceptions, _
  5. class WizCalculateWorkableFestive(models.TransientModel):
  6. _name = 'wiz.calculate.workable.festive'
  7. _description = 'Wizard for calculate workables and festives'
  8. year = fields.Integer(
  9. string='Employee calendar year', size=4, required=True)
  10. @api.model
  11. def default_get(self, var_fields):
  12. partner_calendar_obj = self.env['res.partner.calendar']
  13. res = super(WizCalculateWorkableFestive, self).default_get(var_fields)
  14. contract = self.env['hr.contract'].browse(
  15. self.env.context['active_id'])
  16. year_begin = fields.Datetime.from_string(contract.date_start).year
  17. cond = [('partner', '=', contract.partner.id),
  18. ('year', '=', year_begin)]
  19. calendar = partner_calendar_obj.search(cond, limit=1)
  20. if not calendar:
  21. res.update({'year': year_begin})
  22. else:
  23. if contract.date_end:
  24. year_end = fields.Datetime.from_string(contract.date_end).year
  25. if year_begin == year_end:
  26. res.update({'year': year_begin})
  27. return res
  28. @api.multi
  29. def button_calculate_workables_and_festives(self):
  30. self.ensure_one()
  31. contract = self.env['hr.contract'].browse(
  32. self.env.context['active_id'])
  33. date_begin = fields.Date.from_string(contract.date_start)
  34. if self.year < date_begin.year:
  35. raise exceptions.Warning(
  36. _('Year introduced less than year contract beginning'))
  37. if contract.date_end:
  38. date_end = fields.Datetime.from_string(contract.date_end)
  39. if self.year > date_end.year:
  40. raise exceptions.Warning(
  41. _('Year introduced more than year end contract'))
  42. contract._generate_calendar_from_wizard(self.year)