GoodERP
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

65 lines
2.2KB

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