之前有用戶提出【補打卡申請單據】增加導入功能,以便可以批量做補打卡申請,為使部門文員更加簡單的做補打卡申請單據,在請官方更新【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; }; |