<?php
    session_start();

	include('conexion.php');
	include 'mysql_Agregar_auditoria.php';

	ini_set('max_execution_time', '300');
	set_time_limit(300);

	if (PHP_SAPI == 'cli')
    {
        die('This report should only be run from a Web Browser');
    }

	require('./PHPExcel/Classes/PHPExcel.php');

    /////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////

  	$cliente = $_SESSION['id_cliente'];
	$id_vehiculo = $_GET['id_vehiculo'];
	$fecha_inicio = $_GET['fecha_inicio'];
	$fecha_fin = $_GET['fecha_fin'];
	$fini = date_create($fecha_inicio);
	$finiMuestra =  date_format($fini, 'Ymd');	
	$ffin = date_create($fecha_fin);
	$ffinMuestra =  date_format($ffin, 'Ymd');

    $sql = "SELECT ";
	$sql .= "id_cliente, ";
	$sql .= "razon_social, ";
	$sql .= "nombre_comercial, ";
	$sql .= "saldo ";
	$sql .= "FROM ";
	$sql .= "clientes ";
	$sql .= "WHERE ";
	$sql .= "id_cliente = " . $cliente;
	
	$resultado = $conexion->query($sql); 
								
	if (!$resultado) 
	{
		die("Error: no se pudo realizar la consulta cliente");
	}
		
	while ($fila = $resultado->fetch_assoc()) 
	{
		$_SESSION['id_cliente'] = $fila['id_cliente'];
		$_SESSION['razon_cliente'] = $fila['razon_social'];
		$_SESSION['nombre_cliente'] = $fila['nombre_comercial'];
		$saldo_cliente = $fila['saldo'];
	}

	$resultado->free();

	$_SESSION['saldo_muestra'] = number_format($saldo_cliente, 2, '.', ',');
	$_SESSION['fech1'] = $fecha_inicio;	
	$_SESSION['fech2'] = $fecha_fin;


    /////////////////////////////////////////////////////////////////////////////////////

    date_default_timezone_set('America/Mazatlan');
	$time = time();

	// Creación de objeto Excel
	$objPHPExcel = new PHPExcel();

	$cel = 8;

    $objPHPExcel->getProperties()
	->setCreator("Gaslight")
	->setLastModifiedBy("Gaslight System")
	->setTitle("Reporte Rendimiento Combustible/Unidad ")
	->setSubject("Reporte Rendimiento Combustible/Unidad ")
	->setDescription("Reporte Rendimiento Combustible/Unidad")
	->setKeywords("Excel Office 2007 openxml php")
	->setCategory("Rendimiento Combustible/Unidad");
                
    $objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:D1');
    $objPHPExcel->setActiveSheetIndex(0)->mergeCells('H1:I1');

    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(13);
	$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);

    $boldArray = array('font' => array('bold' => true,),'alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER));
	$bold2Array = array('font' => array('bold' => true,),'alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT));

    $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->applyFromArray($boldArray);
	$objPHPExcel->getActiveSheet()->getStyle('A7:I7')->applyFromArray($bold2Array);

    $objPHPExcel->setActiveSheetIndex(0)
				->setCellValue('A1', 'REPORTE RENDIMIENTO COMBUSTIBLE/UNIDAD')
				->setCellValue('H1', 'Fecha: ' . date("Y/m/d  H:i:s", $time))
				->setCellValue('A2', 'Cliente: '.$_SESSION['id_cliente'].'-'.$_SESSION['razon_cliente'])
				->setCellValue('A3', 'Saldo: '.$_SESSION['saldo_muestra'])
				->setCellValue('A4', 'Fecha Inicio: '.$_SESSION['fech1'])
				->setCellValue('A5', 'Fecha Fin: '.$_SESSION['fech2']);


    /////////////////////////////////////////////////////////////////////////////////////

	$vehiculo = 0;
	$cliente_v = 0;
	$cont = 0;
	
	$sql = "SELECT ";
	$sql .= "t.id_transaccion, ";		
	$sql .= "v.modelo, ";
	$sql .= "v.id_tag, ";
	$sql .= "v.numero_economico, ";
	$sql .= "t.fecha, ";
	$sql .= "t.id_vehiculo, ";
	$sql .= "td.volumen, ";
	$sql .= "t.odometro, ";
	$sql .= "t.odometro_diferencia, ";
	$sql .= "ve.id_venta, ";		
	$sql .= "ve.fecha_venta ";		
	$sql .= "FROM ";
	$sql .= "transacciones t ";
	$sql .= "left join transacciones_detalle td ";
	$sql .= "on (t.id_transaccion = td.id_transaccion) ";
	$sql .= "left join ventas ve ";
	$sql .= "on (td.id_venta = ve.id_venta) ";
	$sql .= "left join vehiculos v ";
	$sql .= "on (t.id_vehiculo = v.id_vehiculo) ";
	$sql .= "where ";		
	$sql .= "t.fecha between '" . $fecha_inicio . "' and '" . $fecha_fin . "' ";
	$sql .= "and t.id_tipo = 1 ";
	$sql .= "and t.estatus = 1 ";
	$sql .= "and t.id_cliente = " . $_SESSION["id_cliente"] . " " ;

	if ($id_vehiculo != 0)
	{
		$sql .= "and t.id_vehiculo = " . $id_vehiculo . " " ;	
	}		

	$sql .= "order by t.id_cliente, t.id_vehiculo, t.fecha, t.id_transaccion ";
	
	$resultado1 = $conexion->query($sql); 

	if (!$resultado1) 
	{
		die("Error: no se pudo realizar la consulta estacion");
	}
		
	$número_filas = $resultado1->num_rows;
	$vehiculo_litros = 0;
	$vehiculo_odometro = 0;
	$odometro_inicio = 0;
	$vehiculo_odometro_f = 0;
	$odometro_InCliente = 0;
	$vehiculo_odometro_diferencia = 0;
	$vehiculo_rendimiento = 0;
	$inicio = 0;

	if ($número_filas > 0)
	{
		while ($fila = $resultado1->fetch_assoc()) 
		{		
			$modelo = $fila['modelo'];
			$id_tag = $fila['id_tag'];
			$num_ec = $fila['numero_economico'];			
			$id_transaccion = $fila['id_transaccion'];
			$date = date_create($fila['fecha']);
			$fecha_contable =  date_format($date, 'Y/m/d H:i:s');			
			$vehiculo_n = $fila['id_vehiculo'];
			$volumen = $fila['volumen'];
			$odometro = $fila['odometro'];
			$odometro_diferencia = $fila['odometro_diferencia'];
						
			if ($inicio == 0)
			{
				/*Obtener odometro inicial*/
				$sql = "select ";
				$sql .= "max(id_transaccion) as id_transaccion ";
				$sql .= "from ";
				$sql .= "transacciones ";
				$sql .= "where ";
				$sql .= "id_transaccion < " . $id_transaccion . " ";
				$sql .= "and id_tipo = 1 ";
				$sql .= "and id_cliente = " . $_SESSION["id_cliente"] . " " ;
				$sql .= "and id_vehiculo = " . $vehiculo_n . " ";
			
				$result = $conexion->query($sql); 	

				if (!$result) 
				{
					die("Error: no se pudo realizar la consulta estacion");
				}
				
				$num = $result->num_rows;
				
				if ($num > 0)
				{					
					while($row = $result->fetch_assoc()) 
					{
						$id = $row['id_transaccion'];
					}

					$result->free();
					
					if (is_null($id))
					{
						$id = 0;

						$sql = "select odometro from vehiculos where id_vehiculo = " . $vehiculo_n;

						$regreso = $conexion->query($sql); 

						if (!$regreso) 
						{
							die("Error: no se pudo obtener odometro del vehiculo");
						}

						while ($row = $regreso->fetch_assoc()) 
						{
							$odometro_inicio = $row['odometro'];
						}

						$regreso->free();								
					}
					else
					{
						$sql = "select ";
						$sql .= "odometro ";
						$sql .= "from ";
						$sql .= "transacciones ";
						$sql .= "where ";
						$sql .= "id_transaccion = " . $id . " ";
						
						$res = $conexion->query($sql); 	

						if (!$res) 
						{
							die("Error: no se pudo realizar la consulta estacion");
						}

						while ($row = $res->fetch_assoc()) 
						{
							$odometro_inicio = $row['odometro'];
						}

						$res->free();
					}
				}
				else
				{
					$odometro_inicio = 0;

					$sql = "select odometro from vehiculos where id_vehiculo = " . $vehiculo_n;

					$regreso = $conexion->query($sql); 

					if (!$regreso) 
					{
						die("Error: no se pudo obtener odometro del vehiculo");
					}

					while ($row = $regreso->fetch_assoc()) 
					{
						$odometro_inicio = $row['odometro'];
					}

					$regreso->free();								
				}

				$odometro_InCliente = $odometro_inicio;

					$a = "A" . $cel;
					$cel=$cel+1;
					$a2 = "A" . $cel;
					$cel=$cel+1;
					$a3 = "A" . $cel;
				$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($a, 'Modelo: ' . $modelo)
				->setCellValue($a2, 'TAG: ' . $id_tag)
				->setCellValue($a3, 'No. Economico: ' . $num_ec);

				$cel=$cel+1;
					$a = "A" . $cel;
					$b = "B" . $cel;
					$c = "C" . $cel;
					$d = "D" . $cel;
					$e = "E" . $cel;
					$f = "F" . $cel;
					$g = "G" . $cel;
					$h = "H" . $cel;
					$i = "I" . $cel;

				$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($a, 'Id Tran.')
				->setCellValue($b, 'Fecha')
				->setCellValue($c, 'Venta')
				->setCellValue($d, 'F. Venta')
				->setCellValue($e, 'Volumen')
				->setCellValue($f, 'Fin Km.')
				->setCellValue($g, 'Rec Km.')
				->setCellValue($h, 'Rendimiento');

				$cel=$cel+1;	

				$inicio = 1;	
				$vehiculo = $vehiculo_n;				
			}					
			
			if ($vehiculo_n != $vehiculo)
			{					
				$vehiculo_rendimiento = $vehiculo_odometro_diferencia / $vehiculo_litros;

					$a = "A" . $cel;
					$b = "B" . $cel;
					$c = "C" . $cel;
					$d = "D" . $cel;
					$e = "E" . $cel;
					$f = "F" . $cel;
					$g = "G" . $cel;
					$h = "H" . $cel;
					$i = "I" . $cel;

				$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($d, 'Total Vehiculo: ')
				->setCellValue($e, $vehiculo_litros)
				->setCellValue($g, $vehiculo_odometro_diferencia)
				->setCellValue($h, $vehiculo_rendimiento);

				$cel=$cel+2;
					$a = "A" . $cel;
					$cel=$cel+1;
					$a2 = "A" . $cel;
					$cel=$cel+1;
					$a3 = "A" . $cel;

				$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($a, 'Modelo: ' . $modelo)
				->setCellValue($a2, 'TAG: ' . $id_tag)
				->setCellValue($a3, 'No. Economico: ' . $num_ec);

				$cel=$cel+1;
					$a = "A" . $cel;
					$b = "B" . $cel;
					$c = "C" . $cel;
					$d = "D" . $cel;
					$e = "E" . $cel;
					$f = "F" . $cel;
					$g = "G" . $cel;
					$h = "H" . $cel;
					$i = "I" . $cel;

				$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($a, 'Id Tran.')
				->setCellValue($b, 'Fecha')
				->setCellValue($c, 'Venta')
				->setCellValue($d, 'F. Venta')
				->setCellValue($e, 'Volumen')
				->setCellValue($f, 'Fin Km.')
				->setCellValue($g, 'Rec Km.')
				->setCellValue($h, 'Rendimiento');

				$cel=$cel+1;	

				$vehiculo = $vehiculo_n;
				$vehiculo_litros = 0;
				$vehiculo_odometro = 0;
				$vehiculo_odometro_f = 0;				
				$vehiculo_odometro_diferencia = 0;
				$vehiculo_rendimiento = 0;
				$inicio_clienV = 0;
			}	

			if ($inicio_clienV == 0)
			{
				$sql = "select ";
				$sql .= "max(id_transaccion) as id_transaccion ";
				$sql .= "from ";
				$sql .= "transacciones ";
				$sql .= "where ";
				$sql .= "id_transaccion < " . $id_transaccion . " ";
				$sql .= "and id_tipo = 1 ";
				$sql .= "and id_cliente = " . $_SESSION["id_cliente"] . " " ;
				$sql .= "and id_vehiculo = " . $vehiculo_n . " ";

				$result = $conexion->query($sql); 
								
				if (!$result) 
				{
					die("Error: no se pudo realizar la consulta estacion");	
				}			

				$num = $result->num_rows;
				
				if ($num > 0)
				{
					while ($row = $result->fetch_assoc()) 
					{
						$id = $row['id_transaccion'];
					}

					$result->free();
				
					if (is_null($id))
					{
						$id = 0;
						$sql = "select odometro from vehiculos where id_vehiculo = " . $vehiculo_n;

						$regreso = $conexion->query($sql); 

						if (!$regreso) 
						{
							die("Error: no se pudo obtener odometro del vehiculo");
						}

						while ($row = $regreso->fetch_assoc()) 
						{
							$odometro_inicio = $row['odometro'];
						}

						$regreso->free();								
					}
					else
					{
						$sql = "select ";
						$sql .= "odometro ";
						$sql .= "from ";
						$sql .= "transacciones ";
						$sql .= "where ";
						$sql .= "id_transaccion = " . $id . " ";
					
						$res = $conexion->query($sql); 	

						if (!$res) 
						{
							die("Error: no se pudo realizar la consulta estacion");
						}
							
						while ($row = $res->fetch_assoc()) 
						{
							$odometro_inicio = $row['odometro'];
						}

						$res->free();
					}
				}
				else
				{
					$odometro_inicio = 0;

					$sql = "select odometro from vehiculos where id_vehiculo = " . $vehiculo_n;

					$regreso = $conexion->query($sql); 

					if (!$regreso) 
					{
						die("Error: no se pudo obtener odometro del vehiculo");
					}

					while($row = $regreso->fetch_assoc()) 
					{
						$odometro_inicio = $row['odometro'];
					}

					$regreso->free();								
				}

				$odometro_InCliente = $odometro_inicio;
				$inicio_clienV = 1;
			}

			$odometro_diferencia = $odometro - $odometro_inicio;
			$rendimiento = $odometro_diferencia / $volumen;			
			$vehiculo_litros = $vehiculo_litros + $volumen;
			$vehiculo_odometro =  $odometro_InCliente;
			$vehiculo_odometro_f = $odometro;
			$vehiculo_odometro_diferencia = $vehiculo_odometro_diferencia + $odometro_diferencia;
			$vehiculo_rendimiento = $vehiculo_rendimiento + $rendimiento;			
			
				$a = "A" . $cel;
				$b = "B" . $cel;
				$c = "C" . $cel;
				$d = "D" . $cel;
				$e = "E" . $cel;
				$f = "F" . $cel;
				$g = "G" . $cel;
				$h = "H" . $cel;
				$i = "I" . $cel;

			$objPHPExcel->setActiveSheetIndex(0)
			->setCellValue($a, $id_transaccion)
			->setCellValue($b, $fecha_contable)
			->setCellValue($c, $fila['id_venta'])
			->setCellValue($d, $fila['fecha_venta'])
			->setCellValue($e, $volumen)
			->setCellValue($f, $odometro)
			->setCellValue($g, $odometro_diferencia)
			->setCellValue($h, $rendimiento);
	
			$cel=$cel+1;		

			$odometro_inicio = $odometro;
		}

		$resultado1->free();
		
		$vehiculo_rendimiento = $vehiculo_odometro_diferencia / $vehiculo_litros;		

			$a = "A" . $cel;
			$b = "B" . $cel;
			$c = "C" . $cel;
			$d = "D" . $cel;
			$e = "E" . $cel;
			$f = "F" . $cel;
			$g = "G" . $cel;
			$h = "H" . $cel;
			$i = "I" . $cel;

		$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($d, 'Total Vehiculo: ')
				->setCellValue($e, $vehiculo_litros)
				->setCellValue($g, $vehiculo_odometro_diferencia)
				->setCellValue($h, $vehiculo_rendimiento);

		$cel=$cel+2;	
						
		
		$vehiculo_litros = 0;
		$vehiculo_odometro = 0;
		$vehiculo_odometro_f = 0;
		$vehiculo_odometro_diferencia = 0;
		$vehiculo_rendimiento = 0;		
		$vehiculo = $vehiculo_n;
	}			
	
	$cel += 1;

	$a = "A" . ($cel + 4);

	$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue($a, 'Gaslight System Flotillas Locales');

	$informacion = 'Genero Reporte Rendimiento Combustible/Unidad formato Excel ';
	$datos = "Con filtros: ";
	if ($id_vehiculo != 0)
	{
		$datos=$datos." Vehiculo=".$id_vehiculo;
	}
	$datos=$datos." Fecha inicial=". $fecha_inicio . " " . " fecha final =" . $fecha_fin . " ";	
	insertAuditoria($informacion,$datos,$_SESSION['id_usuario'],$_SESSION['direccion_ip'],$_SESSION['direccion_mac']);

    mysqli_close($conexion);

	$objPHPExcel->getActiveSheet()->setTitle('REPORTE');
	$objPHPExcel->setActiveSheetIndex(0);

	header('Cache-Control: max-age=0');

	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

	ob_end_clean();
	
	header('Content-type: application/vnd.ms-excel');

	$nombre_archivo = "Reporte_ Rendimiento_CombustibleUnidad_".date("Y_m_d_H_i_s", $time);
	$nombre_archivo = strtoupper($nombre_archivo);

	header('Content-Disposition: attachment; filename="'.$nombre_archivo.'.xlsx"');

	$objWriter->save('php://output');

	exit;
?>