notdef
學習.交流
專業源于專注
www. onlyit. cn   
學習交流 文件下載 手冊資料 交流QQ群

    

 3  1/1   1  
作者
內容
fwj3861  [個人空間]
QQ名  越南-葉子(121305301)


注冊  2010-09-09
發貼數  382
精華貼  8
原創貼  18
來自  越南
狀態  正常

級別  贵宾
#1»發布于2023-05-22 21:40

之前有用戶提出【補打卡申請單據】增加導入功能,以便可以批量做補打卡申請,為使部門文員更加簡單的做補打卡申請單據,在請官方更新【grid_copy_row】腳本之后,可以使用腳本提取缺勤記錄后自動按照缺勤時間來增加新的記錄, 
經過測試,員工當日缺勤3次可以生成3條補卡明細并自動賦值3個缺勤時間到【時間】列,基本能滿足日常打卡4次的補卡需求了,員工當日缺勤4次-6次的算法建模比較費腦,就暫時不去考慮了, 
 
腳本思路: 
一. 啟用表頭基本屬性擴展4個,【補卡日期】,【補卡部門】,【補卡原因】,【待補卡數】 
1. 【補卡日期】和【補卡部門】是必選項,作為提取條件從考勤日賬明細提取缺勤明細 
2. 【補卡原因】為非必選項,用來作為批量填充明細【原因】列,【默認設置明細【原因】不能為空,有空列的不能保存和送審,可以根據需要自行關閉】 
3. 【待補卡數】作為【grid_copy_row】函數的目標行號變量,用來自動添加補卡明細,當【待補卡數】為0后才判斷為補卡申請完成,可以送審單據了 
二.腳本創建表頭控件【引入缺勤記錄】,用來根據【補卡日期】和【補卡部門】提取缺勤記錄 
1.在【新增單據】時,默認【當日】為【單據日期】,默認【昨日】為【補卡日期】,默認【操作員所屬部門】為【補卡部門】 
三.用腳本新建4個列【打卡記錄】,【考勤班次編號】,【考勤班次名稱】,【考勤班次時間段】,這4個列的數據在重新打開單據檢查或審核時會刷新顯示【目前單據不支持添加明細擴展列和顯示自定義列,只能用腳本添加】 
1.【打卡記錄】用來顯示考勤日賬的打卡明細,便于直觀的顯示缺勤時間段 
2.【考勤班次編號】,【考勤班次名稱】,【考勤班次時間段】僅用來參考 
四.根據考勤班次的5個上下班時間段,用腳本批量新建6組各5個列【上班1-5】,【下班1-5】,【上班次數1-5】,【下班次數1-5】,【標準上班時間1-5】,【標準下班時間1-5】,這30個列默認全部隱藏,用來作為計算缺勤次數和時間的建模參數 
1.從【考勤日賬】提取過來的打卡時間組合賦值到【打卡記錄】并分別轉換為【10】之后賦值到【上班1-5】和【下班1-5】結合【標準上下班時間】用【grid_copy_row】函數來計算缺勤次數的參數 
2.根據【考勤日賬】的【考勤班次】來提取【考勤班次的5組上下班時間】賦值到標準上班時間1-5】和【標準下班時間1-5】,結合【上下班1-5】用【grid_copy_row】函數來作為【時間】列賦值的參數 
3.根據【考勤班次時間段】數據分別轉為【10】之后賦值到【上下班次數1-5】,結合【上下班1-5】用【grid_copy_row】函數來作為【時間】列賦值的參數 
五.員工當日考勤缺勤次數超過3次,【grid_copy_row】腳本函數執行后會在明細中間產生【空白行】,所以需要在【引入缺勤記錄】執行完之后用函數來隱藏【空白行】 
六.在一個單據會自動按【補卡日期】和【補卡部門】生成完整的補卡明細,所以在重復做相同【補卡日期】和【補卡部門】的補卡明細時,會自動彈出提示并刪除重復的數據,最后鎖定【引入缺勤記錄】控件,必須再次執行【新增單據】操作選擇其他【補卡日期】或【補卡部門】 
 請使用最新版本【20230517】測試,【grid_copy_row】函數從這個版本開始才有!狙a打卡申請單據】審核之后,在考勤數據處理界面就能提取出來了 
歡迎各位用戶在使用中提出改善意見或建議,謝謝! 
【單據內腳本只有缺勤1-2次的判斷腳本,缺勤3次的判斷腳本受單據腳本1500行的限制,另外新建4個腳本文件來被單據腳本調用的,有需要缺勤3次的腳本文件,請QQ聯系】 
 
int init_test() 

  return 1; 
}; 
 
int create_voucher() 

 string d,deptid; 
 d = get_cur_date_std(); //獲取【當前日期】 
 gui_set_val("DateTimePicker_Voucher_Date",d); //設置【單據日期】為【當前日期】 
 gui_set_val("date_Ext1",d-1); //設置【補卡日期】為【當前日期的前一天】 
 deptid = get_user_dept_id(); //獲取【當前操作員部門編號】 
 gui_set_val("ext_Ext2",deptid); //設置【補卡部門】為【當前操作員所屬部門】 
 gui_enable("date_Ext1") //允許點擊【補卡日期】控件 
 gui_enable("timer_list") //允許點擊【引入缺勤記錄】控件 
 gui_hide("timer_list_r") //隱藏【刪除考勤記錄數據】控件 
 gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
 grid_mark_readonly('MG_Item','emp_id') //【工號】列不允許編輯 
 grid_mark_readonly('MG_Item','emp_name')//【姓名】列不允許編輯 
 grid_mark_readonly('MG_Item','mark_date') //【日期】列不允許編輯 
 return 1; 
}; 
 
int 刪除缺勤記錄數據() 

  string d,deptid; 
  d = get_cur_date_std(); //獲取【當前日期】 
  gui_set_val("DateTimePicker_Voucher_Date",d); //設置【單據日期】為【當前日期】 
  gui_set_val("date_Ext1",d-1); //設置【補卡日期】為【當前日期的前一天】 
  deptid = get_user_dept_id(); //獲取【當前操作員部門編號】 
  gui_set_val("ext_Ext2",deptid); //設置【補卡部門】為【當前操作員所屬部門】 
  gui_set_val("edit_Ext4",''); //清空【待補卡數】 
  gui_trigger_click("Popu_Item_Erase_All"); //執行【清空所有明細】 
  gui_enable("timer_list") //允許點擊【引入缺勤記錄】控件 
  gui_enable("date_Ext1") //允許點擊【補卡日期】控件 
  gui_enable("ext_Ext2") //允許點擊【補卡部門】控件 
grid_unmark_readonly('MG_Item','add_cause_name')//【原因】列允許編輯 
    return 1; 
}; 
 
