Compare commits

...

23 Commits

Author SHA1 Message Date
aa2e02beac fixing idxdept 2025-08-28 13:09:05 +07:00
a74010325f Remove unnecessary condition from attendance log query 2025-07-07 13:46:17 +07:00
e9e2b81cf0 Merge branch 'dev1.0.0' into main 2025-07-01 07:38:29 +07:00
ba9a8c4a4a Add functionality to fix late attendance records for R2 employees by date 2025-07-01 07:38:17 +07:00
b3ae073d01 Update file permissions for multiple PHP scripts 2025-06-30 15:07:28 +07:00
92c069d852 Merge branch 'dev1.0.0' 2025-06-30 15:06:47 +07:00
c3f9afc61e Add date filtering to attendance queries in LogController 2025-06-30 15:06:12 +07:00
4b1b65b38b Merge branch 'dev1.0.0' 2025-06-30 14:59:13 +07:00
a90441e9fd Add update query for attendance list in LogController 2025-06-30 14:59:06 +07:00
5d9fe2757d Merge branch 'dev1.0.0' 2025-06-30 14:54:05 +07:00
a61d246486 Uncomment attendance list update query execution in LogController 2025-06-30 14:53:57 +07:00
f9648cd682 Merge branch 'dev1.0.0' 2025-06-30 07:18:04 +07:00
bb2c95c2b6 Comment out debug echo statement for query logging in LogController 2025-06-30 07:17:46 +07:00
6893788bd2 Merge branch 'dev1.0.0' 2025-06-30 06:36:29 +07:00
6b1e3c979e Enable query logging for attendance processing by uncommenting the echo statement 2025-06-30 06:36:21 +07:00
e96358d652 Merge branch 'dev1.0.0' 2025-06-27 15:59:40 +07:00
27492fc088 Add detailed logging for attendance processing: include start time and process details, and comment out end time log 2025-06-27 15:59:20 +07:00
ca530ec17c Merge branch 'dev1.0.0' 2025-06-27 15:51:12 +07:00
72f311aaff Refactor attendance log insertion query: remove redundant field 'lateperemployeer2' and comment out previous query for clarity 2025-06-27 15:50:55 +07:00
0923f5e0e0 Merge branch 'dev1.0.0' 2025-06-27 08:07:03 +07:00
822c2e8af9 Enhance attendance logging: add shift code handling and update duration calculations for specific departments 2025-06-27 08:06:49 +07:00
c830d3f90c Merge branch 'dev1.0.0' 2025-06-27 08:03:07 +07:00
9315a92fce Implement LogController for attendance checkout processing and update duration calculations 2025-06-27 08:02:42 +07:00
15 changed files with 310 additions and 38 deletions

8
fixingcheckinlate.php Normal file → Executable file
View File

@ -66,7 +66,7 @@ class LogController
$qry="select t.endtimestr,a.* $qry="select t.endtimestr,a.*
from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee
inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode
where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and t.attendancename='IN'"; where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and t.attendancename='IN' and cast(a.dates as date)=cast(now() as date)";
$rs=$this->selectquerySP($qry); $rs=$this->selectquerySP($qry);
if($rs){ if($rs){
while($rw=$rs->fetch()){ while($rw=$rs->fetch()){
@ -87,10 +87,10 @@ class LogController
} }
} }
// === Update tbl_attendancelist for lateemployee // === Update tbl_attendancelist for lateemployee
// $qry="update tbl_attendancelist t, tbl_attendanceemployee a set t.lateperemployee=a.totallateperemp $qry="update tbl_attendancelist t, tbl_attendanceemployee a set t.lateperemployee=a.totallateperemp
// where a._idx=t.idxattendance and a.totallateperemp<>t.lateperemployee"; where a._idx=t.idxattendance and a.totallateperemp<>t.lateperemployee and cast(a.dates as date)=cast(now() as date)";
// echo $qry."\n"; // echo $qry."\n";
// $this->executeSP($qry); $this->executeSP($qry);
} }
return $rtn; return $rtn;
} }

114
fixingcheckinlatebydate.php Normal file
View File

