<?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();

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

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

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

	$cel = 5;

    $objPHPExcel->getProperties()
	->setCreator("Gaslight")
	->setLastModifiedBy("Gaslight System")
	->setTitle("Reporte Estado de Cuenta ")
	->setSubject("Reporte Estado de Cuenta ")
	->setDescription("Reporte Estado de Cuenta")
	->setKeywords("Excel Office 2007 openxml php")
	->setCategory("EstadoCuenta");

    $objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:C1');
	$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A2:C2');
	$objPHPExcel->setActiveSheetIndex(0)->mergeCells('G1:H1');

	$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
	$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(35);
	$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
	$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);

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

    $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));
	$bold3Array = array('font' => array('bold' => true,),'alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT));

	$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->applyFromArray($boldArray);
	$objPHPExcel->getActiveSheet()->getStyle('A9:E9')->applyFromArray($bold2Array);
	$objPHPExcel->getActiveSheet()->getStyle('F9:H9')->applyFromArray($bold3Array);


    $objPHPExcel->setActiveSheetIndex(0)
				->setCellValue('A1', 'Reporte Estado de Cuenta')
				->setCellValue('G1', 'Fecha: ' . date("Y/m/d  H:i:s", $time))
				->setCellValue('A3', 'Cliente')
				->setCellValue('B3', $_SESSION['id_cliente'], 0, 0, 'L')
				->setCellValue('A4', 'Razón Social')
				->setCellValue('B4', $_SESSION['razon_cliente'])
				->setCellValue('A5', 'Saldo')
				->setCellValue('B5', $_SESSION['saldo_muestra'])
				->setCellValue('A6', 'Fecha inicio')
				->setCellValue('B6', $fecha_inicio)
				->setCellValue('A7', 'Fecha fin')
				->setCellValue('B7', $fecha_fin)				
				->setCellValue('A9', 'Transacción')
				->setCellValue('B9', 'F. Registro')
				->setCellValue('C9', 'F. Contable')
				->setCellValue('D9', 'Tipo')
				->setCellValue('E9', 'Modo')
				->setCellValue('F9', 'Cargo')
				->setCellValue('G9', 'Abono')
				->setCellValue('H9', 'Saldo');

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

    $sql = "SELECT ";
	$sql .= "t.id_transaccion, ";
	$sql .= "t.fecha, ";
	$sql .= "concat(SUBSTRING(t.id_turno,7,2),'/',SUBSTRING(t.id_turno,5,2),'/',SUBSTRING(t.id_turno,1,4)) as id_turno, ";
	$sql .= "t.id_tipo, ";
	$sql .= "v.id_tag, ";
	$sql .= "t.descripcion, ";
	$sql .= "t.monto, ";
	$sql .= "t.saldo ";		
	$sql .= "FROM ";
	$sql .= "transacciones t ";
	$sql .= "left join transacciones_detalle td ";
	$sql .= "on (t.id_transaccion = td.id_transaccion) ";
	$sql .= "left join gaslight.ventas ve ";
	$sql .= "on (td.id_venta = ve.id_venta) ";
	$sql .= "left join vehiculos v ";
	$sql .= "on (v.id_vehiculo = t.id_vehiculo) ";
	$sql .= "where ";	
	$sql .= "t.id_cliente = " . $cliente . " ";
	$sql .= "and t.id_turno >= '" . $finiMuestra . "00" . "' and t.id_turno <= '" . $ffinMuestra . "06" . "' ";

	if ($id_vehiculo != 0)
	{
		$sql .= "and v.id_vehiculo = " . $id_vehiculo . " ";
	}
		
	$sql .= "order by t.id_turno, t.id_transaccion asc";
			
	$resultado = $conexion->query($sql); 	

	if (!$resultado) 
	{
		die("Error: no se pudo realizar la consulta de transacciones");
	}

    $monto_cargo = 0.00;
	$monto_abono = 0.00;

	$cel = 10;

    while ($fila = $resultado->fetch_assoc()) 
	{
		$id_transaccion = $fila['id_transaccion'];	
		$fecha = $fila['fecha'];
		$id_tipo = $fila['id_tipo'];
		$descripcion = $fila['descripcion'];
		$monto = $fila['monto'];
		$saldo = $fila['saldo'];
		$punto = '.';
			
		if ($id_tipo == 1)
		{			
			$monto_cargo = $monto_cargo + $monto;
			$monto = $monto * -1;
			$tipo = "Consumo";		
			$cargo = $monto;
			$abono = '0.00';
		}
			
		if ($id_tipo == 2)
		{
			$monto_abono = $monto_abono + $monto;
			$tipo = "Deposito";		
			$cargo = '0.00';
			$abono = $monto;					
		}
			
		if ($id_tipo == 3)
		{
			$monto_cargo = $monto_cargo + $monto;
			$monto = $monto * -1;
			$tipo = "Ajuste cargo";	
			$cargo = $monto;
			$abono = '0.00';			
		}
			
		if ($id_tipo == 4)
		{
			$monto_abono = $monto_abono + $monto;
			$tipo = "Ajuste abono";		
			$cargo = '0.00';
			$abono = $monto;	
		}
		
		$date = date_create($fecha);
		$fechaMuestra =  date_format($date, 'd/m/Y h:m:s');

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

		$objPHPExcel->setActiveSheetIndex(0)
					->setCellValue($a, $id_transaccion, 0, 0, 'L')			
					->setCellValue($b, $fechaMuestra)	
					->setCellValue($c, $fila['id_turno'])
					->setCellValue($d, $tipo)
					->setCellValue($e, $descripcion)		
					->setCellValue($f, $cargo, 0, 0, 'R')
					->setCellValue($g, $abono, 0, 0, 'R')	
					->setCellValue($h, $saldo, 0, 0, 'R');

		$cel += 1;
    }

    $resultado->free();	

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

    $cel += 1;

	$e = "E" . $cel;
	$f = "F" . $cel;
	$g = "G" . $cel;
	$h = "H" . $cel;
	$i = "I" . $cel;
	$a = "A" . ($cel + 3);

	$monto_cargo = $monto_cargo * -1;
		
	$objPHPExcel->setActiveSheetIndex(0)	
				->setCellValue($e, 'Totales')		
				->setCellValue($f, $monto_cargo)
				->setCellValue($g, $monto_abono)	
				->setCellValue($h, $saldo)
				->setCellValue($a, 'Gaslight System Flotillas Locales');	

	$informacion = 'Genero Reporte  Estado de Cuenta formato EXCEL ';
	$datos = "Con filtros: ";
	if ($id_vehiculo != 0)
	{
		$datos=$datos." Vehiculo=".$id_vehiculo;
	}
	$datos=$datos." Del id_turno=". $finiMuestra . "00" . " al id_turno =" . $ffinMuestra . "06";	
	insertAuditoria($informacion,$datos,$_SESSION['id_usuario'],$_SESSION['direccion_ip'],$_SESSION['direccion_mac']);

    mysqli_close($conexion);

    $objPHPExcel->getActiveSheet()->setTitle('Reporte Estado Cuenta');

	$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_Estado_Cuenta".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;
?>