int 自動添加補卡時間() 

 gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
 int i,j,rc; 
 string empid,vbeg1,vbeg2,vbeg3,vbeg4,vbeg5,vend1,vend2,vend3,vend4,vend5,vtimen,on1,on2,on3,on4,on5,off1,off2,off3,off4,off5,btime1,btime2,btime3,btime4,btime5,etime1,etime2,etime3,etime4,etime5; 
 string marktime; 
 num on1,on2,on3,on4,on5,off1,off2,off3,off4,off5,marktimesum; 
 num btime2,btime3,btime4,btime5,etime1,etime2,etime3,etime4,etime5,b1,b2,b3,b4,b5,e1,e2,e3,e4,e5; 
 num sumon1,sumon2,sumon3,sumon4,sumon5,sumoff1,sumoff2,sumoff3,sumoff4,sumoff5,sumbeg1,sumbeg2,sumbeg3,sumbeg4,sumbeg5,sumend1,sumend2,sumend3,sumend4,sumend5; 
 marktimesum = gui_get_val("edit_Ext4") 
 rc = grid_find('MG_Item','emp_id',''); 
 for(i=1;i<rc;i++) 
 { 
  empid = grid_get_v('MG_Item','emp_id',i); 
  marktime = grid_get_v('MG_Item','mark_time',i); 
  vbeg1 = grid_get_v('MG_Item','beg1',i); 
  vbeg2 = grid_get_v('MG_Item','beg2',i); 
  vbeg3 = grid_get_v('MG_Item','beg3',i); 
  vbeg4 = grid_get_v('MG_Item','beg4',i); 
  vbeg5 = grid_get_v('MG_Item','beg5',i); 
  vend1 = grid_get_v('MG_Item','end1',i); 
  vend2 = grid_get_v('MG_Item','end2',i); 
  vend3 = grid_get_v('MG_Item','end3',i); 
  vend4 = grid_get_v('MG_Item','end4',i); 
  vend5 = grid_get_v('MG_Item','end5',i); 
  on1 = grid_get_v('MG_Item','on01',i); 
  on2 = grid_get_v('MG_Item','on02',i); 
  on3 = grid_get_v('MG_Item','on03',i); 
  on4 = grid_get_v('MG_Item','on04',i); 
  on5 = grid_get_v('MG_Item','on05',i); 
  off1 = grid_get_v('MG_Item','off01',i); 
  off2 = grid_get_v('MG_Item','off02',i); 
  off3 = grid_get_v('MG_Item','off03',i); 
  off4 = grid_get_v('MG_Item','off04',i); 
  off5 = grid_get_v('MG_Item','off05',i); 
  btime1 = grid_get_v('MG_Item','begtime1',i); 
  btime2 = grid_get_v('MG_Item','begtime2',i); 
  btime3 = grid_get_v('MG_Item','begtime3',i); 
  btime4 = grid_get_v('MG_Item','begtime4',i); 
  btime5 = grid_get_v('MG_Item','begtime5',i); 
  etime1 = grid_get_v('MG_Item','endtime1',i); 
  etime2 = grid_get_v('MG_Item','endtime2',i); 
  etime3 = grid_get_v('MG_Item','endtime3',i); 
  etime4 = grid_get_v('MG_Item','endtime4',i); 
  etime5 = grid_get_v('MG_Item','endtime5',i); 
  b1 = btime1-on1 
  b2 = btime2-on2 
  b3 = btime3-on3 
  b4 = btime4-on4 
  b5 = btime5-on5 
  e1 = etime1-off1 
  e2 = etime2-off2 
  e3 = etime3-off3 
  e4 = etime4-off4 
  e5 = etime5-off5 
  if(marktime == '') 
  { 
   //上班缺勤1次算法 
    if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    } 
   //下班缺勤1次算法 
    if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend1);//【下班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend2);//【下班2】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vend5);//【下班5】缺勤 
    } 
    //上班缺勤2次算法 
    if(b1=='10'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg2);//【上班2】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg3);//【上班3】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg4);//【上班4】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg5);//【上班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='10'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg3);//【上班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg4);//【上班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg5);//【上班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg4);//【上班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg5);//【上班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vbeg5);//【上班5】缺勤 
    } 
    //上班1次下班1次缺勤2次算法 
    if(b1=='10'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend1);//【下班1】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='10'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg1);//【上班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum)    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend1);//【下班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='10'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg2);//【上班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend1);//【下班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤   }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='10'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='10'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg3);//【上班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend1);//【下班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='10'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg4);//【上班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend1);//【下班1】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='10'&&e5=='0'){  grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='10'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vbeg5);//【上班5】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    } 
   //下班缺勤2次算法 
    if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend1);//【下班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend2);//【下班2】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend1);//【下班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend1);//【下班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='10'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vend1);//【下班1】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend2);//【下班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum);    grid_set_v("MG_Item","mark_time",i+marktimesum,vend3);//【下班3】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend2);//【下班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='10'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vend2);//【下班2】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='0'){ 
    grid_set_v("MG_Item","mark_time",i,vend3);//【下班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend4);//【下班4】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='10'&&b4=='0'&&e4=='0'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vend3);//【下班3】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }if(b1=='0'&&e1=='0'&&b2=='0'&&e2=='0'&&b3=='0'&&e3=='0'&&b4=='0'&&e4=='10'&&b5=='0'&&e5=='10'){ 
    grid_set_v("MG_Item","mark_time",i,vend4);//【下班4】缺勤 
    grid_insert_before('MG_Item',i+marktimesum) 
    grid_copy_row("MG_Item",i,i+marktimesum); 
    grid_set_v("MG_Item","mark_time",i+marktimesum,vend5);//【下班5】缺勤 
    }; 
   }; 
  }; 
    call_str('call_prog.上班缺勤3次算法'); 
    call_str('call_prog.下班缺勤3次算法'); 
    call_str('call_prog.上班2下班1缺勤3次算法'); 
    call_str('call_prog.上班1下班2缺勤3次算法'); 
    grid_sort("MG_Item",'emp_id,mark_time'); 
    grid_unmark_readonly('MG_Item','add_cause_name') 
    grid_filter_hide("MG_Item","工號==''"); //隱藏【grid_copy_row】函數產生的空白行 
  return 1; 
}; 
 
