[摘要]总结了企业考勤软件的运作和对目前市场上多套考勤软件进行了分析后,针对企业制度的灵活性和管理需求的多样性要求进行了考勤算法实践探索。
[关键词]考勤;排班;算法;软件;人力资源;数据库
一.问题的引出
众所周知,考勤是企业的薪酬计算、业绩考核的一个依据,也是对员工工作的积极性的一个重要的评价基础,企业的考勤是人力资源管理的最重要的一环。企业特别是制造业的考勤管理制度的优越性和公平性体现了企业的活力和人性。特别是对于我国的广大制造业,他们的考勤特点有:排班随机多变、班次多、待料停工等突发事件多。
基于以上的必要性,我们认为一套好的考勤管理软件应该能有比较好的灵活性和易操作性,能为企业提供一定的考核评价参考依据。其中的核心就是能有比较好的考勤算法和思路。在此基础上我们认为IC卡考勤机或指纹考勤机作为前端打卡设备都是可取的。
在我们收集了目前市场上的多套考勤软件进行分析和操作后认为总体上的设计目标是为了实现企业的高效管理,但在实现上却缺少灵活性和通用性,在一般的商业企业有比较好的解决办法,但在制造业却有一定的缺陷性。其中一部分只能在一些商业企业使用无法满足制造业多变和灵活的需求。
我们希望在此提出一种实用可行的解决办法的探讨:如何设计一套有效的灵活的考勤结果判断思路,并通过软件的自动计算完成考勤结果计算和统计。该方法我们已经应用在《博特考勤、工资、人力资源管理软件》的考勤模块的设计上,获得较大的成功。
二.提出处理的基本功能要求
1.考勤结果的自定义
什么叫迟到,什么叫严重迟到,什么叫旷工,这些我们都可以让用户自由定义。比如上班后5分钟内叫迟到等,5~10分叫严重迟到等。
2.班次自定义
班次的数量和参数提供用户自定义。除了各种正班外,必须能支持3大类加班(平时加班、法定假加班、公休假加班)和弹性上下班(允许任意时间的上下班,只计算实际的出勤时间)。
在班次的属性中可以设置该休息时间、是否可以默认上班不打卡或下班不打卡、允许提前上班打卡和延迟下班的打卡范围。
还必须考虑提前加班(上班前就来加班)、直落加班(下班后不打卡继续加班直到加班结束离开才打卡)、正班长度(超过部分自动算入加班)等各种所需的参数。
3.个人排班管理
作为排班操作的方便性及个性化,我们建议给该功能增加一个批处理功能,只要排好其中的一个人,其他人可以采用“跟”的方式进行部分或整体的拷贝。这样能有效地提高操作人员的工作效率。
4.部门排班
作为整个部门的排班操作,该功能能为企业操作提供最大限度的方便性。是对部门或班组进行整批排班的最大优化。
5.循环排班
轮班和倒班在生产性企业中是很普遍的,该功能的目标是给操作人员有效降低手工重复操作,提高工作效率。
6.假期管理
企业员工的请假单的录入界面。
三.班次结果计算的处理方法
在我们进行了正确的排班、打卡,有了假单等一些数据后,我们便应该考虑考勤结果的计算产生流程。
1.打卡点的判断
跨天的处理,在搜寻打卡点的过程中我们必须考虑跨天的问题,因为在企业中跨天(凌晨0点)的夜班是很正常的。如果不能实现跨天的计算问题,那么设计出来的软件也不能满足我们设计的目标即灵活性和适应性的要求。同时我们还必须考虑打卡的时间落在休息段之间的处理。
(1.)上班点的获取
我们原则上是取第一次有效的打卡点,即从应上班点开始向前搜索至该班次的有效打卡参数控制范围内出现的第一次打卡点。如果在该时间范围内无打卡点,应自动向后回溯到从应上班后至应下班为止的的第一次出现打卡点。如果无打卡点则可以判断为旷工。
(2.)下班点的获取
我们原则上是取下班后的第一次有效的打卡点,即从应下班点开始向后搜索至该班次的有效打卡参数控制范围内出现的第一次打卡点。如果在该时间范围内无打卡点,应自动向前回溯到从应下班至应上班为止的的第一次出现打卡点。如果无打卡点则可以判断为旷工。
2.假期的处理
在假期的处理中我们仍然必须考虑跨天的问题,同时必须考虑各种可能,比如,请假时间落在休息段内的处理,请假始结时间与打卡时间之间的关系处理等。
(1.)班前、班后请假
班前请假:请假时间从应上班开始,以请假结束时间为准,在请假结束时刻或前如果无打卡时间则应把缺勤的时间标记出来。
班后请假:请假时间从应下班前开始,以请假开始时间为准,在请假开始时刻或后如果无打卡时间则应把缺勤的时间标记出来。
(2.)班次中间请假
该类请假,直接从出勤时间中扣除请假时间长度,并标识出来。
(3.)长期请假
以整个假单为准覆盖整个班次,比较多见的多天的请假,比如婚假、生育假等。
3.考勤结果的判断
从以上整理资料看我们基本上可以在此根据考勤规律的定义生成考勤结果,通过时间长度来判断上下班是正常还是异常(迟到、早退、旷工等各种定义的项目)。
4.班次出勤时间的计算
(1.)长度计算
原则上以班次长度除去缺勤(包含各种假期)的部分时间后我们就能得到实际的上班长度,但实际上我们还必须根据班次代码的定义扣除各种休息时间以及其他各种定义比如正班长度的设置等,其中最重要的是必须考虑提前加班和直落加班的计算等。
(2.)取整的计算
作为企业不一定就将实际的出勤时间作为员工在岗时间,一般会以30分钟活60分钟作为计算单位,我们还必须考考勤结果数据的取舍问题。
根据经验,一般是正班计算单位长度和加班的计算单位长度是不一样的(比如以30分钟或15分钟),我们应允许用户自定义。
四.取得的效果
1.高效率
我们将《博特考勤》在一些企业中运用的表现来看,初期系统导入阶段操作人员工作量比较大,因为他们必须熟悉各种班次并结合生产的需要设置定义参数,当然该工作必须有生产部门的配合和支持。
在系统正常运行后,基本上按照3000人的企业生成一个星期大约为36000条考勤记录、60000条考勤数据的计算来看大约在3~20分钟,这主要决定于后台服务器的性能、本机的性能以及网络的速度等,CPU花费的时间主要集中在打卡点的判断上。
2.数据准确
从生成的结果来看都符合我们的设计目标。能有效分辨出迟到、早退、旷工、以及各种假期,准确计算各人各个班次的出勤情况。
但由于在操作过程中难免有操作人员的操作失误(比如排错班、输错了请假单)引起的考勤异常。我们建议设计一些异常分析表,针对异常结果数据进行处理,这样就能帮助操作人员在较快的时间内人工检查到问题的原因。
五.总结
以上我们提供的不是整套考勤软件的设计方法,仅仅希望在考勤结果的计算上提供一种参考思路,在实际的考勤软件设计时候还必须考虑多种其他问题,比如报表、统计分析、方便的查询以及权限及控制管理(为不同的操作员分配不同的数据操作范围和权限)。