<?php  
	include "conexion.php";
	include "insertar_log.php";
	$id_aplicacion = "0";
	$id_bomba = $_POST['id_bomba'];
	$origen = $_POST['origen'];
	//$id_bomba = 1;

	//$id_bomba = "1";
	//$pass = "admin";

	$datos = " Ingresa a obtener_venta desde ".$origen." de la bomba=".$id_bomba;	
	insertarLog($datos,$id_aplicacion);

	$id_venta =0;
	$id_factura = 0;
	$id_transaccion = 0;
	$id_cliente = 0;
	$id_cliente_pg = 0;
	$fecha_venta ="";
	$tiempo_vida_ticket=0;
	$ticket_alive=0;
	$cantidad_copias=0;
	$pemex_tipo ="";
	$factor_puntos=0;
	$puntos=0;
	$venta_JAN="";
	$TicketCopia=1;

	$existe=0;
	$venta = "";

	$sentencia = $conexion->prepare("SELECT id_venta,fecha_venta,pemex_tipo FROM ventas  WHERE id_bomba=? order by id_venta desc limit 1" );
	$sentencia->bind_param('s',$id_bomba);
	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$id_venta = $fila["id_venta"];
		$fecha_venta = $fila["fecha_venta"];
		$pemex_tipo = $fila["pemex_tipo"];
	}

	$sentencia->close();

	if($id_venta==0)
	{
		$datos = " Error venta no existe id_bomba= ".$id_bomba;	
		insertarLog($datos,$id_aplicacion);
		echo response(1,"Venta no existe","");
		return;
	}
	
	if($pemex_tipo!="D")
	{
		$datos = " Error la venta no es de contado id_venta".$id_venta;	
		insertarLog($datos,$id_aplicacion);
		echo response(1,"La venta no es de contado","");
		return;
	}
	
	$sentencia = $conexion->prepare("SELECT valor from parametros where id_parametro='TiempoVidaTicket'" );
	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$tiempo_vida_ticket = $fila["valor"];
	}

	$sentencia->close();

	//$datos = " Obtuvo valor tiempo_vida_ticket=".$tiempo_vida_ticket;	
	//	insertarLog($datos,$id_aplicacion);
	
	$sentencia = $conexion->prepare("SELECT valor from parametros where id_parametro='ticket_alive'" );
	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$ticket_alive = $fila["valor"];
	}

	$sentencia->close();

	//$datos = " Obtuvo valor ticket_alive=".$ticket_alive;	
	//	insertarLog($datos,$id_aplicacion);
	
	$sentencia = $conexion->prepare("SELECT valor from parametros where id_parametro='CantidadCopiasTicket'" );
	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$cantidad_copias = $fila["valor"];
	}

	$sentencia->close();

	//$datos = " Obtuvo valor CantidadCopiasTicket=".$cantidad_copias;	
		//insertarLog($datos,$id_aplicacion);
	
	if($origen=="venta")
	{
		if($tiempo_vida_ticket>0)
		{
			$fecha_actual=date("Y-m-d H:i:s");
			
			$time = strtotime($fecha_venta);
			
			$fecha_permitida = date("Y-m-d H:i:s", strtotime("+".$tiempo_vida_ticket.' minutes', $time));
			
			if($fecha_actual>$fecha_permitida)
			{
				$datos = " Error Tiempo de vida expirado";	
				insertarLog($datos,$id_aplicacion);
				echo response(1,"Tiempo de vida expirado","");
				return;
			}
		}
	}
	
	if($origen=="factura")
	{
		if($ticket_alive>0)
		{
			$fecha_actual=date("Y-m-d H:i:s");
			
			$time = strtotime($fecha_venta);
			
			$fecha_permitida = date("Y-m-d H:i:s", strtotime("+".$ticket_alive.' minutes', $time));
			
			if($fecha_actual>$fecha_permitida)
			{
				$datos = " Error Tiempo de vida expirado para generar factura de la venta";	
				insertarLog($datos,$id_aplicacion);
				echo response(1,"Tiempo de vida expirado para generar factura de la venta","");
				return;
			}
		}
	}

	


	$sql = "select ";
	$sql .= "f.id_factura ";
	$sql .= "from ";
	$sql .= "facturas f ";
	$sql .= "left join facturas_ventas fv on (fv.id_factura=f.id_factura) ";
	$sql .= "where ";
	$sql .= "f.estado=1 ";
	$sql .= "and fv.id_venta =".$id_venta;


	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$id_factura = $fila["id_factura"];
	}

	$sentencia->close();

	if($id_factura!=0)
	{
		$datos = " Error Venta ya facturada id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
		echo response(99,"Venta ya facturada","");
		return;
	}

	$sql = "select ";
	$sql .= "id_cliente ";
	$sql .= "from ";
	$sql .= "clientes ";
	$sql .= "where ";
	$sql .= "publico_general=1 ";

	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$id_cliente_pg = $fila["id_cliente"];
	}

	$sentencia->close();


	$sql = "select ";
	$sql .= "valor ";
	$sql .= "from ";
	$sql .= "parametros ";
	$sql .= "where ";
	$sql .= "id_parametro='TicketCopia' ";

	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$TicketCopia = $fila["valor"];
	}

	$sentencia->close();

	$id_transaccion_emp_rem2 =0;

	$sql = "select ";
	$sql .= "t.id_transaccion, ";
	$sql .= "t.id_cliente, ";
	$sql .= "ifnull(t.impreso,0) impreso, ";
	$sql .= "ifnull(t.id_transaccion_emp_rem2,0) id_transaccion_emp_rem2 ";
	$sql .= "from ";
	$sql .= "transacciones t ";
	$sql .= "left join transacciones_detalle td on (t.id_transaccion=td.id_transaccion) ";
	$sql .= "where ";
	$sql .= "t.estatus=1 ";
	$sql .= "and id_venta=".$id_venta;



	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	$impreso=0;
	
	if($fila = $resultado->fetch_assoc())
	{
		$id_transaccion = $fila["id_transaccion"];
		$id_cliente = $fila["id_cliente"];
		$id_transaccion_emp_rem2 = $fila["id_transaccion_emp_rem2"];
		$impreso = $fila["impreso"];
	}

	$sentencia->close();

	

	if($id_transaccion!=0 && $id_cliente!=$id_cliente_pg)
	{
		$datos = " Error venta asignada a un cliente id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
		echo response(90,"Venta asignada a un cliente","");
		return;
	}

	$sql = "select ";
	$sql .= "v.id_venta,";
	$sql .= "TIMESTAMPDIFF(MINUTE, v.fecha_venta, now()) tiempo_ticket, ";
	$sql .= "v.id_producto,";
	$sql .= "p.nombre,";
	$sql .= "v.volumen,";
	$sql .= "v.precio,";
	$sql .= "v.monto,";
	$sql .= "v.ticket,";
	$sql .= "v.id_bomba,";
	$sql .= "v.id_isla,";
	$sql .= "v.id_turno, ";
	$sql .= "v.pemex_tipo, ";
	$sql .= "p.factor_puntos, ";
	$sql .= "v.puntos, ";
	$sql .= $TicketCopia." as TicketCopia ";
	$sql .= "from ";
	$sql .= "ventas v ";
	$sql .= "left join productos p on (p.id_producto=v.id_producto) ";
	$sql .= "where ";
	$sql .= "id_venta =".$id_venta;

	$sentencia = $conexion->prepare($sql);
	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{   
		$venta =  $fila;
		$venta_JAN = $fila['pemex_tipo'];
		$factor_puntos =  $fila['factor_puntos'];
		$puntos =  $fila['puntos'];
	}

	$sentencia->close();

	$id_transaccion_remota=0;

	$sql = "select ";
	$sql .= "td.id_transaccion ";
	$sql .= "from ";
	$sql .= "transacciones_remotas_detalle td ";
	$sql .= "left join transacciones_remotas t on (t.id_transaccion=td.id_transaccion) ";
	$sql .= "where ";
	$sql .= "id_venta=".$id_venta." and t.estado=1 ";

	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$id_transaccion_remota =  $fila['id_transaccion'];
	}

	$sentencia->close();	
	

	if($id_transaccion_remota!=0)
	{
		$datos = " OK REMOTA id_transaccion_remota= ".$id_transaccion_remota;	
				insertarLog($datos,$id_aplicacion);
		echo response(95,"OK REMOTA",$id_transaccion_remota);
		return;
	}
	

	if($id_transaccion!=0 && $id_transaccion_emp_rem2==0 )
	{
		if ($origen=="venta" && $TicketCopia == 0) {
			$datos = " Sin Permiso para sacar Copia ";	
				insertarLog($datos,$id_aplicacion);
			echo response(99,"Sin Permiso para sacar Copia",$venta);
			return;
		}
		$datos = " Venta ya transaccionada id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
		echo response(97,"Venta ya transaccionada",$venta);
		return;

	}

	if($id_transaccion!=0 && $id_transaccion_emp_rem2!=0 && $impreso!=0)
	{
		$datos = " Venta ya transaccionada id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
		echo response(98,"Venta ya transaccionada",$venta);
		return;

	}

	if($id_transaccion!=0 && $id_transaccion_emp_rem2!=0 && $impreso==0)
	{
		echo response(96,"Venta",$venta);
		return;

	}	

	if($origen=="puntos"){

		if ($venta_JAN != 'D' ) 
		{
			$datos = " Venta Asociada a Jarreo o Consignación id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
			echo response(66,"Venta Asociada a Jarreo o Consignación",$venta);
			return;
		}
		if ($puntos > 0 ) 
		{
			$datos = " Venta Ya Asignada a Puntos id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
			echo response(67,"Venta Ya Asignada a Puntos ",$venta);
			return;
		}

		if ($factor_puntos == 0 ) 
		{
			$datos = " Producto No Válido Para Puntos id_venta=".$id_venta;	
				insertarLog($datos,$id_aplicacion);
			echo response(68,"Producto No Válido Para Puntos",$venta);
			return;
		}
	}

	$conexion->close();
	$datos = " Termina proceso obtener_venta ";	
				insertarLog($datos,$id_aplicacion);
	echo response(0,"OK",$venta);
	return;

	function response($estatus,$estatus_mensaje,$respuesta){
		header("HTTP/1.1".$estatus);

		$response["estatus"]=$estatus;
		$response["estatus_mensaje"]=$estatus_mensaje;
		$response["respuesta"]=$respuesta;
		
		$json_response = json_encode($response, JSON_UNESCAPED_UNICODE);

		echo $json_response;

	}

?>