int 提取補卡日期缺勤記錄() 

   gui_disable("timer_list") //不允許點擊【引入缺勤記錄】控件 
   gui_disable("date_Ext1")  //不允許點擊【補卡日期】控件 
   gui_disable("ext_Ext2")  //不允許點擊【補卡部門】控件 
   gui_disable("edit_Ext4")  //不允許點擊【缺勤合計】控件 
   gui_hide("timer_list_r")//隱藏【刪除考勤記錄數據】控件 
   grid_mark_readonly('MG_Item','mark_time')//【時間】列不允許編輯 
   int i,count,j; 
   string sql,sql1,class_date,Punch_record,on1,off1,on2,off2,on3,off3,on4,off4,on5,off5,class_id,class_name,dept_id,dept_name,voucherno,timestt,timesttok; 
   string mbeg1,mbeg2,mbeg3,mbeg4,mbeg5,mend1,mend2,mend3,mend4,mend5; 
   num vtimesum,vrecordsum,von1,von2,von3,von4,von5,voff1,voff2,voff3,voff4,voff5,vbeg1,vbeg2,vbeg3,vbeg4,vbeg5,vend1,vend2,vend3,vend4,vend5,marktimesum; 
   num sumon1,sumon2,sumon3,sumon4,sumon5,sumoff1,sumoff2,sumoff3,sumoff4,sumoff5,sumbeg1,sumbeg2,sumbeg3,sumbeg4,sumbeg5,sumend1,sumend2,sumend3,sumend4,sumend5; 
   grid_add_col_str("MG_Item",'Punch_record','打卡記錄') //添加【打卡記錄】列 
   grid_mark_readonly('MG_Item','Punch_record') //設置【打卡記錄】列【不允許編輯】 
   grid_set_col_width("MG_Item",'Punch_record',200) //設置【打卡記錄】列【寬度】 
   grid_set_col_color("MG_Item",'Punch_record',0x0000ff);//設置【打卡記錄】列【字體顏色】 
   grid_add_col_str("MG_Item",'class_id','考勤班次編號') 
   grid_mark_readonly('MG_Item','class_id') 
   grid_set_col_width("MG_Item",'class_id',100) 
   grid_set_col_color("MG_Item",'class_id',0x0000ff); 
   grid_add_col_str("MG_Item",'class_name','考勤班次名稱') 
   grid_mark_readonly('MG_Item','class_name') 
   grid_set_col_width("MG_Item",'class_name',100) 
   grid_set_col_color("MG_Item",'class_name',0x0000ff); 
   grid_add_col_str("MG_Item",'classitem','考勤班次時間段') 
   grid_mark_readonly('MG_Item','classitem')  grid_set_col_width("MG_Item",'classitem',200) 
   grid_set_col_color("MG_Item",'classitem',16711680); 
   for(j=1;j<6;j++); 
   { 
    grid_add_col_num("MG_Item",'on0'+j,'上班'+j) 
    grid_mark_readonly('MG_Item','on0'+j) 
    grid_add_col_num("MG_Item",'off0'+j,'下班'+j) 
    grid_mark_readonly('MG_Item','off0'+j) 
    grid_add_col_num("MG_Item",'begtime'+j,'上班次數'+j) 
    grid_mark_readonly('MG_Item','begtime'+j) 
    grid_add_col_num("MG_Item",'endtime'+j,'下班次數'+j) 
    grid_mark_readonly('MG_Item','endtime'+j) 
    grid_add_col_str("MG_Item",'beg'+j,'標準上班時間'+j) 
    grid_mark_readonly('MG_Item','beg'+j) 
    grid_add_col_str("MG_Item",'end'+j,'標準下班時間'+j) 
    grid_mark_readonly('MG_Item','end'+j) 
   }; 
   voucherno = gui_get_val("Edit_Voucher_No") //獲取【單據編號】 
   class_date = gui_get_val("date_Ext1") //獲取【補卡日期】 
   dept_id = gui_get_val("ext_Ext2") //獲取【補卡部門】ID 
   dept_name = gui_get_text("ext_Ext2") //獲取【補卡部門】名稱 
   if(class_date == '') 
   { 
    msg('請選擇【補卡日期】') 
    gui_hide("timer_list_r") //隱藏【刪除缺勤記錄數據】控件 
    gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
    gui_enable("timer_list") //允許點擊【引入缺勤記錄】控件 
    gui_enable("date_Ext1") //允許點擊【補卡日期】控件 
    gui_enable("ext_Ext2")  //允許點擊【補卡部門】控件 
    return 0 
    }; 
   if(dept_id == '') 
   { 
    msg('請選擇【部門】') 
    gui_hide("timer_list_r") //隱藏【刪除缺勤記錄數據】控件 
    gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
    gui_enable("timer_list") //允許點擊【引入缺勤記錄】控件 
    gui_enable("date_Ext1") //允許點擊【補卡日期】控件 
    gui_enable("ext_Ext2")  //允許點擊【補卡部門】控件 
    return 0 
    } 
   gui_set_val("Edit_Title",fmt_date(class_date,'yyyy年mm月dd日')+'【'+dept_name+'】缺勤補卡【'+voucherno+'】');sql = "select a.emp_id,a.class_date,a.on_time_1,a.off_time_1,a.on_time_2,a.off_time_2,a.on_time_3,a.off_time_3,"; 
   sql =sql+ "a.on_time_4,a.off_time_4,a.on_time_5,a.off_time_5,a.class_id,b.name,b.beg_time_1,b.end_time_1,b.beg_time_2,b.end_time_2,"; 
   sql =sql+ "b.beg_time_3,b.end_time_3,b.beg_time_4,b.end_time_4,b.beg_time_5,b.end_time_5,a.emp_id as emp_name"; 
   sql =sql+ " from timer_list a,timer_class_def b where a.class_id=b.class_id and class_date= '" + class_date + "' and absent_minute > '0'"; 
   sql =sql+ " and dept_id= '" + dept_id + "'"; 
   sql1 = "select o.emp_id,o.class_date,o.on_time_1,o.off_time_1,o.on_time_2,o.off_time_2,o.on_time_3,o.off_time_3,"; 
   sql1 =sql1+ "o.on_time_4,o.off_time_4,o.on_time_5,o.off_time_5,o.class_id,o.name,o.beg_time_1,o.end_time_1,o.beg_time_2,o.end_time_2,"; 
   sql1 =sql1+ "o.beg_time_3,o.end_time_3,o.beg_time_4,o.end_time_4,o.beg_time_5,o.end_time_5,o.emp_id as emp_name"; 
   sql1 =sql1+ ",p.dept_id,p.dept_id as dept_name from ( " + sql + " ) o left join (select * from emp) p on o.emp_id = p.emp_id" 
   db_run_query_thr(sql1) 
   db_map("emp","emp_name","emp_name"); //轉換【姓名】 
   db_map("dept","dept_name","dept_name"); //轉換【部門】 
   count = db_row_count() //獲取缺勤數據記錄數 
   if(dept_id != '' && count == '0') 
   { 
    msg('【'+dept_name+'】:【'+fmt_date(class_date,'yyyy年mm月dd日')+'】沒有缺勤記錄,請【重新設置引入條件】!') 
    gui_hide("timer_list_r") //隱藏【刪除缺勤記錄數據】控件 
    gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
    gui_enable("date_Ext1") //允許點擊【補卡日期】控件 
    gui_enable("ext_Ext2") //允許點擊【補卡部門】控件 
    gui_enable("timer_list") //允許點擊【引入缺勤記錄】控件 
    return 0 
    }; 
   for(i=0;i<count;i++); 
   { 
    db_go_row(i) //指向某條【缺勤記錄】 
    grid_set_v("MG_Item","emp_id",i+1,db_res(0)); //【工號】列賦值 
    grid_set_v("MG_Item","mark_date",i+1,db_res(1)); //【日期】列賦值 
    grid_set_v("MG_Item","class_id",i+1,db_res(12)); //【考勤班次編號】列賦值(單據保存前使用,不會保存到數據庫) 
    grid_set_v("MG_Item","class_name",i+1,db_res(13)); //【考勤班次名稱】列賦值(單據保存前使用,不會保存到數據庫) 
    grid_set_v("MG_Item","emp_name",i+1,db_res(24)); //【姓名】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","dept_id",i+1,db_res(25)); //【部門編號】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","dept_name",i+1,db_res(26)); //【部門】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg1",i+1,db_res(14)); //【考勤班次的上班時間1】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end1",i+1,db_res(15)); //【考勤班次的下班時間1】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg2",i+1,db_res(16)); //【考勤班次的上班時間2】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end2",i+1,db_res(17)); //【考勤班次的下班時間2】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg3",i+1,db_res(18)); //【考勤班次的上班時間3】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end3",i+1,db_res(19)); //【考勤班次的下班時間3】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg4",i+1,db_res(20)); //【考勤班次的上班時間4】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end4",i+1,db_res(21)); //【考勤班次的下班時間4】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg5",i+1,db_res(22)); //【考勤班次的上班時間5】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end5",i+1,db_res(23)); //【考勤班次的下班時間5】列賦值(單據保存后刷新前參考) 
    mbeg1 = fmt_date(db_res(14),"hh:mi"); 
    mend1 = fmt_date(db_res(15),"hh:mi"); 
    mbeg2 = fmt_date(db_res(16),"hh:mi"); 
    mend2 = fmt_date(db_res(17),"hh:mi"); 
    mbeg3 = fmt_date(db_res(18),"hh:mi"); 
    mend3 = fmt_date(db_res(19),"hh:mi"); 
    mbeg4 = fmt_date(db_res(20),"hh:mi"); 
    mend4 = fmt_date(db_res(21),"hh:mi"); 
    mbeg5 = fmt_date(db_res(22),"hh:mi"); 
    mend5 = fmt_date(db_res(23),"hh:mi"); 
    grid_set_v("MG_Item","begtime"+j,i+1,'0'); 
    grid_set_v("MG_Item","endtime"+j,i+1,'0'); 
    grid_set_v("MG_Item","on0"+j,i+1,'0'); 
    grid_set_v("MG_Item","off0"+j,i+1,'0'); 
    if(db_res(14) != ''){ 
     grid_set_v("MG_Item","begtime1",i+1,'10'); 
     vbeg1 = grid_get_v("MG_Item","begtime1",i+1,); 
    }if(db_res(15) != ''){ 
     grid_set_v("MG_Item","endtime1",i+1,'10'); 
     vend1 = grid_get_v("MG_Item","endtime1",i+1,); 
    }if(db_res(16) != ''){ 
     grid_set_v("MG_Item","begtime2",i+1,'10'); 
     vbeg2 = grid_get_v("MG_Item","begtime2",i+1,); 
    }if(db_res(17) != ''){ 
     grid_set_v("MG_Item","endtime2",i+1,'10'); 
     vend2 = grid_get_v("MG_Item","endtime2",i+1,); 
    }if(db_res(18) != ''){ 
     grid_set_v("MG_Item","begtime3",i+1,'10'); 
     vbeg3 = grid_get_v("MG_Item","begtime3",i+1,); 
    }if(db_res(19) != ''){ 
     grid_set_v("MG_Item","endtime3",i+1,'10'); 
     vend3 = grid_get_v("MG_Item","endtime3",i+1,); 
    }if(db_res(20) != ''){ 
     grid_set_v("MG_Item","begtime4",i+1,'10'); 
     vbeg4 = grid_get_v("MG_Item","begtime4",i+1,); 
    }if(db_res(21) != ''){ 
     grid_set_v("MG_Item","endtime4",i+1,'10'); 
     vend4 = grid_get_v("MG_Item","endtime4",i+1,); 
    }if(db_res(22) != ''){ 
     grid_set_v("MG_Item","begtime5",i+1,'10'); 
     vbeg5 = grid_get_v("MG_Item","begtime5",i+1,); 
    }if(db_res(23) != ''){ 
     grid_set_v("MG_Item","endtime5",i+1,'10'); 
     vend5 = grid_get_v("MG_Item","endtime5",i+1,); 
    } 
    if(db_res(14) != '' && db_res(2) == ''){ 
    on1='--:--' 
    }if(db_res(14) != '' && db_res(2) != ''){ 
    on1=fmt_date(db_res(2),"hh:mi") 
    grid_set_v("MG_Item","on01",i+1,'10'); 
    von1 = grid_get_v("MG_Item","on01",i+1,); 
    }if(db_res(15) != '' && db_res(3) == ''){ 
    off1= '--:--' 
    }if(db_res(15) != '' && db_res(3) != ''){ 
    off1=fmt_date(db_res(3),"hh:mi") 
    grid_set_v("MG_Item","off01",i+1,'10'); 
    voff1 = grid_get_v("MG_Item","off01",i+1,); 
    }if(db_res(16) != '' && db_res(4) == ''){ 
    on2='--:--' 
    }if(db_res(16) != '' && db_res(4)!= ''){ 
    on2=fmt_date(db_res(4),"hh:mi") 
    grid_set_v("MG_Item","on02",i+1,'10'); 
    von2 = grid_get_v("MG_Item","on02",i+1,); 
    }if(db_res(17) != '' && db_res(5) == ''){ 
    off2='--:--' 
    }if(db_res(17) != '' && db_res(5) != ''){ 
    off2=fmt_date(db_res(5),"hh:mi") 
    grid_set_v("MG_Item","off02",i+1,'10'); 
    voff2 = grid_get_v("MG_Item","off02",i+1,); 
    }if(db_res(18) != '' && db_res(6) == ''){ 
    on3='--:--' 
    }if(db_res(18) != '' && db_res(6) != ''){ 
    on3=fmt_date(db_res(6),"hh:mi") 
    grid_set_v("MG_Item","on03",i+1,'10'); 
    von3 = grid_get_v("MG_Item","on03",i+1,); 
    }if(db_res(19) != '' && db_res(7) == ''){ 
    off3='--:--' 
    }if(db_res(19) != '' && db_res(7) != ''){ 
    off3=fmt_date(db_res(7),"hh:mi") 
    grid_set_v("MG_Item","off03",i+1,'10'); 
    voff3 = grid_get_v("MG_Item","off03",i+1,); 
    }if(db_res(20) != '' && db_res(8) == ''){ 
    on4='--:--' 
    }if(db_res(20) != '' && db_res(8) != ''){ 
    on4=fmt_date(db_res(8),"hh:mi") 
    grid_set_v("MG_Item","on04",i+1,'10'); 
    von4 = grid_get_v("MG_Item","on04",i+1,); 
    }if(db_res(21) != '' && db_res(9) == ''){ 
    off4='--:--' 
    }if(db_res(21) != '' && db_res(9) != ''){ 
    off4=fmt_date(db_res(9),"hh:mi") 
    grid_set_v("MG_Item","off04",i+1,'10'); 
    voff4 = grid_get_v("MG_Item","off04",i+1,); 
    }if(db_res(22) != '' && db_res(10) == ''){ 
    on5='--:--' 
    }if(db_res(22) != '' && db_res(10) != ''){ 
    on5=fmt_date(db_res(10),"hh:mi") 
    grid_set_v("MG_Item","on05",i+1,'10'); 
    von5 = grid_get_v("MG_Item","on05",i+1,); 
    }if(db_res(23) != '' && db_res(11) == ''){ 
    off5='--:--' 
    }if(db_res(23) != '' && db_res(11) != ''){ 
    off5=fmt_date(db_res(11),"hh:mi") 
    grid_set_v("MG_Item","off05",i+1,'10'); 
    voff5 = grid_get_v("MG_Item","off05",i+1,); 
    }if(db_res(14)!=''&&db_res(15)!=''&&db_res(16)==''&&db_res(17)==''){ 
    grid_set_v("MG_Item","Punch_record",i+1,on1+' - '+off1); 
    grid_set_v("MG_Item","classitem",i+1,mbeg1+' - '+mend1); 
    }if(db_res(16)!=''&&db_res(17)!=''&&db_res(18)==''&&db_res(19)==''){ 
    grid_set_v("MG_Item","Punch_record",i+1,on1+' - '+off1+'|'+on2+' - '+off2); 
    grid_set_v("MG_Item","classitem",i+1,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2); 
    }if(db_res(18)!=''&&db_res(19)!=''&&db_res(20)==''&&db_res(21)==''){ 
    grid_set_v("MG_Item","Punch_record",i+1,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3); 
    grid_set_v("MG_Item","classitem",i+1,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3); 
    }if(db_res(20)!=''&&db_res(21)!=''&&db_res(22)==''&&db_res(23)==''){ 
    grid_set_v("MG_Item","Punch_record",i+1,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3+'|'+on4+' - '+off4); 
    grid_set_v("MG_Item","classitem",i+1,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3+'|'+mbeg4+' - '+mend4); 
    }if(db_res(23) != ''){ 
    grid_set_v("MG_Item","Punch_record",i+1,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3+'|'+on4+' - '+off4+'|'+on5+' - '+off5); 
    grid_set_v("MG_Item","classitem",i+1,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3+'|'+mbeg4+' - '+mend4+'|'+mbeg5+' - '+mend5); 
    }; 
   }; 
    sumon1 = grid_get_col_sum('MG_Item','on01')/10 
    sumon2 = grid_get_col_sum('MG_Item','on02')/10 
    sumon3 = grid_get_col_sum('MG_Item','on03')/10 
    sumon4 = grid_get_col_sum('MG_Item','on04')/10 
    sumon5 = grid_get_col_sum('MG_Item','on05')/10 
    sumoff1 = grid_get_col_sum('MG_Item','off01')/10 
    sumoff2 = grid_get_col_sum('MG_Item','off02')/10 
    sumoff3 = grid_get_col_sum('MG_Item','off03')/10 
    sumoff4 = grid_get_col_sum('MG_Item','off04')/10 
    sumoff5 = grid_get_col_sum('MG_Item','off05')/10 
    sumbeg1 = grid_get_col_sum('MG_Item','begtime1')/10 
    sumbeg2 = grid_get_col_sum('MG_Item','begtime2')/10 
    sumbeg3 = grid_get_col_sum('MG_Item','begtime3')/10 
    sumbeg4 = grid_get_col_sum('MG_Item','begtime4')/10 
    sumbeg5 = grid_get_col_sum('MG_Item','begtime5')/10 
    sumend1 = grid_get_col_sum('MG_Item','endtime1')/10 
    sumend2 = grid_get_col_sum('MG_Item','endtime2')/10 
    sumend3 = grid_get_col_sum('MG_Item','endtime3')/10 
    sumend4 = grid_get_col_sum('MG_Item','endtime4')/10 
    sumend5 = grid_get_col_sum('MG_Item','endtime5')/10 
    marktimesum=sumbeg1+sumbeg2+sumbeg3+sumbeg4+sumbeg5+sumend1+sumend2+sumend3+sumend4+sumend5-sumon1-sumon2-sumon3-sumon4-sumon5-sumoff1-sumoff2-sumoff3-sumoff4-sumoff5 
    marktimesum=num_trim(marktimesum)-i 
    gui_set_val("edit_Ext4",marktimesum) 
   for(j=1;j<6;j++); 
   { 
    grid_hide_col("MG_Item",'on0'+j); 
    grid_hide_col("MG_Item",'off0'+j); 
    grid_hide_col("MG_Item",'begtime'+j); 
    grid_hide_col("MG_Item",'endtime'+j); 
    grid_hide_col("MG_Item",'beg'+j); 
    grid_hide_col("MG_Item",'end'+j); 
    grid_mark_sum("MG_Item",'on0'+j); 
    grid_mark_sum("MG_Item",'off0'+j); 
    grid_mark_sum("MG_Item",'begtime'+j); 
    grid_mark_sum("MG_Item",'endtime'+j); 
    grid_mark_sum("MG_Item",'beg'+j); 
    grid_mark_sum("MG_Item",'end'+j); 
   }; 
  grid_sort("MG_Item",'emp_id'); 
  int x,y,w,h,x1; 
  x=gui_get_x("timer_list") //【引入缺勤記錄】橫向坐標 
  y=gui_get_y("timer_list") //【引入缺勤記錄】控件縱向坐標 
  w=gui_get_w("timer_list") //【引入缺勤記錄】控件寬度 
  h=gui_get_h("timer_list") //【引入缺勤記錄】控件高度 
  gui_create_speedbutton("ScrollBox_Base","timer_list_r",x+w+10,y,w+20,h,"刪除缺勤記錄數據","call_csp.voucher.YC.刪除缺勤記錄數據"); 
  gui_set_font_color('timer_list_r',0x0000ff); 
  gui_set_hint ("timer_list_r", '刪除已引入的缺勤記錄數據'); 
  gui_hide("timer_list_r") //隱藏【刪除缺勤記錄數據】控件 
  gui_create_speedbutton("ScrollBox_Base","timer_item",x+w*2+40,y,w+20,h,"自動添加補卡時間","call_csp.voucher.YC.自動添加補卡時間"); 
  gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
  gui_trigger_click("timer_item"); 
  return 1; 
}; 
 
int 刷新補卡日期缺勤明細() 

   gui_disable("timer_list") //不允許點擊【引入缺勤記錄】控件 
   gui_disable("date_Ext1")  //不允許點擊【補卡日期】控件 
   gui_disable("date_Ext2")  //不允許點擊【補卡部門】控件 
   gui_hide("timer_list_r")//隱藏【刪除考勤記錄數據】控件 
   gui_hide("timer_item") //隱藏【自動添加補卡時間】控件 
   int i,rc,j; 
   string sql,sql1,class_date,Punch_record,on1,off1,on2,off2,on3,off3,on4,off4,on5,off5,class_id,class_name,dept_id,dept_name,voucherno,timestt,timesttok,empid; 
   string mbeg1,mbeg2,mbeg3,mbeg4,mbeg5,mend1,mend2,mend3,mend4,mend5; 
   num vtimesum,vrecordsum,von1,von2,von3,von4,von5,voff1,voff2,voff3,voff4,voff5,vbeg1,vbeg2,vbeg3,vbeg4,vbeg5,vend1,vend2,vend3,vend4,vend5; 
   grid_add_col_str("MG_Item",'Punch_record','打卡記錄') 
   grid_mark_readonly('MG_Item','Punch_record') 
   grid_set_col_width("MG_Item",'Punch_record',200) 
   grid_set_col_color("MG_Item",'Punch_record',0x0000ff); 
   grid_add_col_str("MG_Item",'class_id','考勤班次編號') 
   grid_mark_readonly('MG_Item','class_id') 
   grid_set_col_width("MG_Item",'class_id',100) 
   grid_set_col_color("MG_Item",'class_id',0x0000ff); 
   grid_add_col_str("MG_Item",'class_name','考勤班次名稱') 
   grid_mark_readonly('MG_Item','class_name') 
   grid_set_col_width("MG_Item",'class_name',100) 
   grid_set_col_color("MG_Item",'class_name',0x0000ff); 
   grid_add_col_str("MG_Item",'classitem','考勤班次時間段') 
   grid_mark_readonly('MG_Item','classitem') 
   grid_set_col_width("MG_Item",'classitem',200) 
   grid_set_col_color("MG_Item",'classitem',16711680); 
   for(j=1;j<6;j++); 
   { 
    grid_add_col_str("MG_Item",'on0'+j,'上班'+j) 
    grid_mark_readonly('MG_Item','on0'+j) 
    grid_add_col_str("MG_Item",'off0'+j,'下班'+j) 
    grid_mark_readonly('MG_Item','off0'+j) 
    grid_add_col_str("MG_Item",'begtime'+j,'上班次數'+j) 
    grid_mark_readonly('MG_Item','begtime'+j) 
    grid_add_col_str("MG_Item",'endtime'+j,'下班次數'+j) 
    grid_mark_readonly('MG_Item','endtime'+j) 
    grid_add_col_str("MG_Item",'beg'+j,'標準上班時間'+j) 
    grid_mark_readonly('MG_Item','beg'+j) 
    grid_add_col_str("MG_Item",'end'+j,'標準下班時間'+j) 
    grid_mark_readonly('MG_Item','end'+j) 
   }; 
   class_date = gui_get_val("date_Ext1") //獲取【補卡日期】 
   rc = grid_find('MG_Item','emp_id',''); 
   for(i=1;i<rc;i++); 
   { 
    empid = grid_get_v("MG_Item","emp_id",i,); 
    sql = "select a.emp_id,a.class_date,a.on_time_1,a.off_time_1,a.on_time_2,a.off_time_2,a.on_time_3,a.off_time_3,"; 
    sql =sql+ "a.on_time_4,a.off_time_4,a.on_time_5,a.off_time_5,a.class_id,b.name,b.beg_time_1,b.end_time_1,b.beg_time_2,b.end_time_2,"; 
    sql =sql+ "b.beg_time_3,b.end_time_3,b.beg_time_4,b.end_time_4,b.beg_time_5,b.end_time_5,a.emp_id as emp_name"; 
    sql =sql+ " from timer_list a,timer_class_def b where a.class_id=b.class_id and class_date= '" + class_date + "' and absent_minute > '0'"; 
    sql =sql+ " and emp_id= '" + empid + "'"; 
    db_run_query_thr(sql) 
    grid_set_v("MG_Item","class_id",i,db_res(12)); //【考勤班次編號】列賦值(單據保存前使用,不會保存到數據庫) 
    grid_set_v("MG_Item","class_name",i,db_res(13)); //【考勤班次名稱】列賦值(單據保存前使用,不會保存到數據庫) 
    grid_set_v("MG_Item","beg1",i+1,db_res(14)); //【考勤班次的上班時間1】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end1",i+1,db_res(15)); //【考勤班次的下班時間1】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg2",i+1,db_res(16)); //【考勤班次的上班時間2】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end2",i+1,db_res(17)); //【考勤班次的下班時間2】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg3",i+1,db_res(18)); //【考勤班次的上班時間3】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end3",i+1,db_res(19)); //【考勤班次的下班時間3】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg4",i+1,db_res(20)); //【考勤班次的上班時間4】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end4",i+1,db_res(21)); //【考勤班次的下班時間4】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","beg5",i+1,db_res(22)); //【考勤班次的上班時間5】列賦值(單據保存后刷新前參考) 
    grid_set_v("MG_Item","end5",i+1,db_res(23)); //【考勤班次的下班時間5】列賦值(單據保存后刷新前參考) 
    mbeg1 = fmt_date(db_res(14),"hh:mi"); 
    mend1 = fmt_date(db_res(15),"hh:mi"); 
    mbeg2 = fmt_date(db_res(16),"hh:mi"); 
    mend2 = fmt_date(db_res(17),"hh:mi"); 
    mbeg3 = fmt_date(db_res(18),"hh:mi"); 
    mend3 = fmt_date(db_res(19),"hh:mi"); 
    mbeg4 = fmt_date(db_res(20),"hh:mi"); 
    mend4 = fmt_date(db_res(21),"hh:mi"); 
    mbeg5 = fmt_date(db_res(22),"hh:mi"); 
    mend5 = fmt_date(db_res(23),"hh:mi"); 
    if(db_res(14) != ''){ 
     grid_set_v("MG_Item","begtime1",i+1,'10'); 
     vbeg1 = grid_get_v("MG_Item","begtime1",i+1,); 
    }if(db_res(15) != ''){ 
     grid_set_v("MG_Item","endtime1",i+1,'10'); 
     vend1 = grid_get_v("MG_Item","endtime1",i+1,); 
    }if(db_res(16) != ''){ 
     grid_set_v("MG_Item","begtime2",i+1,'10'); 
     vbeg2 = grid_get_v("MG_Item","begtime2",i+1,); 
    }if(db_res(17) != ''){ 
     grid_set_v("MG_Item","endtime2",i+1,'10'); 
     vend2 = grid_get_v("MG_Item","endtime2",i+1,); 
    }if(db_res(18) != ''){ 
     grid_set_v("MG_Item","begtime3",i+1,'10'); 
     vbeg3 = grid_get_v("MG_Item","begtime3",i+1,); 
    }if(db_res(19) != ''){ 
     grid_set_v("MG_Item","endtime3",i+1,'10'); 
     vend3 = grid_get_v("MG_Item","endtime3",i+1,); 
    }if(db_res(20) != ''){ 
     grid_set_v("MG_Item","begtime4",i+1,'10'); 
     vbeg4 = grid_get_v("MG_Item","begtime4",i+1,); 
    }if(db_res(21) != ''){ 
     grid_set_v("MG_Item","endtime4",i+1,'10'); 
     vend4 = grid_get_v("MG_Item","endtime4",i+1,); 
    }if(db_res(22) != ''){ 
     grid_set_v("MG_Item","begtime5",i+1,'10'); 
     vbeg5 = grid_get_v("MG_Item","begtime5",i+1,); 
    }if(db_res(23) != ''){ 
     grid_set_v("MG_Item","endtime5",i+1,'10'); 
     vend5 = grid_get_v("MG_Item","endtime5",i+1,); 
    } 
    if(db_res(14) != '' && db_res(2) == ''){on1='--:--' 
    }if(db_res(14) != '' && db_res(2) != ''){ 
    on1=fmt_date(db_res(2),"hh:mi") 
    grid_set_v("MG_Item","on01",i,'10'); 
    von1 = grid_get_v("MG_Item","on01",i,); 
    grid_set_cell_color("MG_Item",'on01',i,32768); 
    }if(db_res(15) != '' && db_res(3) == ''){ 
    off1= '--:--' 
    }if(db_res(15) != '' && db_res(3) != ''){ 
    off1=fmt_date(db_res(3),"hh:mi") 
    grid_set_v("MG_Item","off01",i,'10'); 
    grid_set_cell_color("MG_Item",'off01',i,32768); 
    voff1 = grid_get_v("MG_Item","off01",i,); 
    }if(db_res(16) != '' && db_res(4) == ''){ 
    on2='--:--' 
    }if(db_res(16) != '' && db_res(4) != ''){ 
    on2=fmt_date(db_res(4),"hh:mi") 
    grid_set_v("MG_Item","on02",i,'10'); 
    grid_set_cell_color("MG_Item",'on02',i,32768); 
    von2 = grid_get_v("MG_Item","on02",i,); 
    }if(db_res(17) != '' && db_res(5) == ''){ 
    off2='--:--' 
    }if(db_res(17) != '' && db_res(5) != ''){ 
    off2=fmt_date(db_res(5),"hh:mi") 
    grid_set_v("MG_Item","off02",i,'10'); 
    grid_set_cell_color("MG_Item",'off02',i,32768); 
    voff2 = grid_get_v("MG_Item","off02",i,); 
    }if(db_res(18) != '' && db_res(6) == ''){ 
    on3='--:--' 
    }if(db_res(18) != '' && db_res(6) != ''){ 
    on3=fmt_date(db_res(6),"hh:mi") 
    grid_set_v("MG_Item","on03",i,'10'); 
    grid_set_cell_color("MG_Item",'on03',i,32768); 
    von3 = grid_get_v("MG_Item","on03",i,); 
    }if(db_res(19) != '' && db_res(7) == ''){ 
    off3='--:--' 
    }if(db_res(19) != '' && db_res(7) != ''){ 
    off3=fmt_date(db_res(7),"hh:mi") 
    grid_set_v("MG_Item","off03",i,'10'); 
    grid_set_cell_color("MG_Item",'off03',i,32768); 
    voff3 = grid_get_v("MG_Item","off03",i,); 
    }if(db_res(20) != '' && db_res(8) == ''){ 
    on4='--:--' 
    }if(db_res(20) != '' && db_res(8) != ''){ 
    on4=fmt_date(db_res(8),"hh:mi") 
    grid_set_v("MG_Item","on04",i,'10'); 
    grid_set_cell_color("MG_Item",'on04',i,32768); 
    von4 = grid_get_v("MG_Item","on04",i,); 
    }if(db_res(21) !='' && db_res(9) == ''){ 
    off4='--:--' 
    }if(db_res(21) != '' && db_res(9) != ''){ 
    off4=fmt_date(db_res(9),"hh:mi") 
    grid_set_v("MG_Item","off04",i,'10'); 
    grid_set_cell_color("MG_Item",'off04',i,32768); 
    voff4 = grid_get_v("MG_Item","off04",i,); 
    }if(db_res(22) != '' && db_res(10) == ''){ 
    on5='--:--' 
    }if(db_res(22) != '' && db_res(10) != ''){ 
    on5=fmt_date(db_res(10),"hh:mi") 
    grid_set_v("MG_Item","on05",i,'10'); 
    grid_set_cell_color("MG_Item",'on05',i,32768); 
    von5 = grid_get_v("MG_Item","on05",i,); 
    }if(db_res(23) != '' && db_res(11) == ''){ 
    off5='--:--' 
    }if(db_res(23) != '' && db_res(11) != ''){ 
    off5=fmt_date(db_res(11),"hh:mi") 
    grid_set_v("MG_Item","off05",i,'10'); 
    grid_set_cell_color("MG_Item",'off05',i,32768); 
    voff5 = grid_get_v("MG_Item","off05",i,); 
    }if(db_res(14)!=''&&db_res(15)!=''&&db_res(16)==''&&db_res(17)==''){ 
    grid_set_v("MG_Item","Punch_record",i,on1+' - '+off1); 
    grid_set_v("MG_Item","classitem",i,mbeg1+' - '+mend1); 
    }if(db_res(16)!=''&&db_res(17)!=''&&db_res(18)==''&&db_res(19)==''){ 
    grid_set_v("MG_Item","Punch_record",i,on1+' - '+off1+'|'+on2+' - '+off2); 
    grid_set_v("MG_Item","classitem",i,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2); 
    }if(db_res(18)!=''&&db_res(19)!=''&&db_res(20)==''&&db_res(21)==''){ 
    grid_set_v("MG_Item","Punch_record",i,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3); 
    grid_set_v("MG_Item","classitem",i,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3); 
    }if(db_res(20)!=''&&db_res(21)!=''&&db_res(22)==''&&db_res(23)==''){ 
    grid_set_v("MG_Item","Punch_record",i,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3+'|'+on4+' - '+off4); 
    grid_set_v("MG_Item","classitem",i,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3+'|'+mbeg4+' - '+mend4); 
    }if(db_res(23) != ''){ 
    grid_set_v("MG_Item","Punch_record",i,on1+' - '+off1+'|'+on2+' - '+off2+'|'+on3+' - '+off3+'|'+on4+' - '+off4+'|'+on5+' - '+off5); 
    grid_set_v("MG_Item","classitem",i,mbeg1+' - '+mend1+'|'+mbeg2+' - '+mend2+'|'+mbeg3+' - '+mend3+'|'+mbeg4+' - '+mend4+'|'+mbeg5+' - '+mend5); 
    }; 
   }; for(j=1;j<6;j++); 
   { 
    grid_hide_col("MG_Item",'on0'+j); 
    grid_hide_col("MG_Item",'off0'+j); 
    grid_hide_col("MG_Item",'begtime'+j); 
    grid_hide_col("MG_Item",'endtime'+j); 
    grid_hide_col("MG_Item",'beg'+j); 
    grid_hide_col("MG_Item",'end'+j); 
   }; 
 return 1; 
}; 
 
