0xV3NOMx
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 : 3.15.193.71


Current Path : /var/www/html/univadmin/Reports/
Upload File :
Current File : /var/www/html/univadmin/Reports/feeCollection.php

<?php
//------------------------Excel Report ---------------------//

$main_src = substr($_SERVER['SCRIPT_FILENAME'], 0, strlen($_SERVER['SCRIPT_FILENAME']) - 7);
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('GMT+5:30');
ini_set('max_execution_time', 70);
// PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);
if (PHP_SAPI == 'cli')
    die('This example should only be run from a Web Browser');

/** Include PHPExcel */
$pdf_writer_class = $main_src . '/PHPExcel/Classes/PHPExcel.php';
require_once($pdf_writer_class);

function getheaders($objPHPExcel, $fileName)
{
    //To Fit To Page while printing
    $objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1);
    $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1);
    $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0);
    $objPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);
    $objPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(false);

    // Redirect output to a client’s web browser (Excel5)
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="' . $fileName . '.xls"');
    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
    ob_clean();
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
}



function feeCollecReport($aobj_context){


  $objPHPExcel = new PHPExcel();
  $fileName = 'FeeCollectionReport';
  $objPHPExcel->getProperties()->setCreator("Uniclare")
  ->setLastModifiedBy("Me")->setTitle("My Excel Sheet")
  ->setSubject("My Excel Sheet")->setDescription("Excel Sheet")
  ->setKeywords("Excel Sheet")->setCategory("Me");

  // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  $objPHPExcel->setActiveSheetIndex(0);
  
  // Add column headers and make them bold
  $styleArray = array(
      'borders' => array(
          'allborders' => array(
              'style' => PHPExcel_Style_Border::BORDER_THIN,
              'color' => array('argb' => '000000'),
          ),
      ),
  );


  $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC); 
  $univcode = $aobj_context->mobj_data['univcode'];
  $fcollfrm = $aobj_context->mobj_data['cntr_from'];
  $fcollto = $aobj_context->mobj_data['cntr_end'];
  $fdegfrm = $aobj_context->mobj_data['degree_from'];
  $fdegto = $aobj_context->mobj_data['degree_to'];
  $rformat = $aobj_context->mobj_data['rformat'];
  $rtype = $aobj_context->mobj_data['rtype'];
  $range = $aobj_context->mobj_data['range'];
  $rftype = $aobj_context->mobj_data['rftype'];
  $artype = $aobj_context->mobj_data['artype'];

  $alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 
  'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC',
  'AD', 'AF', 'AE', 'AF', 'AG', 'AH'
  ];

  $j=9;

  $drop_query = "drop table if exists fee_report";
  // var_dump($drop_query);
  // die();
  $dropRes = $aobj_context->pobj_db->Execute($drop_query);

  $create_query = "create table fee_report(
    fdegree varchar(5), 
    fexamno varchar(1),
    fcollcode varchar(5),
    ftotcount int(5),
    ftotamt decimal(10,2),
    primary key(fdegree,fexamno,fcollcode))";
    // var_dump($create_query);
    // die();
  $createRes = $aobj_context->pobj_db->Execute($create_query);

  $insert_ttl = "insert into fee_report
  select fdegree, fexamno, fcollcode, count(distinct fregno) as fstudcount, 
  sum(famount) as ftotamt
  from studfee where fdegree between '{$fdegfrm}' and '{$fdegto}'
  group by fdegree, fexamno, fcollcode
  order by fdegree, fexamno, fcollcode";
  $ttlRes = $aobj_context->pobj_db->Execute($insert_ttl);

  // var_dump($insert_ttl);


  $feeCodeLen = "select distinct replace(ffeecode,' ','_') as ffeecode,ffeecode as orgfeecode,cast(famount as UNSIGNED) as famount 
  from studfee 
  where ffeecode like '%fine' and fdegree between  '{$fdegfrm}' and '{$fdegto}'
  and fcollcode between '{$fcollfrm}' and '{$fcollto}' and famount > 1 order by famount";
  $lenRes = $aobj_context->pobj_db->GetAll($feeCodeLen);
  
  $len = count($lenRes);

 
  $objPHPExcel->getActiveSheet()->getStyle('1:2')->getFont()->setBold(true);
  $objPHPExcel->getActiveSheet()->getStyle('1:2')->getFont()->setSize(12);
  $objPHPExcel->getActiveSheet()->freezePane('A3');
  $objPHPExcel->getActiveSheet()->mergeCells("A1:A2")->setCellValue('A1', 'Sl. No.');
  $objPHPExcel->getActiveSheet()->mergeCells("B1:B2")->setCellValue('B1', 'Degree Code');
  $objPHPExcel->getActiveSheet()->mergeCells("C1:C2")->setCellValue('C1', 'Degree Name');
  $objPHPExcel->getActiveSheet()->mergeCells("D1:D2")->setCellValue('D1', 'College Code');
  $objPHPExcel->getActiveSheet()->mergeCells("E1:E2")->setCellValue('E1', 'College Name');
  

  $objPHPExcel->getActiveSheet()->mergeCells('F1:'.'G1')
  ->setCellValue('F1', "Total");
  $objPHPExcel->getActiveSheet()
  ->setCellValue('F2', "No. of App");
  $objPHPExcel->getActiveSheet()
  ->setCellValue('G2', "Paid");

  $objPHPExcel->getActiveSheet()->mergeCells('H1:'.'I1')
  ->setCellValue('H1', "Without Fine");
  $objPHPExcel->getActiveSheet()
  ->setCellValue('H2', "No. of App");
  $objPHPExcel->getActiveSheet()
  ->setCellValue('I2', "Paid");


  $tmpTbl = "create temporary table fee_report_1
  select fdegree, fexamno, fcollcode, count(distinct fregno) as fcnt, sum(famount) as famt
  from studfee where fregno not in (
  select fregno from studfee where fdegree between '{$fdegfrm}' and '{$fdegto}'
  and fcollcode between '{$fcollfrm}' and '{$fcollto}' and ffeecode like '%fine%')
  group by fdegree, fexamno, fcollcode
  order by fdegree, fexamno, fcollcode";
  $tmpRes = $aobj_context->pobj_db->Execute($tmpTbl);

  $altTbl = "alter table fee_report
  add column without_fine_cnt int(5),
  add column without_fine_amt decimal(10,2)";
  $altRes = $aobj_context->pobj_db->Execute($altTbl);


  $upTbl = "update fee_report x, fee_report_1 y
  set x.without_fine_cnt = y.fcnt,
  x.without_fine_amt = y.famt
  where x.fdegree = y.fdegree
  and x.fexamno = y.fexamno
  and x.fcollcode =y.fcollcode";
  $upRes = $aobj_context->pobj_db->Execute($upTbl);
  
  $qry="";

  foreach ($lenRes as $k => $v) {

    $drpTmp = "drop temporary table fee_report_1";
    $drpTmpRes = $aobj_context->pobj_db->Execute($drpTmp);
    // var_dump($drpTmp);
    
    // var_dump($drpTmpRes);

    $tmpTbl = "create temporary table fee_report_1 (INDEX(`fdegree`,`fexamno`,`fcollcode`))
    select fdegree, fexamno, fcollcode, count(distinct fregno) as fcnt, sum(famount) as famt
    from studfee where fregno in (
    select fregno from studfee where fdegree between '{$fdegfrm}' and '{$fdegto}'
    and fcollcode between '{$fcollfrm}' and '{$fcollto}' and ffeecode = '{$v['orgfeecode']}'
    and famount = '{$v['famount']}')
    group by fdegree, fexamno, fcollcode
    having famt > 0
    order by fdegree, fexamno, fcollcode";
    $tmpRes = $aobj_context->pobj_db->Execute($tmpTbl);
    // var_dump($tmpTbl);
    // die();

    $altTbl = "alter table fee_report
    add column {$v['ffeecode']}_{$v['famount']}_cnt int(5),
    add column {$v['ffeecode']}_{$v['famount']}_amt decimal(10,2)";
    // var_dump($altTbl);
    // die();
    $altRes = $aobj_context->pobj_db->Execute($altTbl);
    // var_dump($altRes);


    $upTbl = "update fee_report x, fee_report_1 y
    set x.{$v['ffeecode']}_{$v['famount']}_cnt = y.fcnt,
    x.{$v['ffeecode']}_{$v['famount']}_amt = y.famt
    where x.fdegree = y.fdegree
    and x.fexamno = y.fexamno
    and x.fcollcode =y.fcollcode";

    $upRes = $aobj_context->pobj_db->Execute($upTbl);

    $objPHPExcel->getActiveSheet()->mergeCells($alpha[$j].'1:'.$alpha[$j+1].'1')
    ->setCellValue($alpha[$j].'1', $v['orgfeecode']."\n(".$v['famount'].')');

    $objPHPExcel->getActiveSheet()
    ->setCellValue($alpha[$j].'2', "No. of App");

    $objPHPExcel->getActiveSheet()
    ->setCellValue($alpha[$j+1].'2', "Paid");
    $j+=2;   

    $qry .= "ifnull({$v['ffeecode']}_{$v['famount']}_cnt,0) as {$v['ffeecode']}_{$v['famount']}_cnt,
              ifnull({$v['ffeecode']}_{$v['famount']}_amt,0) as {$v['ffeecode']}_{$v['famount']}_amt,";
              // var_dump($qry);
  }
