如何限制年假请假天数?
1. 简介
1.1 案例简介
通过本案例,可以实现对企业成员年假天数的限制。当请年假的时长超出规定的年假天数后,将无法申请休年假。
1.2 使用场景
员工的年假每年都是固定的,当请年假时长超过年假天数后就要请事假或者其他类型的假,那么在请年假的时候就需要限制员工的请年假天数,但是若是请病假或事假或其他假期类别的时候是不需要限制的。
1.3 设计思路
1)设计一个员工基础数据表,录入每位员工的基础数据,包括入职时间、年假天数等数据。
2)再创建一个请假流程表,可以选择请年假、事假、病假等不同类型的假,并记录每次请假天数。
3)通过聚合表计算剩余年假天数,在请假流程表中进行调用,用于校验请假时长是否超出年假天数。
2. 设置步骤
点击安装 限制年假请假天数 示例模板,本文将按照模板中的示例数据进行讲解。安装后,若要体验使用模板,需在应用后台处重新保存聚合表设置。
2.1 员工基础数据表
新建一张员工基础数据表。为了更好的演示数据,我们将成员字段做了文本提取,实际业务中,可以去除文本的成员数据的录入。如下图所示:
假设年假规则为每年1月1日自动刷新,第一年 5 天年假,后续每增加一年,在 5 天的基础之上,年假加一天。那么。年假天数的公式如下:
IF(YEAR(TODAY())-YEAR(入职时间)==0,5,YEAR(TODAY())-YEAR(入职时间)+5)
表单设计好以后,录入员工年假基础数据:
2.2 员工请假申请表
再建立一张员工请假申请的流程表单,在表单中通过员工选择的请假类别以及审核意见来返回出实际请假的年假天数。
剩余年假天数:查询字段,根据年份和员工姓名,查询聚合表中的剩余年假天数。
实际请假天数:
IF(AND(请假类别=="年假",是否通过=="是"),请假时长,0)
是否通过为流程负责人需要填写的数据,默认值设置为「是」;
实际请假时长根据是否通过来判定:IF(AND(请假类型=="年假",是否通过=="是"),请假时长,0)。
表单属性的不可见字段赋值设置为始终重新计算:
这一步的目的是确保只要提交请假审批流程,无论负责人是否审批,都先占用请假的年假天数,避免在未审核的情况下,提交了超出剩余年假天数的请假流程。
待流程审批通过后,会根据实际审核情况计算剩余年假天数。
2.3 流程设定
在流程设定处,设计需要审批数据的流程,审批节点的负责人需要填写是否通过年假审批申请:
2.4 聚合表设置
1)新建聚合表
在应用后台添加一个聚合表:
2)设置数据来源
对聚合表重命名,数据来源选择多表关联,勾选刚刚新建的两张表单:
关联字段为年假周期、员工姓名:
3)行表头
设置行表头为刚刚关联后的字段,并对字段重命名:
4)计算指标
计算指标为剩余年假天数。
剩余年假天数=年假天数—实际年假请假时长。
5)聚合表校验
设置提交校验,当剩余年假不足时不允许提交:
2.5 表单关联剩余年假天数
访问「员工请假申请表」,编辑表单,在「剩余年假天数」字段处设置数据联动,联动聚合表中的剩余年假天数:
数据联动具体设置如下:
2.6 效果演示
1)提交请假申请:
由下图可以看出,当请假为年假时,会查询出聚合表中该员工剩余的年假天数:
2)审核请假
当员工提交数据后,负责人审批通过为“是”时,则本次请假消耗的年假天数为计算出的请假天数;当负责人审批通过为“否”时或者申请时的类别选择的为其他类别的年假时,则不消耗年假。
3)聚合校验
当本次请年假天数大于聚合表中的年假剩余天数,则流程负责人无法选择“是”并提交流程数据。
3. 扩展知识
当进入新的年假周期,需要刷新年假时,可以通过公式批量修改年假周期及年假天数。
3.1 刷新年假周期
在新的一年到来后,通过公式刷新年假周期为新年假周期:
YEAR(TODAY())
3.2 刷新年假天数
年假天数也可以通过下列公式进行刷新:
IF(YEAR(TODAY())-YEAR(入职时间)==0,5,YEAR(TODAY())-YEAR(入职时间)+5)