int func_show() 

  int x,y,w,h; 
  x=gui_get_x("SpeedButton_Return") //【單據日期】橫向坐標 
  y=gui_get_y("SpeedButton_Return") //【單據日期】控件縱向坐標 
  w=gui_get_w("SpeedButton_Return") //【單據日期】控件寬度 
  h=gui_get_h("SpeedButton_Return") //【單據日期】控件高度 
  gui_create_speedbutton("ScrollBox_Base","timer_list",x*3+30,y,w+20,h,"引入缺勤記錄","call_csp.voucher.YC.提取補卡日期缺勤記錄"); 
  gui_set_font_color('timer_list',0x0000ff); 
  gui_set_hint ("timer_list", '提取【補卡日期】和【補卡部門】的缺勤記錄,此控件為灰色不可點擊時,請新增單據重新做單!'); 
  gui_create_speedbutton("ScrollBox_Base","timer_list_r",x*3+w+60,y,w+35,h,"刪除缺勤記錄數據","call_csp.voucher.YC.刪除缺勤記錄數據"); 
  gui_set_font_color('timer_list_r',0x0000ff); 
  gui_set_hint ("timer_list_r", '刪除已引入的缺勤記錄數據'); 
  gui_hide("timer_list_r") //隱藏【刪除缺勤記錄數據】控件 
  gui_create_speedbutton("ScrollBox_Base","timer_item",x*3+w*2+105,y,w+35,h,"自動添加補卡時間","call_csp.voucher.YC.自動添加補卡時間"); 
  gui_set_font_color('timer_item',0x0000ff); 
  gui_set_hint ("timer_item", '根據【缺勤次數】自動【添加明細行】并匹配【標準考勤時間】到【時間】列'); 
  gui_set_hint ("SpeedButton_Save", '單據要保存2次之后才允許送審!'); 
  gui_show("timer_list_r") //顯示【刪除考勤記錄數據】控件 
  if(v_voucher_id != '0') 
  { 
   刷新補卡日期缺勤明細() 
   }; 
   grid_filter_hide("MG_Item","工號==''");//隱藏【grid_copy_row】函數產生的空白行 
  return 1; 
}; 
 