@ -0,0 +1,114 @@
<?php
include('zklib/ZKLib.php');
class LogController
{
// $ppHCMTT#2024
public function fn_getconn(){
$pdo = new PDO("mysql:host=localhost;dbname=dbhcm", "apphcm", "\$ppHCMTT#2024");
return $pdo;
}
public function selectquerySP($sql){
// $pdo = new PDO("mysql:host=".DB_HOST_NAME.";dbname=".DB_IMS, DB_USER_NAME, DB_USER_PASS);
$pdo = $this->fn_getconn(); //new PDO("mysql:host=localhost;dbname=dbhcm", "apphcm", "\$pp");
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
return $q;
}
public function executeSP($qry){
$rtn=false;
$pdo = $this->fn_getconn();
$statement = $pdo->prepare($qry);
if($statement->execute()){
$rtn=true;
}
return $rtn;
}
public function fn_getfieldvalue($fieldname,$qry){
$rs=$this->selectquerySP($qry);
$rtn="";
if($rs){
// $rw=$rs->fetch();
// $rtn=$rw[$fieldname];
while($rw=$rs->fetch()){
$rtn=$rw[$fieldname];
}
}
return $rtn;
}
public function fn_getfieldsvalues($fieldname,$qry){
$rs=$this->selectquerySP($qry);
$rtn="";
if($rs){
// $rw=$rs->fetch();
// $rtn=$rw[$fieldname];
while($rw=$rs->fetch()){
$d=explode(",",$fieldname);
for($i=0;$i<count($d);$i++){
$rtn.=$rw[$d[$i]].",";
}
}
// echo $rtn;return false;
$rtn=substr($rtn,0,strlen($rtn)-1);
}
return explode(",",$rtn);
}
public function index(){
$argv=$_SERVER['argv'];
$rtn=false;
$qry="select t.endtimestr,a.*
from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee
inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode
where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and t.attendancename='IN' and cast(a.dates as date)=cast('".$argv[1]."' as date)";
$rs=$this->selectquerySP($qry);
if($rs){
while($rw=$rs->fetch()){
$dates=date("Y-m-d", strtotime($rw['dates']));
$datestimes=date("Y-m-d H:i", strtotime($rw['datestimes']));
$time1=strtotime($dates." ".$rw['endtimestr']);
$time2=strtotime($datestimes);
$totaldur=0;
if($time2>$time1){
$totaldur=round(($time2 - $time1) / 60,2);
}
echo $rw['_idx']." ".$rw['totallateperemp']." ".$totaldur."\n";
if($rw['totallateperemp']!=$totaldur){
echo $rw['_idx']." ".$rw['datestimes']." ".$rw['endtimestr']." ".$rw['totallateperemp']."=".$totaldur."\n";
$qry="update tbl_attendanceemployee set totallateperemp='$totaldur',totallateperempr2=0 where _idx='".$rw['_idx']."'"."\n";
$this->executeSP($qry);
}
}
// === Update tbl_attendancelist for lateemployee
$qry="update tbl_attendancelist t, tbl_attendanceemployee a set t.lateperemployee=a.totallateperemp
where a._idx=t.idxattendance and a.totallateperemp<>t.lateperemployee and cast(a.dates as date)=cast('".$argv[1]."' as date)";
// echo $qry."\n";
$this->executeSP($qry);
}
return $rtn;
}
}
$cl = new LogController();
$rtn =$cl->index();
#if(isset($_REQUEST['isgetdata'])){
# echo "indx";
# $rtn = $cl->index();
#}
#else{
# $rtn = $cl->fn_curl();
#}
echo $rtn;

0
fixingcheckout.php Normal file → Executable file
View File

0
fixingcheckoutbydate.php Normal file → Executable file
View File

7
fixingr2late.php Normal file → Executable file
View File

@ -66,7 +66,8 @@ class LogController
$qry="select t.endtimestr,a.* $qry="select t.endtimestr,a.*
from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee
inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode
where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and a.attendancename='R2'"; where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and a.attendancename='R2'
and cast(a.dates as date)=cast(now() as date)";
$rs=$this->selectquerySP($qry); $rs=$this->selectquerySP($qry);
if($rs){ if($rs){
while($rw=$rs->fetch()){ while($rw=$rs->fetch()){
@ -86,6 +87,10 @@ class LogController
} }
} }
} }
$qry="update tbl_attendancelist t, tbl_attendanceemployee a set t.lateperemployeer2=a.totallateperempr2
where a._idx=t.idxattendance and a.totallateperempr2<>t.lateperemployeer2 and cast(a.dates as date)=cast(now() as date)";
// echo $qry."\n";
$this->executeSP($qry);
return $rtn; return $rtn;
} }

113
fixingr2latebydate.php Normal file
View File

@ -0,0 +1,113 @@
<?php
include('zklib/ZKLib.php');
class LogController
{
// $ppHCMTT#2024
public function fn_getconn(){
$pdo = new PDO("mysql:host=localhost;dbname=dbhcm", "apphcm", "\$ppHCMTT#2024");
return $pdo;
}
public function selectquerySP($sql){
// $pdo = new PDO("mysql:host=".DB_HOST_NAME.";dbname=".DB_IMS, DB_USER_NAME, DB_USER_PASS);
$pdo = $this->fn_getconn(); //new PDO("mysql:host=localhost;dbname=dbhcm", "apphcm", "\$pp");
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
return $q;
}
public function executeSP($qry){
$rtn=false;
$pdo = $this->fn_getconn();
$statement = $pdo->prepare($qry);
if($statement->execute()){
$rtn=true;
}
return $rtn;
}
public function fn_getfieldvalue($fieldname,$qry){
$rs=$this->selectquerySP($qry);
$rtn="";
if($rs){
// $rw=$rs->fetch();
// $rtn=$rw[$fieldname];
while($rw=$rs->fetch()){
$rtn=$rw[$fieldname];
}
}
return $rtn;
}
public function fn_getfieldsvalues($fieldname,$qry){
$rs=$this->selectquerySP($qry);
$rtn="";
if($rs){
// $rw=$rs->fetch();
// $rtn=$rw[$fieldname];
while($rw=$rs->fetch()){
$d=explode(",",$fieldname);
for($i=0;$i<count($d);$i++){
$rtn.=$rw[$d[$i]].",";
}
}
// echo $rtn;return false;
$rtn=substr($rtn,0,strlen($rtn)-1);
}
return explode(",",$rtn);
}
public function index(){
$argv=$_SERVER['argv'];
$rtn=false;
$qry="select t.endtimestr,a.*
from tbl_employee e inner join tbl_attendanceemployee a on e._idx=a.idxemployee
inner join tbl_attendancethreshold t on e.idxdept=t.idxdept and t.attendancename=a.attendancename and a.shiftcode=t.shiftcode
where a.isdeleted=0 and t.isdeleted=0 and e.isdeleted=0 and a.attendancename='R2'
and cast(a.dates as date)=cast('".$argv[1]."' as date)";
$rs=$this->selectquerySP($qry);
if($rs){
while($rw=$rs->fetch()){
$dates=date("Y-m-d", strtotime($rw['dates']));
$datestimes=date("Y-m-d H:i", strtotime($rw['datestimes']));
$time1=strtotime($dates." ".$rw['endtimestr']);
$time2=strtotime($datestimes);
$totaldur=0;
if($time2>$time1){
$totaldur=round(($time2 - $time1) / 60,2);
}
if($rw['totallateperempr2']!=$totaldur){
echo $rw['_idx']." ".$rw['datestimes']." ".$rw['endtimestr']." ".$rw['totallateperempr2']."=".$totaldur."\n";
$qry="update tbl_attendanceemployee set totallateperemp=0,totallateperempr2='$totaldur' where _idx='".$rw['_idx']."'";
$this->executeSP($qry);
}
}
}
$qry="update tbl_attendancelist t, tbl_attendanceemployee a set t.lateperemployeer2=a.totallateperempr2
where a._idx=t.idxattendance and a.totallateperempr2<>t.lateperemployeer2 and cast(a.dates as date)=cast('".$argv[1]."' as date)";
// echo $qry."\n";
$this->executeSP($qry);
return $rtn;
}
}
$cl = new LogController();
$rtn =$cl->index();
#if(isset($_REQUEST['isgetdata'])){
# echo "indx";
# $rtn = $cl->index();
#}
#else{
# $rtn = $cl->fn_curl();
#}
echo $rtn;

0
getattsync.php Normal file → Executable file
View File

0
getattsync2.php Normal file → Executable file
View File

64
getattsyncbydate.php Normal file → Executable file
View File

