GoodERP
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

63 行
2.2KB

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