int cell_change() 

  //change_col,change_col_id,change_row_id 
  return 1; 
}; 
 
int obj_change() 

  if(change_obj ==  "ext_Ext3" ) 
  { 
    int i,grid_rows; 
    string addcauseid,addcausename; 
    grid_rows = grid_find('MG_Item','emp_id',''); 
    addcauseid = gui_get_val("ext_Ext3") 
    addcausename = gui_get_text("ext_Ext3") 
    for(i=1;i<grid_rows;i++) 
    { 
      grid_set_v('MG_Item','add_cause_id',i,addcauseid); 
      grid_set_v('MG_Item','add_cause_name',i,addcausename); 
     }; 
   }; 
  //change_obj 
  return 1; 
}; 
 
int init_row() 

  return 1; 
}; 
 
int adjust_row() 

  return 1; 
}; 
 
int func_before_print() 

  //can_print=1; 
  return 1; 
}; 
 
int func_before_save() 

 if(gui_get_val("DateTimePicker_Voucher_Date") > get_cur_date_std()) 
  { 
   msg('單據日期超過當前日期,保存失敗,請檢查!'); 
   can_save = 0; 
  }; 
    int i,grid_rows,rb,rc,rd; 
    db_run("select count(*) from timer_mark_v_item where voucher_id='"+v_voucher_id+"'") 
    grid_rows = grid_find('MG_Item','emp_id',''); 
    rb = grid_find('MG_Item','mark_time',''); 
    rc = grid_rows-grid_find('MG_Item','mark_time',''); 
    rd = grid_rows-grid_find('MG_Item','add_cause_name',''); 
    gui_set_val("edit_Ext4",rc) 
    grid_rows = grid_rows-1 
    if(rb == '1') 
    { 
     msg('沒有補卡明細,禁止保存!'); 
     can_save = 0; 
     }; 
    if(rc != '0' && rb != '1') 
    { 
     自動添加補卡時間() 
     }if(grid_rows == db_res(0) && rc == '0' && rd == '0' && rb != '1'){ 
     msg('【補卡申請】完成,可以送審單據了!') 
     } 
     grid_sort("MG_Item",'emp_id,mark_time'); 
