GoodERP
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

58 lines
2.1KB

  1. # Copyright 2016 上海开阖软件有限公司 (http://www.osbzr.com)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo import api, fields, models
  4. from odoo.exceptions import UserError
  5. import datetime
  6. # 请假单确认状态可选值
  7. LEAVE_STATES = [
  8. ('draft', '未确认'),
  9. ('done', '已确认'), ]
  10. class StaffLeave(models.Model):
  11. _name = 'staff.leave'
  12. _description = '请假单'
  13. _inherit = ['mail.thread']
  14. name = fields.Text(string='请假缘由')
  15. user_id = fields.Many2one('res.users',
  16. string='请假人',
  17. default=lambda self: self.env.uid,
  18. )
  19. date_start = fields.Datetime(string='离开时间')
  20. date_stop = fields.Datetime(string='回来时间')
  21. leave_type = fields.Selection([('no_pay', '无薪'), ('with_pay', '带薪'),
  22. ('compensation_day', '补偿日数'), ('sick_leave', '病假')],
  23. required=True, string='准假类型')
  24. leave_dates = fields.Float('请假天数')
  25. state = fields.Selection(LEAVE_STATES, '状态', readonly=True,
  26. help="请假单的状态", index=True, copy=False,
  27. tracking=True,
  28. default='draft')
  29. company_id = fields.Many2one(
  30. 'res.company',
  31. string='公司',
  32. change_default=True,
  33. default=lambda self: self.env.company)
  34. def leave_done(self):
  35. '''确认请假单'''
  36. for l in self:
  37. if l.state == 'done':
  38. raise UserError('请不要重复确认!')
  39. l.state = 'done'
  40. def leave_draft(self):
  41. '''撤销确认请假单'''
  42. for l in self:
  43. if l.state == 'draft':
  44. raise UserError('请不要重复撤销 %s' % self._description)
  45. l.state = 'draft'
  46. @api.constrains('leave_dates')
  47. def check_leave_dates(self):
  48. for l in self:
  49. if l.leave_dates <= 0:
  50. raise UserError('请假天数不能小于或等于零')
上海开阖软件有限公司 沪ICP备12045867号-1