<?php
	session_start();
	include('conexion.php');
	include 'mysql_Agregar_auditoria.php';	
	ini_set('max_execution_time', '300');
	set_time_limit(500);
	if (PHP_SAPI == 'cli')
		die('This report should only be run from a Web Browser');

	/** Include PHPExcel */
	require('./PHPExcel/Classes/PHPExcel.php');
	
	$producto = $_GET['id_producto'];
	$id_cliente = $_GET['id_cliente'];
	$idtipo = $_GET['idtipo'];
	$departamento = $_GET['departamento'];
	$vehiculo = $_GET['id_vehiculo'];
	$limit = $_GET['limit'];
	$fecha1 = $_GET['fecha1'];
	$fecha_inicio1 = $_GET['fecha_inicio'];
	$fecha_fin1 = $_GET['fecha_fin'];
	$fecha2 = $_GET['fecha2'];
	$fecha_inicio2 = $_GET['fecha_inicio2'];
	$fecha_fin2 = $_GET['fecha_fin2'];
	$facturado = $_GET['facturado'];
	$no_facturado = $_GET['no_facturado'];
	$serie = $_GET['serie'];
	$folio = $_GET['folio'];
	$adeudo = $_GET['adeudo'];
	$id_serie = $_GET['id_serie'];
	$id_folio = $_GET['id_folio'];
	$id_adeudo = $_GET['id_adeudo'];
	$t_activa = $_GET['t_activa'];
	$t_cancelada = $_GET['t_cancelada'];
	$ordenamiento = $_GET['ordenamiento'];
	$total_transacciones =0;
	$monto_muestra=0;
	$volumen_muestra=0;
	
	// Crea un nuevo objeto PHPExcel
	$objPHPExcel = new PHPExcel();

	// Establecer propiedades
	$objPHPExcel->getProperties()
	->setCreator("Gaslight")
	->setLastModifiedBy("Gaslight")
	->setTitle("Reporte de Transacciones ")
	->setSubject("Reporte de Transacciones ")
	->setDescription("Reporte de Transacciones")
	->setKeywords("Excel Office 2007 openxml php")
	->setCategory("Transacciones");

	// Agregar Informacion
	// Combino las celdas desde A1 hasta E1
	$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:C1');
	$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
	$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
	$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(10);
	$objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(18);
	$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(15);

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

	// Fuente de la primera fila en negrita
	$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:C1')->applyFromArray($boldArray);
	$objPHPExcel->getActiveSheet()->getStyle('A2:P2')->applyFromArray($bold2Array);
	//$objPHPExcel->getActiveSheet()->setAutoFilter('A6:L6');
	
	
		
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'REPORTE DE TRANSACCIONES')
            ->setCellValue('A2', 'CLIENTE:'.$id_cliente)
            ->setCellValue('K1', 'Fecha: ' . date("Y/m/d  H:i:s", $time) )
            ;

$cel=3;//Numero de fila donde empezara a crear  el reporte

	$objPHPExcel->setActiveSheetIndex(0)				
					->setCellValue("A".($cel), 'Id Vehi')
					->setCellValue("B".($cel), 'Departamento')
					->setCellValue("C".($cel), 'N Eco')
					->setCellValue("D".($cel), 'Placa')
					->setCellValue("E".($cel), 'Transaccion')
					->setCellValue("F".($cel), 'Fecha Registro')
					->setCellValue("G".($cel), 'Producto')
					->setCellValue("H".($cel), 'Volumen')
					->setCellValue("I".($cel), 'Monto')
					->setCellValue("J".($cel), 'Odometro')
					->setCellValue("K".($cel), 'Diferencia')
					->setCellValue("L".($cel), 'Serie')
					->setCellValue("M".($cel), 'Folio');
		
	$cel++;