//按照【工號】,【日期】,【時間】檢查已做的申請單,避免重復做單 
 if(v_voucher_id == '0') 
 { 
  string sql,empid,empname,markdate,marktime,voucherid,deptname; 
  int i,j,rc,count; 
  grid_color_clear("MG_Item") 
  markdate = gui_get_val("date_Ext1") 
  deptname = gui_get_text("ext_Ext2") 
  rc = grid_find("MG_Item","emp_id",""); 
  for(i=1;i<rc;i++); 
  { 
   //dbg(v_voucher_id) 
   empid = grid_get_v("MG_Item","emp_id",i); 
   empname = grid_get_v("MG_Item","emp_name",i); 
   marktime = grid_get_v("MG_Item","mark_time",i); 
   db_run("select voucher_id from timer_mark_v_item where emp_id='" + empid + "'and mark_date='" + markdate + "' and mark_time='" + marktime + "'") 
    if(db_res(0) != '') 
    { 
     grid_del_row('MG_Item',i); 
     i--; 
     msg('【'+deptname+'】:【'+empid+'】:【'+empname+'】:【'+fmt_date(markdate,'yyyy年mm月dd日')+'】:【'+fmt_date(marktime,'hh:mi')+'】已申請補卡,重復申請記錄【自動刪除中】!'); 
     can_save = 0; 
     }if(grid_find("MG_Item","emp_id","") == '1'){ 
     gui_trigger_click("timer_list_r"); 
     }; 
    }; 
   }; 
  //can_save=1; 
  return 1; 
}; 
 
