# 请假单
class qingjiadan(models.Model):
WORKFLOW_STATE_SELECTION = [
('draft', '草稿'),
('confirm', '待人力资源部审批'),
('reject', '人力资源部不通过'),
('complete', '审批通过')
]
_name = 'bumen.qingjiadan'
name = fields.Many2one('bumen.yuangong',string="申请人",readonly=True)
days = fields.Integer(string="天数",required = True,help = "天数只能是整数",states={'draft': [('readonly', False)]},readonly=True)
startdate = fields.Date(string="开始日期",required = True,states={'draft': [('readonly', False)]},readonly=True)
reason = fields.Text(string="请假事由",default="",required = True,states={'draft': [('readonly', False)]},readonly=True)
state = fields.Selection(WORKFLOW_STATE_SELECTION, default='draft', string='状态',readonly=True)
@api.constrains('days','startdate','reason')
def _check_something(self):
for record in self:
# 当前时间
currentDate = int(time.strftime("%Y%m%d", time.localtime()))
# 选择的开始时间
date = int(record.startdate[0:4] + record.startdate[5:7] + record.startdate[8:10])
if record.days < 0 or record.days == 0:
raise ValidationError("天数不能小于等于0")
if date < currentDate:
raise ValidationError("开始日期不能早于当前时间")
@api.multi
def do_confirm(self):
self.state = 'confirm'
# 申请人只能填当前账户的用户名
bianzhi = self.env['bumen.yuangong'].search([('name', '=', self.env.uid)], limit=1)
for r in self:
r.write({'name': bianzhi.id})
return True
@api.multi
def do_reject(self):
self.state = 'reject'
return True
@api.multi
def do_complete(self):
self.state = 'complete'
return True
请假单列表
bumen.qingjiadan
请假单详情
bumen.qingjiadan
搜索视图
bumen.qingjiadan
普通员工只能看到自己的请假单
[('create_uid','=',user.id)]
人力资源部可以看到所有请假单
[(1,'=',1)]
请假单工作流
bumen.qingjiadan
True
草稿
dummy
True
待审核
function
do_confirm()
待审核
function
do_reject()
已完成
function
do_complete()
button_confirm_one
button_reject_one
button_complete_one