$sql = "Select ";
			$sql .= "t.id_transaccion, ";
			$sql .= "t.id_turno, ";
			$sql .= "ifnull(t.monto,0) as monto, ";
			$sql .= "ifnull(t.saldo,0) as saldo, ";
			$sql .= "date_format(t.fecha,'%Y/%m/%d %H:%m:%s') as fecha, ";
			$sql .= "t.id_vehiculo, ";
			$sql .= "ifnull(t.odometro,0) as odometro, ";
			$sql .= "ifnull(t.odometro_diferencia,0) as odometro_diferencia, ";
			$sql .= "if(t.factura=0,'No','Si') as factura, ";
			$sql .= "t.serie, ";
			$sql .= "t.folio, ";
			$sql .= "t.id_factura, ";
			$sql .= "ifnull(tac.id_adeudo,0) as id_adeudo, ";
			$sql .= "ifnull(t.aux_1,'') as aux_1, ";
			$sql .= "td.volumen, ";
			$sql .= "p.nombre, ";
			$sql .= "t.id_turno, ";
			$sql .= "v.departamento, ";
			$sql .= "v.numero_economico, ";
			$sql .= "v.placa ";
			$sql .= "from transacciones_detalle td, productos p, transacciones t  ";
			$sql .= "left join vehiculos v on(v.id_vehiculo=t.id_vehiculo) ";
			$sql .= "left join (select ta.id_adeudo, ta.id_transaccion from transacciones_adeudos_cobro ta, adeudos_cobro ac ";
			$sql .= "where ta.id_adeudo= ac.id_adeudo and ac.estatus!=3 and ac.tipo_entidad=0) tac on (t.id_transaccion = tac.id_transaccion) ";	
			$sql .= "where ifnull(estatus,1) !=0 and id_tipo = 1 ";

			if ($facturado == "1" && $no_facturado=="0")
			{
				$sql .= " and t.factura =1 ";
			}
			if ($facturado == "0" && $no_facturado == "1")
			{
				$sql .= " and t.factura =0 ";
			}
			
			if($fecha2 == 1)
			{
				$sql .= "and fecha >='" . $fecha_inicio2 . " 00:00:00' and fecha <='".$fecha_fin2." 23:59:59' ";
			}
			
			if ($_SESSION['id_cliente'] != "")
			{
				$sql .= " and t.id_cliente = " . $_SESSION['id_cliente'] ;
			}
			
			if ($vehiculo !="" && $vehiculo != 0 && $vehiculo != "0" )
			{
				$sql .= " and t.id_vehiculo = " . $vehiculo;
			}
			
			if($fecha1=="1")
			{
				$fecha_inicio1 =str_replace ( "-", '', $fecha_inicio1);
				$turnoini = $fecha_inicio1."00";

				$fecha_fin1 =str_replace ( "-", '', $fecha_fin1);
				$turnofin = $fecha_fin1."99";

				if ($turnoini !="")
				{
					$sql .= " and t.id_turno >= " . $turnoini;
				}
				if ($turnofin != "")
				{
					$sql .= " and t.id_turno <= " . $turnofin;
				}
			}
			if ($adeudo == "1" && $id_adeudo != "")
			{
				$sql .= " and tac.id_adeudo =" . $id_adeudo ." ";
			}

			if ($serie == true && $id_serie != "")
			{
				$sql .= " and t.serie ='" . $id_serie . "' ";
			}

			if ($folio == true && $id_folio != "")
			{
				$sql .= " and t.folio =" . $id_folio . " ";
			}
			
			$sql .= " and td.id_producto= p.id_producto and t.id_transaccion = td.id_transaccion ";
			if($producto != 0){
			     $sql .= "and p.id_producto = " . $producto." ";		
			}							

			$sql .= " and td.id_detalle=1 ";			
			
			if ($limit=="1")
			{
				$sql .= "limit 1000 ";
			}
	
			$resultado0 = $conexion->query($sql); 

			if(!$resultado0) 
			{
				echo "Error: No se pudo realizar la consulta de las transacciones.".$sql;
				return;
			}

			while($fila = $resultado0->fetch_assoc()) 
			{	

				$objPHPExcel->setActiveSheetIndex(0)				
					->setCellValue("A".($cel), $fila['id_vehiculo'])
					->setCellValue("B".($cel),$fila['departamento'])
					->setCellValue("C".($cel), $fila['numero_economico'])
					->setCellValue("D".($cel), $fila['placa'])
					->setCellValue("E".($cel), $fila['id_transaccion'])
					->setCellValue("F".($cel), $fila['fecha'])
					->setCellValue("G".($cel), $fila['nombre'])
					->setCellValue("H".($cel), $fila['volumen'],0,0,'R')
					->setCellValue("I".($cel), $fila['monto'],0,0,'R')
					->setCellValue("J".($cel), $fila['odometro'],0,0,'R')
					->setCellValue("K".($cel), $fila['odometro_diferencia'],0,0,'R')
					->setCellValue("L".($cel), $fila['serie'])
					->setCellValue("M".($cel), $fila['folio']);

					//$objPHPExcel->getActiveSheet()->getStyle("B".($cel))->getNumberFormat()->setFormatCode('yyyy/mm/dd  [$-240A]hh:mm:ss am/pm');
					$objPHPExcel->getActiveSheet()->getStyle("B".($cel))->getNumberFormat()->setFormatCode('yyyy/mm/dd  [$-240A]hh:mm:ss');
					$cel++;	
					$monto_muestra = $monto_muestra+ $fila['monto'];
					$volumen_muestra = $volumen_muestra + $fila['volumen'];
					$total_transacciones = $total_transacciones+1;			
			}		
	$resultado0->free();

		$objPHPExcel->setActiveSheetIndex(0)	
					->setCellValue("G".($cel), 'TOTAL:')
					->setCellValue("H".($cel), $volumen_muestra,0,0,'R')
					->setCellValue("I".($cel), $monto_muestra,0,0,'R');

	$cel+=4;
	/*$objPHPExcel->setActiveSheetIndex(0)
				->setCellValue("A".($cel), 'Systemental Ventas.');	*/	
	$informacion = 'Genero Reporte Transacciones formato EXCEL ';
	$datos = "Con filtros id_vehiculo=".$vehiculo." Departamento=".$departamento." Producto=".$producto;
	if($fecha1==1){ $datos=$datos." Fecha_contable=".$fecha_inicio1." hasta ".$fecha_fin1;}
	if($fecha1==1){ $datos=$datos." Fecha_Registro=".$fecha_inicio2." hasta ".$fecha_fin2;}
	if($serie==1){  $datos=$datos." Serie=".$id_serie;}
	if($folio==1){  $datos=$datos." Folio=".$id_folio;}
	if($adeudo==1){ $datos=$datos." Adeudo= ".$id_adeudo;}
	$datos=$datos." Facturado=".$facturado." No facturado=".$no_facturado." Limit=".$limit;
	insertAuditoria($informacion,$datos,$_SESSION['id_usuario'],$_SESSION['direccion_ip'],$_SESSION['direccion_mac']);
	
	mysqli_close($iden);	

	// Renombrar Hoja
	$objPHPExcel->getActiveSheet()->setTitle('REPORTE DE TRANSACCIONES');

	// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
	$objPHPExcel->setActiveSheetIndex(0);

	// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
	header('Cache-Control: max-age=0');
	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	ob_end_clean();
	// We'll be outputting an excel file
	header('Content-type: application/vnd.ms-excel');
	//$razon_social= str_replace(" ","_",$cliente);
	//$razon_social = str_replace(array('"', "'", ' ', ','), '_', $razon_social);
	$nombre_archivo="Reporte_Transacciones".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;
?>