// die();

  $qry=rtrim($qry,", ");

  $objPHPExcel->getActiveSheet()->getStyle('A1:'.$alpha[$j-1].'1')->applyFromArray($styleArray);
  // $objPHPExcel->getActiveSheet()->getColumnDimension('G1')->setAutoSize(true);
  $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(45);
  $objPHPExcel->getActiveSheet()->getStyle('A1:'.$alpha[$j-1].'1')->getAlignment()->setWrapText(true);
  $objPHPExcel->getActiveSheet()->getStyle('A1:'.$alpha[$j-1].'1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  $objPHPExcel->getActiveSheet()->getStyle('A1:'.$alpha[$j-1].'1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
  
  $objPHPExcel->getActiveSheet()->getStyle('A2:'.$alpha[$j-1].'2')->applyFromArray($styleArray);
  // $objPHPExcel->getActiveSheet()->getColumnDimension('G1')->setAutoSize(true);
  $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(45);
  $objPHPExcel->getActiveSheet()->getStyle('A2:'.$alpha[$j-1].'2')->getAlignment()->setWrapText(true);
  $objPHPExcel->getActiveSheet()->getStyle('A2:'.$alpha[$j-1].'2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  $objPHPExcel->getActiveSheet()->getStyle('A2:'.$alpha[$j-1].'2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

  $getData = "select d.fdegree, d.fdescpn, d.fexamname, c.fcollcode, 
  concat(c.fcollname,', ',c.ftown) as fcollname, ftotcount, ftotamt, 
  ifnull(without_fine_cnt,0) as without_fine_cnt, ifnull(without_fine_amt,0.00) as without_fine_amt,
  {$qry}
  from fee_report f 
  inner join college c on f.fcollcode = c.fcollcode
  inner join degree d on f.fdegree = d.fdegree and f.fexamno = d.fexamno 
  order by d.fdegree, c.fcollcode, d.fexamno";

  $dataRes = $aobj_context->pobj_db->GetAll($getData);
  //var_dump($getData);
  //die();
    foreach ($dataRes as $key => $value) {
      $slNo = $key + 3;
      $j=9;
      $objPHPExcel->getActiveSheet()->setCellValue('A' . $slNo, $slNo - 2)->getColumnDimension('A')->setwidth(5);
      $objPHPExcel->getActiveSheet()->setCellValue('B' . $slNo, $value['fdegree'])->getColumnDimension('B')->setwidth(8.43);
      $objPHPExcel->getActiveSheet()->setCellValue('C' . $slNo, $value['fdescpn'])->getColumnDimension('C')->setwidth(40);
      $objPHPExcel->getActiveSheet()->setCellValue('D' . $slNo, $value['fcollcode'])->getColumnDimension('D')->setwidth(8.43);
      $objPHPExcel->getActiveSheet()->setCellValue('E' . $slNo, $value['fcollname'])->getColumnDimension('E')->setwidth(50);
      $objPHPExcel->getActiveSheet()->setCellValue('F' . $slNo, $value['ftotcount'])->getColumnDimension('F')->setwidth(8.43);
      $objPHPExcel->getActiveSheet()->setCellValue('G' . $slNo, moneyFormatIndia((int)$value['ftotamt']))->getColumnDimension('G')->setwidth(11);
      $objPHPExcel->getActiveSheet()->setCellValue('H' . $slNo, $value['without_fine_cnt'])->getColumnDimension('H')->setwidth(8.43);
      $objPHPExcel->getActiveSheet()->setCellValue('I' . $slNo, moneyFormatIndia((int)$value['without_fine_amt']))->getColumnDimension('I')->setwidth(11);


      $objPHPExcel->getActiveSheet()->getStyle('G'. $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
      $objPHPExcel->getActiveSheet()->getStyle('G' . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

      $objPHPExcel->getActiveSheet()->getStyle('I'. $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
      $objPHPExcel->getActiveSheet()->getStyle('I' . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

      foreach($lenRes as $k=>$v){
        // var_dump($v);
        $colName1 = "{$v['ffeecode']}_{$v['famount']}_cnt"; 
        $colName = "{$v['ffeecode']}_{$v['famount']}_amt";

        $objPHPExcel->getActiveSheet()->setCellValue($alpha[$j].$slNo,  $value[$colName1])
        ->getColumnDimension($alpha[$j])->setwidth(10);
        $objPHPExcel->getActiveSheet()->setCellValue($alpha[$j+1].$slNo,  moneyFormatIndia((int)$value[$colName]))
        ->getColumnDimension($alpha[$j])->setwidth(10);
        $objPHPExcel->getActiveSheet()->getStyle($alpha[$j]. $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
        $objPHPExcel->getActiveSheet()->getStyle($alpha[$j] . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

        $objPHPExcel->getActiveSheet()->getStyle($alpha[$j+1]. $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
        $objPHPExcel->getActiveSheet()->getStyle($alpha[$j+1] . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

        $j+=2;
      }
// die();
    // $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setwidth(12);
    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':'.$alpha[$j-1] . $slNo)->applyFromArray($styleArray);
    $objPHPExcel->getActiveSheet()->getRowDimension($slNo)->setRowHeight(35);    

    //->setWrapText(true);
    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':'.$alpha[$j-1] . $slNo)->getAlignment()->setWrapText(true);

    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':B' . $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':B' . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    
    $objPHPExcel->getActiveSheet()->getStyle('D' . $slNo)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('D' . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':'.$alpha[$j-1] . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('A' . $slNo . ':'.$alpha[$j-1] . $slNo)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    
  }
    $objPHPExcel->getActiveSheet()->setTitle($fileName);
    $objPHPExcel->getActiveSheet()->getPageSetup()
    ->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
    
    $get_coll_name = "select FUNIVNAME as 'FUNIVNAME',FUNIVCODE,
    FUNIVADD1 as 'state', pdf_logo_path,
    ifnull(FEXAMAPPREQ,'F') as FEXAMAPPREQ From control";

    $lobj_get_coll_name = $aobj_context->pobj_db->GetRow($get_coll_name);

    // $deggrp = $aobj_context->mobj_data["dgp"];
    // $query = "select distinct concat(fexamdate,' ',' Examination') as fexamdate 
    // from deggrp where fdeggrp = '{$deggrp}'";
    // $results = $aobj_context->pobj_db->GetRow($query);

    $aobj_context->FUNIVNAME = $lobj_get_coll_name['FUNIVNAME'];
    $aobj_context->s_state = $lobj_get_coll_name['state'];
    $aobj_context->pdf_logo_path = $lobj_get_coll_name['pdf_logo_path'];
    $aobj_context->FUNIVCODE = $lobj_get_coll_name['FUNIVCODE'];    
    // die();

    // $objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($aobj_context->main_src.'img/'.$aobj_context->FUNIVCODE.'_logo.jpg', PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);
    $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&C&H&"-,Bold"&16' . $aobj_context->FUNIVNAME . "\n" . '&12' . $rtype);
    $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&C&H'.$deggrp);

    $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&RPage &P of &N');

    getheaders($objPHPExcel, $fileName);

}

function moneyFormatIndia($num)
{
    $explrestunits = "";
    if (strlen($num) > 3) {
        $lastthree = substr($num, strlen($num) - 3, strlen($num));
        $restunits = substr($num, 0, strlen($num) - 3); // extracts the last three digits
        $restunits = (strlen($restunits) % 2 == 1) ? "0" . $restunits : $restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping.
        $expunit = str_split($restunits, 2);
        for ($i = 0; $i < sizeof($expunit); $i++) {
            // creates each of the 2's group and adds a comma to the end
            if ($i == 0) {
                $explrestunits .= (int)$expunit[$i] . ","; // if is first value , convert into integer
            } else {
                $explrestunits .= $expunit[$i] . ",";
            }
        }
        $thecash = $explrestunits . $lastthree;
    } else {
        $thecash = $num;
    }
    return $thecash; // writes the final format where $currency is the currency symbol.
}

?>