@ -100,6 +100,10 @@ class LogController
if($rs){ if($rs){
echo "start time : ".date("Y-m-d H:i:s")."\n"; echo "start time : ".date("Y-m-d H:i:s")."\n";
while($rw=$rs->fetch()){ while($rw=$rs->fetch()){
$swhereshiftcode="";
if($rw['shiftcode']&&$rw['idxdept']==22){
$swhereshiftcode="and shiftcode='".$rw['shiftcode']."'";
}
if($rw['idxdept']==30){ // === only call center department if($rw['idxdept']==30){ // === only call center department
if($rw['attendancename']=='IN'){ if($rw['attendancename']=='IN'){
$qry="insert into tbl_attendancelist $qry="insert into tbl_attendancelist
@ -108,13 +112,13 @@ class LogController
officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."', officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."',
serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',checkin='".$rw['datestimes']."', serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',checkin='".$rw['datestimes']."',
islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."', islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."',
shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."', shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."',
deviceidcheckin='".$rw['deviceidcheckin']."',deviceidcheckout='".$rw['deviceidcheckout']."', deviceidcheckin='".$rw['deviceidcheckin']."',
iby='svc',idt='".$rw['datestimes']."'"; iby='svc',idt='".$rw['datestimes']."'";
$qrychk="select _idx from tbl_attendancelist $qrychk="select _idx from tbl_attendancelist
where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date) where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date)
and isdeleted=0 order by _idx desc limit 1"; $swhereshiftcode and isdeleted=0 order by _idx desc limit 1";
if($this->fn_rowisexists($qrychk)){ if($this->fn_rowisexists($qrychk)){
$qry=""; $qry="";
} }
@ -125,7 +129,7 @@ class LogController
$qrychk="select _idx from tbl_attendancelist $qrychk="select _idx from tbl_attendancelist
where idxemployee='".$rw['idxemployee']."' where idxemployee='".$rw['idxemployee']."'
and cast(checkin as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) and cast(checkin as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date)
and (checkout is null) $swhereshiftcode and (checkout is null)
and isdeleted=0 order by _idx desc limit 1"; and isdeleted=0 order by _idx desc limit 1";
// echo $qrychk;//return false; // echo $qrychk;//return false;
@ -133,13 +137,13 @@ class LogController
if($_idx){ if($_idx){
$qry="update tbl_attendancelist $qry="update tbl_attendancelist
set checkout='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."' set checkout='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."'
where _idx='$_idx' "; where _idx='$_idx' and UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)";
$qryduration="update tbl_attendancelist $qryduration="update tbl_attendancelist
set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout))
where _idx='$_idx'"; where _idx='$_idx'";
$qrychk="select _idx from tbl_attendancelist $qrychk="select _idx from tbl_attendancelist
where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date)
and idxemployee='".$rw['idxemployee']."' and isdeleted=0 $swhereshiftcode and idxemployee='".$rw['idxemployee']."' and isdeleted=0
order by _idx desc limit 1"; order by _idx desc limit 1";
if($this->fn_rowisexists($qrychk)){ if($this->fn_rowisexists($qrychk)){
$qry="";$qryduration=""; $qry="";$qryduration="";
@ -152,19 +156,21 @@ class LogController
$qrychk="select _idx from tbl_attendancelist $qrychk="select _idx from tbl_attendancelist
where idxemployee='".$rw['idxemployee']."' where idxemployee='".$rw['idxemployee']."'
and cast(checkin as date)=date_sub('".date("Y-m-d",strtotime($rw['datestimes']))."', INTERVAL 1 day) and checkout is null and cast(checkin as date)=date_sub('".date("Y-m-d",strtotime($rw['datestimes']))."', INTERVAL 1 day) and checkout is null
and isdeleted=0 order by _idx desc limit 1"; $swhereshiftcode and isdeleted=0 order by _idx desc limit 1";
// echo $qrychk;return false; // echo $qrychk;return false;
$_idx=$this->fn_getfieldvalue("_idx",$qrychk); $_idx=$this->fn_getfieldvalue("_idx",$qrychk);
if($_idx){ if($_idx){
$qry="update tbl_attendancelist set checkout='".$rw['datestimes']."' where _idx='$_idx' and checkout is null"; $qry="update tbl_attendancelist
set checkout='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."'
where _idx='$_idx' and (UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)) and checkout is null";
// $qry="update tbl_attendancelist set checkout='".$rw['datestimes']."' where _idx='$_idx'"; // $qry="update tbl_attendancelist set checkout='".$rw['datestimes']."' where _idx='$_idx'";
$qryduration="update tbl_attendancelist $qryduration="update tbl_attendancelist
set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout))
where _idx='$_idx'"; where _idx='$_idx'";
$qrychk="select _idx from tbl_attendancelist $qrychk="select _idx from tbl_attendancelist
where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date)
and idxemployee='".$rw['idxemployee']."' and isdeleted=0 $swhereshiftcode and idxemployee='".$rw['idxemployee']."' and isdeleted=0
order by _idx desc limit 1"; order by _idx desc limit 1";
if($this->fn_rowisexists($qrychk)){ if($this->fn_rowisexists($qrychk)){
$qry="";$qryduration=""; $qry="";$qryduration="";
@ -192,7 +198,7 @@ class LogController
else{ // === Non call center dept else{ // === Non call center dept
if($rw['attendancename']=='IN'){$attfield="checkin='".$rw['datestimes']."',";} if($rw['attendancename']=='IN'){$attfield="checkin='".$rw['datestimes']."',";}
if($rw['attendancename']=='R1'){$attfield="R1='".$rw['datestimes']."',";} if($rw['attendancename']=='R1'){$attfield="R1='".$rw['datestimes']."',";}
if($rw['attendancename']=='R2'){$attfield="R2='".$rw['datestimes']."',";} if($rw['attendancename']=='R2'){$attfield="R2='".$rw['datestimes']."',lateperemployeer2='".$rw['lateperemployeer2']."',";}
if($rw['attendancename']=='OUT'){$attfield="checkout='".$rw['datestimes']."',";} if($rw['attendancename']=='OUT'){$attfield="checkout='".$rw['datestimes']."',";}
$qry="insert into tbl_attendancelist $qry="insert into tbl_attendancelist
@ -201,36 +207,48 @@ class LogController
officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."', officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."',
serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield." serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield."
islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."', islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."',
shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."', shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."',
deviceidcheckin='".$rw['deviceidcheckin']."',deviceidcheckout='".$rw['deviceidcheckout']."', deviceidcheckin='".$rw['deviceidcheckin']."',
iby='svc',idt='".$rw['datestimes']."'"; iby='svc',idt='".$rw['datestimes']."'";
$qrychk="select _idx,checkin,checkout,lateperemployee from tbl_attendancelist $qrychk="select _idx,checkin,checkout,lateperemployee from tbl_attendancelist
where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date) and isdeleted=0 order by _idx desc limit 1"; where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date)
$swhereshiftcode and isdeleted=0 order by _idx desc limit 1";
if($this->fn_rowisexists($qrychk)){ if($this->fn_rowisexists($qrychk)){
// $_idx=$this->fn_getfieldvalue("_idx",$qrychk);
$sp=$this->fn_getfieldsvalues("_idx,checkin,checkout,lateperemployee", $qrychk); $sp=$this->fn_getfieldsvalues("_idx,checkin,checkout,lateperemployee", $qrychk);
$_idx=$sp[0];$checkin=$sp[1];$checkout=$sp[2];$lateperemployee=$sp[3]; $_idx=$sp[0];$checkin=$sp[1];$checkout=$sp[2];$lateperemployee=$sp[3];
$laterperemployeefield=""; $laterperemployeefield="";
if(!$lateperemployee){ // if(!$lateperemployee){
$laterperemployeefield="lateperemployee='".$rw['lateperemployee']."',"; // $laterperemployeefield="lateperemployee='".$rw['lateperemployee']."',";
} // }
$qry="update tbl_attendancelist $qry="update tbl_attendancelist
set ".$attfield.$laterperemployeefield."uby='svc',udt='".$rw['datestimes']."' set ".$attfield.$laterperemployeefield."uby='svc',udt='".$rw['datestimes']."'
where _idx='$_idx'"; where _idx='$_idx'";
if($rw['attendancename']=='IN'&&$checkin!=null){ if($rw['attendancename']=='IN'&&$checkin!=null){
$qry="update tbl_attendancelist $qry="update tbl_attendancelist
set uby='svc',udt='".$rw['datestimes']."' set uby='svc',udt='".$rw['datestimes']."'
where _idx='$_idx'"; where _idx='$_idx'";
} }
if($rw['attendancename']=='OUT'){ if($rw['attendancename']=='OUT'){
$qry="update tbl_attendancelist $qry="update tbl_attendancelist
set ".$attfield."uby='svc',udt='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."' set ".$attfield."uby='svc',udt='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."'
where _idx='$_idx' and UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)"; where _idx='$_idx' and UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)";
$qryduration="update tbl_attendancelist
set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) $idxdept=$rw['idxdept'];
where _idx='$_idx'"; if($idxdept==33||$idxdept==34||$idxdept==30||$idxdept==22){
$qryduration="update tbl_attendancelist
set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout))
where _idx='$_idx'";
}
else{
$qryduration="update tbl_attendancelist
set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,R1)+TIMESTAMPDIFF(SECOND,R2,checkout))
where _idx='$_idx'";
}
} }
} }