int func_before_check() 

  //can_check=1; 
  return 1; 
}; 
 
int func_after_save() 

  return 1; 
}; 
 
int func_after_check() 

  return 1; 
}; 
 
int func_after_print() 

  return 1; 
}; 
 
int func_before_oper() 

 if(oper_type() == 'ask_check') 
 { 
  int i,grid_rows,rb,rc,rd; 
  db_run("select count(*) from timer_mark_v_item where voucher_id='"+v_voucher_id+"'") 
  grid_rows = grid_find('MG_Item','emp_id',''); 
  rb = grid_find('MG_Item','mark_time',''); 
  rc = grid_rows-grid_find('MG_Item','mark_time',''); 
  rd = grid_rows-grid_find('MG_Item','add_cause_name',''); 
  if(v_voucher_id == '0') 
  { 
   msg('單據還沒有保存,請保存單據后再送審!') 
   can_oper=0 
   }; 
  if(db_res(0) == grid_rows) 
  { 
   msg('單據沒有保存2次,請保存單據后再送審!') 
   can_oper=0 
    view_voucher_by_no(v_voucher_no) 
   }; 
  grid_rows = grid_rows-1 
  if(v_voucher_id !='0' && rb != '1' && rc != '0' && rd != '0' && db_res(0) == grid_rows) 
  { 
   msg('還有【'+rc+'】行的【時間】列和【'+rd+'】行的【原因】列為空,請再保存單據一次并補齊【原因】列數據后再【送審】單據!') 
   can_oper=0 
   }; 
  if(rb != '1' && rc != '0' && rd == '0') 
  { 
   msg('還有【'+rc+'】行的【時間】列為空,請再保存單據一次后再【送審】單據') 
   can_oper=0 
   }; 
  if(v_voucher_id !='0' && rc == '0' && rd != '0' && rb != '1') 
  { 
   msg('還有【'+rd+'】行的【原因】列為空,請補齊【原因】列數據后再【送審】單據!') 
   can_oper=0 
   }; 
  }; 
  //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r,checked_update; 
  //can_oper=1; 
  return 1; 
}; 
 
int func_after_oper() 

  //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r,checked_update,duplicate; 
  return 1; 
}; 
 
int main() 

  return 1; 
};




        于 2023-05-22 21:40 被 fwj3861 修改




官方認證第三方服務團隊  樊文。ㄔ侥-葉子) QQ:121305301 TEL:+84869350626
承接越南北部-河內周邊省份-OIT部署和維護服務(24小時上門或遠程服務)
服務介紹:http://www.heartsmed.com/onlyit_service.html

fwj3861  [個人空間]
QQ名  越南-葉子(121305301)


注冊  2010-09-09
發貼數  382
精華貼  8
原創貼  18
來自  越南
狀態  正常

級別  贵宾
#2»發布于2023-05-22 18:13

單據審核完成,會同步數據到打卡記錄,在考勤數據處理這里提取出來重新處理一次,考勤日賬就正常了,沒有缺勤記錄了,再做一次補打卡申請就會彈出提示了








官方認證第三方服務團隊  樊文。ㄔ侥-葉子) QQ:121305301 TEL:+84869350626
承接越南北部-河內周邊省份-OIT部署和維護服務(24小時上門或遠程服務)
服務介紹:http://www.heartsmed.com/onlyit_service.html

hong816  [個人空間]
QQ名  浮天風


注冊  2010-04-26
發貼數  168
精華貼  1
原創貼  1
來自  
狀態  正常

級別  贵宾
#3»發布于2023-05-23 08:24

感謝分享!一些特殊需求確實麻煩!






誠信是金。。!提供onlyit系統初始建立使用一對一專業指導服務:401698929    13958183550


 3  1/1   1  

登錄后方可發貼


[ 電話: 0571-85462761 王先生 QQ: 124520435 加入軟件QQ群 - 杭州 - 浙ICP備19051128號-1 網安 33010402003225 ]

免费 成 人 黄 色 网站69