Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Your IP : 18.119.166.141
Current Path : /var/www/html/oums/ |
| Current File : /var/www/html/oums/attendance_report_excel.php |
<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
include("sys_session.php");
include("sys_connect.php");
include("sys_mainphp.php");
$resp_mesg = "";
$resp_stat = "";
$resp_file = "";
$d = 1;
$mnth_days = cal_days_in_month(CAL_GREGORIAN, substr($_POST['attn_mnth'], 5, 2), substr($_POST['attn_mnth'], 0, 4));
if ($_POST['attn_mnth'] == date('Y-m')) {
$entr_days = date('d') - 1;
$rept_days = date('d');
} else {
$entr_days = $mnth_days;
$rept_days = $mnth_days;
}
for ($d = 1; $d <= $entr_days; $d++) {
$caln_date = $_POST['attn_mnth'] . '-' . substr('0' . $d, -2, 2);
if ($caln_date != date('Y-m-d')) {
// INSERT HOLIDAY STATUS
$mysql = "insert ignore into attendance (fdeptcode,fattndate,femplcode,fattnstat,fupdtuser,fattnremk,fupdttime)
select em.fdeptcode,'$caln_date',em.femplcode,if(dayname('$caln_date')='Sunday','WO','HD') as fattnstat,
'AUTO' as fupdtuser,'' as fattnremk, now() as fupdttime
from masempl em
inner join masholiday hd on em.fdeptcode = hd.fdeptcode and hd.fholidate='$caln_date'
where fempltype='p' and femplstat='T' and fattnentr='T';";
$myres = mysqli_query($mycon, $mysql);
// INSERT ABSENT STATUS
$mysql = "insert ignore into attendance (fdeptcode,fattndate,femplcode,fattnstat,fupdtuser,fattnremk,fupdttime)
select em.fdeptcode,'$caln_date',em.femplcode,if(dayname('$caln_date')='Sunday','WO','AB') as fattnstat,
'AUTO' as fupdtuser,'' as fattnremk, now() as fupdttime from masempl em
left join attendance at on em.femplcode = at.femplcode and fattndate='$caln_date'
where fempltype='p' and femplstat='T' and fattnentr='T' and at.femplcode is null;";
$myres = mysqli_query($mycon, $mysql);
}
}
require_once("phpexcel/Classes/PHPExcel.php");
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Logisys")
->setLastModifiedBy("Logisys")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Report File");
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 2);
$objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(10);
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop(1.0);
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.5);
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(1.0);
$objPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);
$objPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(false);
$objPHPExcel->getActiveSheet()->setShowGridlines(true);
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&C&HLogisys, Bangalore' . chr(10) . 'Attendance Summary Report');
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . '&CPage &P of &N');
$mysql = "SET SESSION group_concat_max_len = 1000000;";
$myres = mysqli_query($mycon, $mysql);
$mysql = "select date_format(fattndate,'%Y-%m') as fattnmnth,dp.fdeptcode,dp.fdeptname,em.femplcode,em.femplname,dn.fdesnname,em.femplmobl,em.fsalrhead,
sum(case when fattnstat='PR' then 1 else 0 end) as ftotpr,
sum(case when fattnstat='AB' then 1 else 0 end) as ftotab,
sum(case when fattnstat='CL' then 1 else 0 end) as ftotcl,
sum(case when fattnstat in ('HD','WO') then 1 else 0 end) as ftothd,
sec_to_time(sum(case when flogidiff>'-00:00:00' then time_to_sec(flogidiff) else 0 end)) as ftottime,
sum(case when flogidiff>'-00:00:00' then 1 else 0 end) as ftotlate,
group_concat(at.fattndate,',',at.fattnstat,',',at.flogitime,',',at.flogotime,',',flogidiff order by at.fattndate separator '|') as fattndetl
from masempl em
inner join attendance at on em.femplcode = at.femplcode and date_format(at.fattndate,'%Y-%m')='$_POST[attn_mnth]'
inner join masdept dp on em.fdeptcode = dp.fdeptcode and dp.fdeptcode like '$_POST[dept_code]' and dp.fattnenbl='T'
inner join masdesn dn on em.fdesncode = dn.fdesncode
where fempltype='p'
group by em.femplcode
order by em.fsalrhead,em.fdeptcode,dn.fdesnordr,dn.fdesncode,em.fempltype,em.femplname";
$myres = mysqli_query($mycon, $mysql);
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Sl. No.')
->setCellValue('B1', 'Company')
->setCellValue('C1', 'Client')
->setCellValue('D1', 'Month')
->setCellValue('E1', 'Empl ID')
->setCellValue('F1', 'Empl Name')
->setCellValue('G1', 'Summary')
->setCellValue('G2', 'Present')
->setCellValue('H2', 'Absent')
->setCellValue('I2', 'Leave With Pay')
->setCellValue('j2', 'Paid Holidays')
->setCellValue('K2', 'Leave W/O Pay')
->setCellValue('L2', 'Tot Late in H:M')
->setCellValue('M2', 'No. of Times Late');
$d = 1;
$j = 12;
$k = 13;
$l = 14;
for ($d = 1; $d <= $mnth_days; $d++) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(getNameFromNumber($d + $j) . '1', $d)
->setCellValue(getNameFromNumber($d + $j) . '2', 'In Time')
->setCellValue(getNameFromNumber($d + $k) . '1', $d)
->setCellValue(getNameFromNumber($d + $k) . '2', 'Out Time')
->setCellValue(getNameFromNumber($d + $l) . '1', $d)
->setCellValue(getNameFromNumber($d + $l) . '2', 'Loss in Min.');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $j) . '1')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $k) . '1')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $l) . '1')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $j) . '2')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $k) . '2')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $l) . '2')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $j) . '1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $k) . '1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $l) . '1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $j) . '2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $k) . '2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $l) . '2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->mergeCells(getNameFromNumber($d + $j) . '1:' . getNameFromNumber($d + $j + 2) . '1');
$j = $j + 2;
$k = $k + 2;
$l = $l + 2;
}
$i = 3;
while ($myrow = mysqli_fetch_object($myres)) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A' . $i, $i - 2)
->setCellValue('B' . $i, $myrow->fsalrhead)
->setCellValue('C' . $i, $myrow->fdeptname)
->setCellValue('D' . $i, $myrow->fattnmnth)
->setCellValue('E' . $i, $myrow->femplcode)
->setCellValue('F' . $i, $myrow->femplname)
->setCellValue('G' . $i, $myrow->ftotpr)
->setCellValue('H' . $i, $myrow->ftotab)
->setCellValue('I' . $i, $myrow->ftotcl)
->setCellValue('J' . $i, $myrow->ftothd)
->setCellValue('K' . $i, $myrow->ftotab)
->setCellValue('L' . $i, $myrow->ftottime)
->setCellValue('M' . $i, $myrow->ftotlate);
$d = 1;
$j = 12;
$k = 13;
$l = 14;
$attn_indx = explode('|', $myrow->fattndetl);
for ($d = 1; $d <= $rept_days; $d++) {
$attn_date = "";
$attn_stat = "";
$logi_time = "";
$logo_time = "";
$logi_diff = "";
$attn_remk = "";
if (!isset($attn_indx[$d - 1])) {
$attn_date = "-";
$attn_stat = "-";
$logi_time = "-";
$logo_time = "-";
$logi_diff = "-";
$attn_remk = "-";
} else {
$attn_indz = explode(',', $attn_indx[$d - 1]);
$attn_date = $attn_indz[0];
$attn_stat = $attn_indz[1];
$logi_time = $attn_indz[2];
$logo_time = $attn_indz[3];
$logi_diff = $attn_indz[4];
if ($attn_stat == 'AB') {
$attn_remk = "Absent";
} elseif ($attn_stat == 'WO') {
$attn_remk = "Sunday";
} elseif ($attn_stat == 'HD') {
$attn_remk = "Holiday";
} else {
$attn_remk = $logi_diff;
}
}
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(getNameFromNumber($d + $j) . $i, $logi_time)
->setCellValue(getNameFromNumber($d + $k) . $i, $logo_time)
->setCellValue(getNameFromNumber($d + $l) . $i, $attn_remk);
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $j) . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $k) . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle(getNameFromNumber($d + $l) . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$j = $j + 2;
$k = $k + 2;
$l = $l + 2;
}
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(25);
$objPHPExcel->getActiveSheet()->getRowDimension($i + 1)->setRowHeight(25);
$i++;
}
$objPHPExcel->getActiveSheet()->freezePane('A3');
$objPHPExcel->getActiveSheet()->mergeCells('A1:A2');
$objPHPExcel->getActiveSheet()->mergeCells('B1:B2');
$objPHPExcel->getActiveSheet()->mergeCells('C1:C2');
$objPHPExcel->getActiveSheet()->mergeCells('D1:D2');
$objPHPExcel->getActiveSheet()->mergeCells('E1:E2');
$objPHPExcel->getActiveSheet()->mergeCells('F1:F2');
$objPHPExcel->getActiveSheet()->mergeCells('G1:M1');
$objPHPExcel->getActiveSheet()->getStyle('A1:X2')->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:A' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('B1:B' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('C1:C' . $i)->getAlignment()->setHorizontal('left')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('D1:D' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('E1:E' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('F1:F' . $i)->getAlignment()->setHorizontal('left')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('G1:G' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('H1:H' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('I1:I' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('J1:J' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('K1:K' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('L1:L' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('M1:M' . $i)->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('A1:X2')->getAlignment()->setHorizontal('center')->setVertical('center');
$objPHPExcel->getActiveSheet()->getStyle('A1:X2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(30);
$objPHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(10);
$objPHPExcel->getActiveSheet()->setTitle('attendance_summary');
$objPHPExcel->setActiveSheetIndex(0);
$file_name = "attendance_summary_report_" . $_POST['attn_mnth'] . ".xlsx";
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $file_name . '"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($file_name);
$resp_file = $file_name;
echo json_encode(array("mesg" => $resp_mesg, "stat" => $resp_stat, "file" => $resp_file));
function getNameFromNumber($num)
{
$numeric = $num % 26;
$letter = chr(65 + $numeric);
$num2 = intval($num / 26);
if ($num2 > 0) {
return getNameFromNumber($num2 - 1) . $letter;
} else {
return $letter;
}
}
|