0
getdatadevices.php Normal file → Executable file
View File

0
getdatadevices2.php Normal file → Executable file
View File

0
getdatadevicesbydate.php Normal file → Executable file
View File

10
getdatadevicesbyip.php Normal file → Executable file
View File

@ -82,8 +82,8 @@ class LogController
public function index() public function index()
{ {
$ip = "192.168.100.76"; //$row['deviceip']; $ip = "172.16.116.5"; //$row['deviceip'];
$qry="select * from tbl_deviceinfo where _idx=36 and isdeleted=0 order by _idx asc"; $qry="select * from tbl_deviceinfo where isreprocess=1 and isdeleted=0 order by _idx asc";
#echo $qry; #echo $qry;
$rs=$this->selectquerySP($qry); $rs=$this->selectquerySP($qry);
if($rs){ if($rs){
@ -107,7 +107,7 @@ class LogController
$data = []; $data = [];
foreach ($getData as $att) { foreach ($getData as $att) {
// echo date("Y-m-d", strtotime($att['timestamp'])); // echo date("Y-m-d", strtotime($att['timestamp']));
if (date("Y-m-d", strtotime($att['timestamp'])) == date("Y-m-d")) { if (date("Y-m-d", strtotime($att['timestamp'])) == date("Y-m-d",strtotime($rw['reprocessdate']))) {
// $data[] = [ // $data[] = [
// "idUser" => $att['id'], // "idUser" => $att['id'],
// "name" => isset($users[$att['id']]) ? $users[$att['id']]['name'] : $att['id'], // "name" => isset($users[$att['id']]) ? $users[$att['id']]['name'] : $att['id'],
@ -117,12 +117,12 @@ class LogController
// "deviceIP" => $ip // "deviceIP" => $ip
// ]; // ];
// echo json_encode($att)."\n"; // echo json_encode($att)."\n";
$res=$this->fn_setattendance($att, $ip); // $res=$this->fn_setattendance($att, $ip);
$reslog=$this->fn_setattendancelogs($att, $ip); $reslog=$this->fn_setattendancelogs($att, $ip);
$data[] = [ $data[] = [
"fingerid" => $att['id'], "fingerid" => $att['id'],
"time" => date("Y-m-d H:i:s", strtotime($att['timestamp'])), "time" => date("Y-m-d H:i:s", strtotime($att['timestamp'])),
"status" => $res "status" => $reslog
]; ];
} }
} }

28
getdatadevicesbylogs.php Normal file → Executable file
View File

@ -84,9 +84,10 @@ class LogController
if($rs){ if($rs){
$d=array(); $d=array();
while($rw=$rs->fetch()){ while($rw=$rs->fetch()){
echo "start time : ".date("Y-m-d H:i:s")."\n";
$d['timestamp']=date("Y-m-d H:i:s", strtotime($rw['dates'].' '.$rw['times'])); $d['timestamp']=date("Y-m-d H:i:s", strtotime($rw['dates'].' '.$rw['times']));
$d['id']=$rw['fingerid']; $d['id']=$rw['fingerid'];
echo "start time : ".date("Y-m-d H:i:s")." Process dates ".$d['timestamp'].", FingerId : ".$rw['fingerid']." \n";
$res=$this->fn_setattendance($d, $rw['deviceip']); $res=$this->fn_setattendance($d, $rw['deviceip']);
if($res){ if($res){
$qryupdate="update tbl_attendancelogs set isprocess=1,processdate=now() where _idx='".$rw['_idx']."'"; $qryupdate="update tbl_attendancelogs set isprocess=1,processdate=now() where _idx='".$rw['_idx']."'";
@ -643,13 +644,22 @@ class LogController
if($rw['attendancename']=='R2'){$attfield="R2='".$rw['datestimes']."',lateperemployeer2='".$rw['lateperemployeer2']."',";} if($rw['attendancename']=='R2'){$attfield="R2='".$rw['datestimes']."',lateperemployeer2='".$rw['lateperemployeer2']."',";}
if($rw['attendancename']=='OUT'){$attfield="checkout='".$rw['datestimes']."',";} if($rw['attendancename']=='OUT'){$attfield="checkout='".$rw['datestimes']."',";}
// $qry="insert into tbl_attendancelist
// set idxattendance='".$rw['_idx']."',idxemployee='".$rw['idxemployee']."',nik='".$rw['nik']."',
// employeename='".$rw['employeename']."',title='".$rw['title']."',levelname='".$rw['levelname']."',
// officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."',
// serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield."
// islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."',
// shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."',
// deviceidcheckin='".$rw['deviceidcheckin']."',
// iby='svc',idt='".$rw['datestimes']."'";
$qry="insert into tbl_attendancelist $qry="insert into tbl_attendancelist
set idxattendance='".$rw['_idx']."',idxemployee='".$rw['idxemployee']."',nik='".$rw['nik']."', set idxattendance='".$rw['_idx']."',idxemployee='".$rw['idxemployee']."',nik='".$rw['nik']."',
employeename='".$rw['employeename']."',title='".$rw['title']."',levelname='".$rw['levelname']."', employeename='".$rw['employeename']."',title='".$rw['title']."',levelname='".$rw['levelname']."',
officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."', officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."',
serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield." serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield."
islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."', islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."',
shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."', shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',
deviceidcheckin='".$rw['deviceidcheckin']."', deviceidcheckin='".$rw['deviceidcheckin']."',
iby='svc',idt='".$rw['datestimes']."'"; iby='svc',idt='".$rw['datestimes']."'";
@ -704,15 +714,27 @@ class LogController
} }
} }
echo "end time : ".date("Y-m-d H:i:s")."\n"; // echo "end time : ".date("Y-m-d H:i:s")."\n";
} }
$rtn=true; $rtn=true;
return $rtn; return $rtn;
} }
public function fn_idxdept(){
$qry="update tbl_attendanceemployee a, tbl_employee e set a.idxdept = e.idxdept
where e._idx=a.idxemployee and a.idxdept=0";
$this->executeSP($qry);
$qry="update tbl_attendancelist a, tbl_employee e set a.idxdept = e.idxdept
where e._idx=a.idxemployee and a.idxdept=0";
$this->executeSP($qry);
return true;
}
} }
$cl = new LogController(); $cl = new LogController();
$rtn =$cl->index(); $rtn =$cl->index();
$rtn =$cl->fn_idxdept();
#if(isset($_REQUEST['isgetdata'])){ #if(isset($_REQUEST['isgetdata'])){
# echo "indx"; # echo "indx";

4
getdatadevicesbylogsbydates.php Normal file → Executable file
View File

@ -78,7 +78,7 @@ class LogController
$argv=$_SERVER['argv']; $argv=$_SERVER['argv'];
// echo $argv[1];return false; // echo $argv[1];return false;
$qry="select * from tbl_attendancelogs $qry="select * from tbl_attendancelogs
where cast(dates as date)=cast('".$argv[1]."' as date) and isprocess=0 where cast(dates as date)=cast('".$argv[1]."' as date)
order by _idx asc"; order by _idx asc";
$rs=$this->selectquerySP($qry); $rs=$this->selectquerySP($qry);
if($rs){ if($rs){
@ -504,7 +504,7 @@ class LogController
} }
// echo $qry."\n"; // echo $qry."\n";
// if($deviceid=='172.16.110.251'){ // if($deviceid=='172.16.110.251'){
//echo $qry."\n"; // echo $qry."\n";
// } // }
if($this->executeSP($qry)){ if($this->executeSP($qry)){
// if($rw['attendancename']=='OUT'){ // if($rw['attendancename']=='OUT'){