您的位置:首页 > 其它

考勤处理脚本

2015-07-05 15:59 375 查看
int init_win()
{
return 1;
};

int load_ext()
{
//显示记录时执行
//
return 1;
};

int show_row_ext()
{
dbg('------------------------------------------');
dbg('开始: ' + emp_name + ' 的 ' + class_date_fmt + ' 的考勤检查');

//如果是请假的话,设置统计天数为1
if (process_result == 'E') {
n2 = 1;
return 1;
}

//如果是出差的话,设置统计天数为1
if (process_result == 'F') {
n2 = 1;
return 1;
}

if (note_info != '') {
dbg('当天已处理过 | 当天由系统自动处理,停止检查');
dbg('备注信息:' + note_info + ' . 打卡记录:' + on_time + '. 出勤天数: ' + n2);
return 1;
}

string ss1;
int not_find;
not_find = -1;

//显示每一条记录时执行
//一共10个刷卡点,其中0为后勤点,1、3、9为午班刷卡点,2、4、5、6、7、8为野外刷卡点
//考勤地点:A、后勤区 | B 午班区 | C 野外区
//n1 打卡地点-打卡班次 n2 打卡天数
//得到员工当天的打卡记录

//提前和推迟的小时数
int time_dq_hour,time_tc_hour;
time_dq_hour = 0; //不得大于野外标准开始小时数
time_tc_hour = 0; //标准小时数 + 推迟 不得大于24

num rec_day; //打卡天数
rec_day = 0;

//野外的开始和结束标准时间
int time_yw_beg,time_yw_end;
time_yw_beg = 7 - time_dq_hour;
time_yw_end = 19 + time_tc_hour;

//后勤上午开始结束时间
int time_hq_s_beg,time_hq_s_end;
time_hq_s_beg = 8 - time_dq_hour;
time_hq_s_end = 9 + time_tc_hour;

//后勤下午开始结束时间
int time_hq_x_beg,time_hq_x_end;
time_hq_x_beg = 14 - time_dq_hour;
time_hq_x_end = 15 + time_tc_hour;

//午班上午开始结束时间
int time_jd_s_beg,time_jd_s_end;
time_jd_s_beg = 8 - time_dq_hour;
time_jd_s_end = 9 + time_tc_hour;

//午班下午开始结束时间
int time_jd_x_beg,time_jd_x_end;
time_jd_x_beg = 14 - time_dq_hour;
time_jd_x_end = 15 + time_tc_hour;

//周几 周1-周7
int week_day;
week_day = get_week_id(class_date);

string sql;
sql = "select card_no,mark_date,mark_time,add_cause from timer_original_rec where mark_date ='" + class_date + "' and card_no = '" + card_no +"' order by mark_date,mark_time";

db_run(sql);
int row_count;
row_count = db_row_count();

if (row_count > 0) {
//db_show();
dbg('当天共有' + row_count + '条打卡记录');

int s_finish;//检测完成
s_finish = 0;

int mark_time_hour;
mark_time_hour = 0;

int i;
for (i = 0; i < row_count; i++) {
dbg('第' + (i + 1) + '条记录');
//dbg('检测提前中止:' + s_finish);

mark_time_hour = str_get_sub(db_res(2),0,2);
dbg('打卡小时' + mark_time_hour);

if(s_finish == 1){
break;
}

switch(db_res(3)){
//野外优先 07-19
//最小计数1天
case '2':
case '4':
case '5':
case '6':
case '7':
case '8':
dbg('当前出勤IP:'  + db_res(3) + ' - 野外');
note_info += '野外班次 |';
//得到时间,判断考勤时间是否在有效时间段内
if (mark_time_hour >= time_yw_beg && mark_time_hour <= time_yw_end) {
rec_day = 1;
ss1 = '野外';
//中止继续检测
s_finish = 1;
}else{
dbg('不在有效的打卡时间段内');
}
break;
//午班 08-09 14-15
case '1':
case '3':
case '9':
dbg('当前出勤IP:'  + db_res(3) + ' - 午班');
note_info += '午班班次 | ';

if (!(week_day == 2 || week_day == 4)) {
//得到时间,判断考勤时间是否在有效时间段内
//最小计数0.5,上午一次,下午一次
if ((mark_time_hour >= time_jd_s_beg && mark_time_hour <= time_jd_s_end) || (mark_time_hour >= time_jd_x_beg && mark_time_hour <= time_jd_x_end)) {
rec_day += 0.5;
}else{
dbg('不在有效的打卡时间段内');
}
}else{
//周2周4,只需要打卡1次
if ((mark_time_hour >= time_jd_s_beg && mark_time_hour <= time_jd_s_end) || (mark_time_hour >= time_jd_x_beg && mark_time_hour <= time_jd_x_end)) {
rec_day = 1;
ss1 = '午班';
}else{
dbg('不在有效的打卡时间段内');
}
}

//午班优先-补贴
dbg('找寻午班的位置:' + str_pos(note_info,'午班'));
if (str_pos(note_info,'午班') != not_find) {
ss1 = '午班';
}

if (rec_day == 1) {
s_finish = 1;
}

break;
//后勤 08-09 14-15
case '0':
dbg('当前出勤IP:'  + db_res(3) + ' - 后勤');
note_info += '后勤班次 |';
//是否周2|周4
if (!(week_day == 2 || week_day == 4)) {
//得到时间,判断考勤时间是否在有效时间段内
//最小计数0.5,上午一次,下午一次
if ((mark_time_hour >= time_hq_s_beg && mark_time_hour <= time_hq_s_end) || (mark_time_hour >= time_hq_x_beg && mark_time_hour <= time_hq_x_end)) {
rec_day += 0.5;
}else{
dbg('不在有效的打卡时间段内');
}
}else{
//周2周4,只需要打卡1次
if ((mark_time_hour >= time_hq_s_beg && mark_time_hour <= time_hq_s_end) || (mark_time_hour >= time_hq_x_beg && mark_time_hour <= time_hq_x_end)) {
rec_day = 1;
ss1 = '后勤';
}else{
dbg('不在有效的打卡时间段内');
}
}

//午班优先-补贴
if (str_pos(note_info,'午班') != not_find) {
ss1 = '午班';
}

if (rec_day == 1) {
s_finish = 1;
}
break;
}
db_next();
}
s1 = ss1;
//结果
switch(rec_day){
case 0.5:
n2 = rec_day;
break;
case 1:
process_result = '';
process_result_name = '';
n2 = rec_day;
break;
}

dbg('------------------------------------------');
}else{
dbg('没有打卡记录');
dbg('------------------------------------------');
}

return 1;
};

int row_change_ext()
{
return 1;
};

int show_detail_row_ext()
{
return 1;
};

int main()
{
return 1;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: