Advertisement
Bedhoel

Untitled

Aug 19th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 18.26 KB | None | 0 0
  1. <?php
  2. error_reporting(null);
  3. $act = $_POST['act'];
  4. if($act=="excel"){
  5.     header("Content-type: application/vnd-ms-excel");
  6.     header("Content-Disposition: attachment; filename=Report-Absensi-".date('Ymdhis').".xls");
  7. }
  8. ?>
  9. <title>Print Report</title>
  10. <style type="text/css">
  11.     @media print {
  12.       .printPageButton {
  13.         display: none;
  14.       }
  15.        @page { margin: 0; }
  16.         body { margin: 1.6cm; }
  17.     }
  18. </style>
  19.     <div>
  20.             <?php
  21.             //Tanggal
  22.             $tgl_start1 = $gen_controller->date_indo_default($_POST['tgl_mulai']);
  23.  
  24.             if(!empty($_POST['tgl_selesai'])){
  25.                 $tgl_end1 = $gen_controller->date_indo_default($_POST['tgl_selesai']);
  26.             }
  27.             else {
  28.                 $tgl_end1 = $tgl_start1;
  29.             }
  30.  
  31.  
  32.             $tgl_start = str_replace("-","",$tgl_start1);
  33.             $tgl_end   = str_replace("-","",$tgl_end1);
  34.  
  35.  
  36.  
  37.             $no =1;
  38.  
  39.             $range=array($tgl_start,$tgl_end);
  40.             $rangeStart=strtotime(substr($range[0],0,4)."-".substr($range[0], 4,2)."-".substr($range[0],6));
  41.             $rangeEnd=strtotime(substr($range[1],0,4)."-".substr($range[1], 4,2)."-".substr($range[1],6));
  42.             $arrField=array();
  43.             // $_style="style='border:1px solid #000000;'";
  44.             $_style="";
  45.             $arrHeader=array('No','NIP','Nama','Bulan','Telat','Alpha','Biaya/Jumlah Jam Mengajar');
  46.             //get data absen
  47.             $sql_jns_absensi="Select * from ms_jns_absensi";
  48.             $result_jns_absensi=$db->Execute($sql_jns_absensi);
  49.  
  50.             while($row=$result_jns_absensi->FetchRow()){
  51.                 foreach($row as $key=>$val){
  52.                     $key=strtolower($key);
  53.                     $$key=$val;
  54.                     }
  55.                     $arrHeaderSub[]=array('jns_absensi_initial'=>$jns_absensi_initial,'id_jns_absensi'=>$id_jns_absensi);
  56.                     $arrField[]=$jns_absensi;
  57.                     $fields =$fields.",".$jns_absensi;
  58.                     $arrLegend[]=$jns_absensi_initial." : ".$jns_absensi;
  59.             }
  60.             $fields =substr($fields,1);
  61.  
  62.             $arrBulan=array(
  63.                     "01"=>"Januari",
  64.                     "02"=>"Februari",
  65.                     "03"=>"Maret",
  66.                     "04"=>"April",
  67.                     "05"=>"Mei",
  68.                     "06"=>"Juni",
  69.                     "07"=>"Juli",
  70.                     "08"=>"Agustus",
  71.                     "09"=>"September",
  72.                     "10"=>"Oktober",
  73.                     "11"=>"November",
  74.                     "12"=>"Desember",
  75.                     );
  76.             $arrIsi=array('nip','nama_lengkap');
  77.  
  78.             $arr_jns_absen=array();
  79.             $sql_abseni="select * from ms_jns_absensi";
  80.             $result_jns_absensi=$db->Execute($sql_abseni);
  81.             while($row=$result_jns_absensi->FetchRow()){
  82.                 foreach($row as $key=>$val){
  83.                             $key=strtolower($key);
  84.                             $$key=$val;        
  85.                 }
  86.                 $arr_jns_absen[$jns_absensi_initial]=$id_jns_absensi;
  87.             }
  88.             //print_r($arr_jns_absen);
  89.  
  90.  
  91.             $dum=0;
  92.             $strDum='';
  93.             $strDum1='';
  94.             $numAktif=0;
  95.             $_num=count($arrHeader);
  96.            
  97.                                     $_data="<table id='example' border='1'>
  98.                                                 <tr>";
  99.  
  100.                                     $_num=count($arrHeader);
  101.                                     for($i=0;$i<$_num;$i++)
  102.                                        if($arrHeader[$i]=='Bulan'){
  103.                                         for($j=$rangeStart;$j<=$rangeEnd;$j+=86400){ //inc per day=86400 second
  104.                                             //cetak header bulan
  105.                                             if($dum<date('Ym',$j)) //cek bulan berbeda
  106.                                             {
  107.                                                 $dum=date('Ym',$j);
  108.                                                 $bln=date('m',$j);
  109.                                                 $thn=date('Y',$j);
  110.                                                 $tgl_max=cal_days_in_month(CAL_GREGORIAN, $bln, $thn);
  111.                                                 $tgl_max=($bln==date('m',$rangeEnd))?date('d',$rangeEnd):$tgl_max; //max tgl range dlm bulan
  112.                                                
  113.                                                 $_end=strtotime("$thn-$bln-$tgl_max");
  114.                                                 //$nspan=$ab->getWorkingDays($j, $_end, array());
  115.                                                
  116.                                                 $nspan=($_end-$j)/86400+1;
  117.                                                
  118.                                                 $numAktif+=$nspan;
  119.                                                 //echo ">>$numAktif<br>";
  120.                                                 //if($action == 'print'){  
  121.                                                     $_data.="
  122.                                                         <th $_style colspan=".($nspan)."> ".$arrBulan[$bln]." $thn</th>";
  123.                                                
  124.                                             }
  125.                                             //cetak header tgl
  126.                                             $tgl=date('d',$j);
  127.                                             $tgl1=date('D',$j);
  128.                                             $tgl2=date('Y-m-d',$j);
  129.                                             $dayOfWeek=date('w',$j);
  130.                                             if($dayOfWeek==0||$dayOfWeek==6){//skip minggu n sabtu
  131.                                                 //continue;
  132.                                                 $clr="class='center text-center' style='background-color:red;color:white'";
  133.                                                 $strDum.="
  134.                                                 <td  $_style $clr>$tgl<br>$tgl1</td>";
  135.                                             }else {
  136.                                                
  137.                                     //Check Hari Libur
  138.                                     $chk2 = $db->getRow("select ms.hari_libur  
  139.                                     from ms_hari_libur as ms
  140.                                     inner join tr_hari_libur  as tr
  141.                                     on ms.id_hari_libur=tr.id_hari_libur
  142.                                         where tr.tgl='".$tgl2."'  and ms.tahun='".$web['tahun']."'");  
  143.                                             if(!empty($chk2)){
  144.                                                 $clr="class='center text-center' style='background-color:red;color:white'";
  145.                                             }  
  146.                                             else {
  147.                                                 $clr="class='center text-center'";
  148.                                             }  
  149.                                                 $strDum.="
  150.                                                 <th $_style $clr>$tgl<br>$tgl1</th>";
  151.                                             }
  152.                                            
  153.                                         }
  154.                                     }
  155.                                     else{
  156.                                             $_data.="
  157.                                                 <th ".$_style." rowspan=2><br/> ".$arrHeader[$i]."</th>";
  158.                                        
  159.                                     }
  160.                                         $_data.="</tr><tr ".$_style.">".$strDum." ".$strDum1;
  161.                                         $add_where="";
  162.                                         $us_array = array();
  163.                                         $us_array['id_level'] = 'lv_18061909233_88';
  164.                                         $us_array['status']   = '1';
  165.                                         if(!empty($_POST['id_karyawan'])){
  166.                                             $us_array['userid_absen']   = $_POST['id_karyawan'];
  167.                                             $data_us = $gen_model->GetWhere('ms_user',$us_array);
  168.                                         }
  169.                                         else if(!empty($_POST['posisi'])){
  170.                                             $us_array['id_posisi']   = $_POST['posisi'];
  171.                                             $data_us = $gen_model->GetWhere('ms_user',$us_array);
  172.                                         }
  173.                                         else if(!empty($_POST['shift'])){
  174.                                             $add_where = " and ab.id_shift_absensi='".$_POST['shift']."' ";
  175.  
  176.                                             $sql_query = "select us.*  
  177.                                                             from ms_user as us
  178.                                                             inner join tr_shift_absensi_peg as tr
  179.                                                                 on us.id_user=tr.id_user
  180.                                                             where tr.id_tr_shift_pegawai='".$_POST['shift']."' ";
  181.                                             $data_us=$db->Execute($sql_query);
  182.                                         }
  183.                                         else {
  184.                                             $data_us = $gen_model->GetWhere('ms_user',$us_array);
  185.                                         }
  186.                                         while($list = $data_us->FetchRow()){
  187.                                                         foreach($list as $key=>$val){
  188.                                                         $key=strtolower($key);
  189.                                                         $$key=$val;
  190.                                                       }  
  191.                                              $_data .= "</tr>";
  192.  
  193.                                              $_data .= "<tr ".$class.">";
  194.                                              $_data .= "<td align=center ".$_style.">".($no+$start).'.'."</td>";   
  195.                                                 $sql1 = "select tra.jam_masuk as shift_jam_masuk,tra.jam_keluar as shift_jam_keluar,tra.awal_masuk as term_masuk,tra.akhir_keluar as term_keluar,
  196.                                                               ab.tgl as tanggal_1,tra.jenis_shift,us.join_date,us.nip,us.id_user,us.nama_lengkap,ab.*
  197.                                                         from ms_user  as us
  198.                                                         inner join tr_absensi_peg as ab  on ab.id_user=us.id_user
  199.                                                         inner join tr_shift_absensi  as tra on tra.id_shift_absensi = ab.id_shift_absensi
  200.                                                             where us.nip='".$nip."' ".$add_where." and ab.tgl >= '".$tgl_start1."' and ab.tgl <= '".$tgl_end1."'  
  201.                                                                    
  202.                                                 ";
  203.  
  204.  
  205.                                               $_num=count($arrIsi);
  206.                                                     for($i=0;$i<$_num;$i++){
  207.                                                         $_data .="<td ".$_style.">".$$arrIsi[$i]."</td>";
  208.                                                     }  
  209.                                             $absensi_array=array();
  210.                                             $result1=$db->Execute($sql1);
  211.                                             $arrFieldValue=array();
  212.                                             while($row=$result1->FetchRow()){
  213.                                                 foreach($row as $key=>$val){
  214.                                                         $key=strtolower($key);
  215.                                                         $$key=$val;
  216.                                                 }
  217.                                                 for($i=0;$i<count($arrField);$i++){
  218.                                                     $_arrFieldValue=$row[$arrField[$i]];
  219.                                                     $arrFieldValue[$arrField[$i]]+=$_arrFieldValue;
  220.                                                 }
  221.                                                 foreach($row as $key=>$val){
  222.                                                     $key=strtolower($key);
  223.                                                     $$key=$val;
  224.                                                    
  225.                                                 }
  226.                                                 $split_tipe=explode("|", $tipe);
  227.                                                 $tipe1=array_search($split_tipe[0], $arr_jns_absen);
  228.                                                 $tipe2=array_search($split_tipe[1], $arr_jns_absen);
  229.                                                 if(empty($tipe2)){
  230.                                                     $tipe=$tipe1;
  231.                                                 }else{
  232.                                                     $tipe=$tipe1."|".$tipe2;
  233.                                                 }
  234.                                                 $arr_tanggal_absen=explode("-",$tanggal_1);
  235.                                                
  236.                                                 $tanggal_2=strtotime(date("Y-m-d", mktime(0, 0, 0, $arr_tanggal_absen[1], $arr_tanggal_absen[2], $arr_tanggal_absen[0])));
  237.                                                 $tanggal=date("Y-m-d",$tanggal_2);
  238.                                                
  239.                                                 $absensi_array[$tanggal]=array('arr_jam_masuk'=>$jam_masuk,
  240.                                                 'arr_jam_keluar'=>$jam_keluar,
  241.                                                 'arr_tgl'=>substr($tanggal_1,0,10),
  242.                                                 'arr_term_jam_masuk'=>$term_masuk,
  243.                                                 'arr_term_jam_keluar'=>$term_keluar,
  244.                                                 'arr_shift_jam_masuk'=>$shift_jam_masuk,
  245.                                                 'arr_shift_jam_keluar'=>$shift_jam_keluar,
  246.                                                 'arr_id'=>$id_absensi,
  247.                                                 'arr_id_jns_abs'=>$id_jns_absensi,
  248.                                                 'arr_tipe'=>$jenis_shift
  249.                                                 );
  250.                                             }  
  251.                                             //$f->pre($arrFieldValue);
  252.                                             $_num=count($arrIsi);  
  253.                                             $hitung_umkn=0;
  254.                                             $total_waktu=0;
  255.                                             $total_telat=0;
  256.                                             $total_tdk_hadir=0;
  257.                                             $total_final=0;
  258.                                             for($j=$rangeStart;$j<=$rangeEnd;$j+=86400){
  259.                                                 $txt='';
  260.                                                 $key=date('Y-m-d',$j);
  261.                                                 $dayOfWeek2=date('w',$j);
  262.                                                 //$f->pre($key);
  263.                                                 $jam_keluar_d='';
  264.                                                 $jam_masuk_d='';
  265.                                                 $term_masuk_d='';
  266.                                                 $term_keluar_d='';
  267.                                                 $tgl_d='';
  268.                                                     //jam absen pegawai
  269.                                                     $jam_masuk_d=$absensi_array[$key]['arr_jam_masuk'];
  270.                                                     $jam_keluar_d=$absensi_array[$key]['arr_jam_keluar'];
  271.                                                     $tgl_d=$absensi_array[$key]['arr_tgl'];
  272.  
  273.                                                     //jam awal masuk dan keluar
  274.                                                     $term_jam_masuk_d=$absensi_array[$key]['arr_term_jam_masuk'];
  275.                                                     $term_jam_keluar_d=$absensi_array[$key]['arr_term_jam_keluar'];
  276.  
  277.                                                     //jam kerja masuk dan keluar
  278.                                                     $shift_jam_masuk=$absensi_array[$key]['arr_shift_jam_masuk'];
  279.                                                     $shift_jam_keluar=$absensi_array[$key]['arr_shift_jam_keluar'];
  280.                                                     $id_jns_absensi=$absensi_array[$key]['arr_id_jns_abs'];
  281.                                                     $tipe=$absensi_array[$key]['arr_tipe'];
  282.  
  283.                                                    
  284.                                                                            
  285.                                                 $note = "";
  286.  
  287.                                                    $var=explode(',',$id_jns_absensi);
  288.                                                    foreach($var as $row){
  289.                                                       if($row=="1"){
  290.                                                         $total_telat +=1;
  291.                                                       }
  292.                                                       $note .= $gen_model->getOne("jns_absensi_initial","ms_jns_absensi",array('id_jns_absensi'=>$row))." ";
  293.                                                     }
  294.                                    
  295.                                                                        
  296.                                     //Check Hari Libur
  297.                                     $chk = $db->getRow("select ms.hari_libur  
  298.                                     from ms_hari_libur as ms
  299.                                     inner join tr_hari_libur  as tr
  300.                                     on ms.id_hari_libur=tr.id_hari_libur
  301.                                         where tr.tgl='".$key."'  and ms.tahun='".$web['tahun']."'");  
  302.  
  303.  
  304.                                                 $stlye_td="";
  305.                                                  if(!empty($chk)){
  306.                                                     $txt = "LBR_NSN <br/>".$chk['hari_libur'];
  307.                                                     $stlye_td=" style='background-color:red;color:white' ";
  308.                                                 }
  309.                                                 else if($dayOfWeek2==0||$dayOfWeek2==6){
  310.                                                     $stlye_td=" style='background-color:red;color:white' ";
  311.                                                     $txt = "LBR <br/>";
  312.                                                 }
  313.                                                 else {
  314.                                                     if($key>=date('Y-m-d')){
  315.                                                         $txt='';
  316.                                                     }  
  317.                                                     else {
  318.                                                         $my_note="";
  319.                                                         if(trim($note)!=""){
  320.                                                             $my_note=$note;
  321.                                                         }
  322.                                                         else if(empty($jam_masuk_d)){
  323.                                                             $my_note="A";
  324.                                                             $total_tdk_hadir +=1;
  325.                                                         }
  326.  
  327.                                                         $selisih ="";  
  328.                                                         $sub_biaya ="";
  329.                                                         //Datang Cepat dan Pulang  Cepat
  330.                                                          if($jam_masuk_d < $shift_jam_masuk and $jam_keluar_d < $shift_jam_keluar){
  331.                                                             $selisih = $gen_controller->selisih_jam($shift_jam_masuk,$jam_keluar_d);
  332.                                                             $total_waktu += $gen_controller->count_time($shift_jam_masuk,$jam_keluar_d);
  333.                                                             $sub_biaya = $gen_controller->count_time($shift_jam_masuk,$jam_keluar_d);
  334.                                                         }
  335.  
  336.                                                         //Datang Cepat dan Pulang Lama
  337.                                                         else if($jam_masuk_d < $shift_jam_masuk and $jam_keluar_d > $shift_jam_keluar){
  338.                                                             $selisih = $gen_controller->selisih_jam($shift_jam_masuk,$shift_jam_keluar);
  339.                                                             $total_waktu += $gen_controller->count_time($shift_jam_masuk,$shift_jam_keluar);
  340.                                                             $sub_biaya = $gen_controller->count_time($shift_jam_masuk,$shift_jam_keluar);
  341.                                                         }
  342.  
  343.  
  344.                                                         //Datang Lama dan Pulang  Cepat
  345.                                                         else if($jam_masuk_d > $shift_jam_masuk and $jam_keluar_d < $shift_jam_keluar){
  346.                                                             $selisih = $gen_controller->selisih_jam($jam_masuk_d,$jam_keluar_d);
  347.                                                             $total_waktu += $gen_controller->count_time($jam_masuk_d,$jam_keluar_d);
  348.                                                             $sub_biaya += $gen_controller->count_time($jam_masuk_d,$jam_keluar_d);
  349.                                                         }
  350.  
  351.                                                         //Datang Lama dan Pulang  Lama 
  352.                                                         else if($jam_masuk_d > $shift_jam_masuk and $jam_keluar_d < $shift_jam_keluar){
  353.                                                             $selisih = $gen_controller->selisih_jam($jam_masuk_d,$shift_jam_keluar);
  354.                                                             $total_waktu += $gen_controller->count_time($jam_masuk_d,$shift_jam_keluar);
  355.                                                             $sub_biaya += $gen_controller->count_time($jam_masuk_d,$shift_jam_keluar);
  356.                                                         }
  357.  
  358.                                                         else {
  359.                                                             $selisih = $gen_controller->selisih_jam($jam_masuk_d,$jam_keluar_d);
  360.                                                             $total_waktu += $gen_controller->count_time($jam_masuk_d,$jam_keluar_d);
  361.                                                             $sub_biaya += $gen_controller->count_time($jam_masuk_d,$jam_keluar_d);
  362.                                                         }
  363.  
  364.  
  365.                                                         $total_biaya = $gen_controller->convertToHoursMins($sub_biaya);
  366.                                                         $total_final +=$gen_controller->biaya_mengajar($total_biaya);
  367.  
  368.  
  369.                                                         $txt="<span >".$my_note."
  370.                                                         <br>".
  371.                                                          $jam_masuk_d."
  372.                                                         <br>".
  373.                                                         $jam_keluar_d."
  374.                                                         <br>       
  375.                                                         ".$selisih."
  376.                                                          <br>
  377.                                                         ".$tipe."
  378.                                                         </span>";
  379.                                                     }
  380.                                                 }
  381.                                                 $_data .="<td ".$stlye_td." align='center'>".$txt."</td>";
  382.                                                 $arrtipe=explode(' ',$absensi_array[$key]['arr_tipe']);
  383.                                             }
  384.                                             $_data .="<td align='center'>".$total_telat."</td>";
  385.                                             $_data .="<td align='center'>".$total_tdk_hadir."</td>";
  386.                                             $_data .="<td align='center'>Rp. ".number_format($total_final,0,',','.')." <br/>
  387.                                             ".$gen_controller->convertToHoursMins($total_waktu,'full')."
  388.                                             </td>";
  389.                                             $no++;     
  390.                                     }
  391.                                    
  392.                                     if($act=="excel" or $act=="pdf"){
  393.    
  394.                                     }
  395.                                     else {
  396.                                       echo "<div onClick='window.print();' class='printPageButton'><center><button >Print</button>&nbsp;";
  397.                                       echo "<button  class='printPageButton' onclick='report(1)' >Export Excel</button>&nbsp;";
  398.                                       echo "<button  class='printPageButton' onclick='report(2)'>Export PDF</button><br/></center></div>";
  399.                                     }
  400.                                     echo $_data;           
  401.                                 ?>
  402.                                        
  403.                                 </table>
  404.  
  405.                                 <table border="1">
  406.                                         <tr>
  407.                                             <td><b>Inisial</b></td>
  408.                                             <td><b>Keterangan</b></td>
  409.                                         </tr>
  410.                                         <?php
  411.                                             $data_jns = $gen_model->GetWhere('ms_jns_absensi');
  412.                                                 while($list = $data_jns->FetchRow()){
  413.                                                   foreach($list as $key=>$val){
  414.                                                       $key=strtolower($key);
  415.                                                       $$key=$val;
  416.                                                     }  
  417.                                           ?>
  418.                                           <tr>
  419.                                             <td  style="width:10%" align="center"><?php echo $jns_absensi_initial ?></td>
  420.                                             <td ><?php echo $jns_absensi ?></td>
  421.                                           </tr>
  422.                                         <?php } ?>
  423.                                 </table>
  424.                             </div>
  425.             <script type="text/javascript">
  426.                 function report(id){
  427.  
  428.                     var form = document.createElement("form");
  429.                         form.setAttribute("method", 'POST');
  430.                        
  431.  
  432.                         var hiddenField1 = document.createElement("input");
  433.                         hiddenField1.setAttribute("type", "hidden");
  434.                         hiddenField1.setAttribute("name", 'tgl_mulai');
  435.                         hiddenField1.setAttribute("value", '<?php echo $_POST['tgl_mulai']  ?>');
  436.  
  437.                         var hiddenField2 = document.createElement("input");
  438.                         hiddenField2.setAttribute("type", "hidden");
  439.                         hiddenField2.setAttribute("name", 'tgl_selesai');
  440.                         hiddenField2.setAttribute("value", '<?php echo $_POST['tgl_selesai']  ?>');
  441.  
  442.                         var hiddenField3 = document.createElement("input");
  443.                         hiddenField3.setAttribute("type", "hidden");
  444.                         hiddenField3.setAttribute("name", 'id_karyawan');
  445.                         hiddenField3.setAttribute("value", '<?php echo $_POST['id_karyawan'] ?>');
  446.  
  447.                         var hiddenField4 = document.createElement("input");
  448.                         hiddenField4.setAttribute("type", "hidden");
  449.                         hiddenField4.setAttribute("name", 'posisi');
  450.                         hiddenField4.setAttribute("value",'<?php echo $_POST['posisi'] ?>');
  451.  
  452.                         var hiddenField5 = document.createElement("input");
  453.                         hiddenField5.setAttribute("type", "hidden");
  454.                         hiddenField5.setAttribute("name", 'shift');
  455.                         hiddenField5.setAttribute("value",'<?php echo $_POST['shift'] ?>');
  456.  
  457.                         form.appendChild(hiddenField1);
  458.                         form.appendChild(hiddenField2);
  459.                         form.appendChild(hiddenField3);
  460.                         form.appendChild(hiddenField4);
  461.                         form.appendChild(hiddenField5);
  462.  
  463.                     if(id=='1') {  //Excel
  464.                         form.setAttribute("action", '<?php echo $basepath ?>report_absensi/print');
  465.                         var hiddenField4 = document.createElement("input");
  466.                         hiddenField4.setAttribute("type", "hidden");
  467.                         hiddenField4.setAttribute("name", 'act');
  468.                         hiddenField4.setAttribute("value", 'excel');   
  469.                     }
  470.                     else if(id=='2') {  //PDF
  471.                         form.setAttribute("action", '<?php echo $basepath ?>report_absensi/print_pdf');
  472.                         var hiddenField4 = document.createElement("input");
  473.                         hiddenField4.setAttribute("type", "hidden");
  474.                         hiddenField4.setAttribute("name", 'act');
  475.                         hiddenField4.setAttribute("value", 'pdf');
  476.                     }
  477.                     form.appendChild(hiddenField4);
  478.                     document.body.appendChild(form);
  479.                     form.submit();
  480.                 }
  481.             </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement