<?php  
	include "conexion.php";
	include "insertar_log.php";
	$id_aplicacion = "0";

	$id_factura = $_GET['id_factura'];
	//$id_factura = "43";

	$estado = 0;
	$estatus_proceso=0;
	$factura_terminada=0;

	$datos = " Ingresa a Obtener_factura con id_factura= ".$id_factura;	
		insertarLog($datos,$id_aplicacion);

	$sql = "select ";
	$sql .= "estado,";
	$sql .= "factura_terminada,";
	$sql .= "estatus_proceso ";
	$sql .= "from ";
	$sql .= "facturas ";
	$sql .= "where ";
	$sql .= "id_factura=".$id_factura;

	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	$datos = " Error al consultar factura id_factura=".$id_factura;	
		insertarLog($datos,$id_aplicacion);
        echo response(1,"Error al consultar factura","");
        return;
    }
	
    while ($row=$resultado->fetch_assoc())
    {
    	$estado = $row['estado'];
		$estatus_proceso=$row['estatus_proceso'];
		$factura_terminada=$row['factura_terminada'];
    }

    $resultado->free();

    $datos = " Obtuvo inforamcion factura id_factura=".$id_factura;	
		insertarLog($datos,$id_aplicacion);
	
    if($factura_terminada==0)
    {
    	$datos = " Factura no terminada id_factura=".$id_factura;	
		insertarLog($datos,$id_aplicacion);
    	echo response(1,"Factura no terminada","");
    	return;
    }

	$datos = " OK factura_terminada=".$factura_terminada." --- ".$id_factura."-----***** ".$estado;	
	insertarLog($datos,$id_aplicacion);
    
    if($factura_terminada==1 && $estado==0)
    {
    	$descripcion_estatus = "";

    	$sql = "select ";
    	$sql .= "descripcion_estatus ";
    	$sql .= "from ";
    	$sql .= "facturas ";
    	$sql .= "where ";
    	$sql .= "id_factura=".$id_factura;

    	$resultado = $conexion->query($sql);

	    if(!$resultado) 
	    {
	    	$datos = " Error al consultar descripcion de la factura=".$id_factura;	
			insertarLog($datos,$id_aplicacion);
	        echo response(2,"Error al consultar descripcion de la factura","");
	        return;
	    }
		
	    while ($row=$resultado->fetch_assoc())
	    {
	    	$descripcion_estatus = $row['descripcion_estatus'];
	    }

	    $resultado->free();

	    $datos = " Se obtuvo descripcion de la factura=".$id_factura." descripcion_estatus=".$descripcion_estatus;	
			insertarLog($datos,$id_aplicacion);
	    echo response(2,$descripcion_estatus,"");
	    return;

   	}

   	$sql = "select ";
	$sql .= "e.id_estacion, ";
	$sql .= "e.nombre_comercial, ";
	$sql .= "cat.descripcion as tipo,";
	$sql .= "e.tipo as tipo_e,";
	$sql .= "e.rfc,";
	$sql .= "e.numeroCRE, ";
	$sql .= "e.regimen_fiscal ";
	$sql .= "from ";
	$sql .= "estacion e ";
	$sql .= "left join cat_tipo_estacion cat on e.tipo=cat.tipo ";

	$sentencia = $conexion->prepare($sql);

	$sentencia->execute();

	$resultado = $sentencia->get_result();

	if($fila = $resultado->fetch_assoc())
	{
		$estacion= $fila;
	}

	$factura["estacion"]=$estacion;

	$sentencia->close();

   	$sql = "select ";
   	$sql .= "f.id_factura,";
   	$sql .= "f.comprobante_tipo,";
   	$sql .= "f2.comprobante_tipo_descripcion,";
   	$sql .= "f.serie,";
   	$sql .= "f.folio,";
   	$sql .= "date_format(f.fecha_expedicion,'%Y/%m/%d %H:%i:%s') fecha_expedicion,";
   	$sql .= "f.lugar_expedicion,";
   	$sql .= "f.id_emisor,";
   	$sql .= "f.id_receptor,";
   	$sql .= "Round(f.subtotal_ieps,2) subtotal,";
   	$sql .= "Round(f.iva,2) iva,";
   	$sql .= "Round(f.total,2) total,";
   	$sql .= "f.total_letra,";
   	$sql .= "f.pago_forma,";
   	$sql .= "f2.pago_forma_descripcion,";
   	$sql .= "f.pago_metodo,";
   	$sql .= "f2.pago_metodo_descripcion,";
   	$sql .= "f2.uso_cfdi,";
   	$sql .= "f2.uso_cfdi_descripcion,";
   	$sql .= "f.cadena_original,";
   	$sql .= "f.sello,";
   	$sql .= "f.fecha_timbrado,";
   	$sql .= "f.uuid,";
   	$sql .= "f.sello_sat,";
   	$sql .= "f.certificado_sat,";
   	$sql .= "f.e_rfc,";
   	$sql .= "f.r_rfc, ";
   	$sql .= "c.razon_social, ";
   	$sql .= "right(f.sello,8) ultimos_sello, ";
    $sql .= "f.r_banco, ";
    $sql .= "f.r_cuenta, ";
    $sql .= "f2.r_regimen_fiscal ";
   	$sql .= "from ";
   	$sql .= "facturas f ";
   	$sql .= "left join facturas2 f2 on (f.id_factura=f2.id_factura) ";
   	$sql .= "left join clientes c on (f.id_receptor=c.id_cliente) ";
   	$sql .= "where ";
   	$sql .= "f.id_factura=".$id_factura;

   	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	$datos = " Error al consultar informacion de la factura=".$id_factura;	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar informacion de la factura","");
        return;
    }
	
	if($row = $resultado->fetch_assoc())
    {
    	$fac = $row;
    	$id_receptor = $row['id_receptor'];
    	$id_emisor = $row['id_emisor'];
    }

    $resultado->free();

    $datos = " Se obtuvo informacion de la factura=".$id_factura;	
			insertarLog($datos,$id_aplicacion);

    $factura['factura']=$fac;

   	
   	$sql = "select ";
   	$sql .= "d.calle,";
   	$sql .= "d.numero_externo,";
   	$sql .= "d.numero_interno,";
   	$sql .= "d.colonia,";
   	$sql .= "d.locacion,";
   	$sql .= "d.referencia,";
   	$sql .= "d.municipio,";
   	$sql .= "d.estado,";
   	$sql .= "d.pais,";
   	$sql .= "d.codigo_postal,";
   	$sql .= "d.telefono ";
   	$sql .= "from ";
   	$sql .= "direcciones d ";
   	$sql .= "left join clientes_direcciones cd on (cd.id_direccion=d.id_direccion) ";
   	$sql .= "where ";
   	$sql .= "cd.tipo=1 and ";
   	$sql .= "cd.id_cliente=".$id_receptor;

   	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	$datos = " Error al consultar direccion del receptor=".$id_receptor;	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar direccion del receptor","");
        return;
    }
	
	if($row = $resultado->fetch_assoc())
    {
    	$direccion_receptor = $row;
    }

    $resultado->free();

    $datos = " Obtuvo informacion del receptor=".$id_receptor;	
			insertarLog($datos,$id_aplicacion);

    $factura['direccion_receptor']=$direccion_receptor;

    $sql = "select ";
   	$sql .= "d.calle,";
   	$sql .= "d.numero_externo,";
   	$sql .= "d.numero_interno,";
   	$sql .= "d.colonia,";
   	$sql .= "d.locacion,";
   	$sql .= "d.referencia,";
   	$sql .= "d.municipio,";
   	$sql .= "d.estado,";
   	$sql .= "d.pais,";
   	$sql .= "d.codigo_postal,";
   	$sql .= "d.telefono ";
   	$sql .= "from ";
   	$sql .= "direcciones d ";
   	$sql .= "left join estacion_direcciones ed on (ed.id_direccion=d.id_direccion) ";
   	$sql .= "where ";
   	$sql .= "ed.tipo=1 and ";
   	$sql .= "ed.id_estacion=".$id_emisor;

   	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	 $datos = " Error al obtener informacion del emisor=".$id_emisor;	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar direccion del emisor","");
        return;
    }
	
	if($row = $resultado->fetch_assoc())
    {
    	$direccion_emisor = $row;
    }

    $resultado->free();

     $datos = " Se obtuvo informacion del emisor=".$id_emisor;	
			insertarLog($datos,$id_aplicacion);

    $factura['direccion_emisor']=$direccion_emisor;

    $sql = "select ";
   	$sql .= "descripcion,";
   	$sql .= "Round(valor_unitario,6) valor_unitario,";
   	$sql .= "round(cantidad,3) cantidad,";
   	$sql .= "iva,";
   	$sql .= "Round(subtotal_ieps,2) total ";
   	$sql .= "from ";
   	$sql .= "facturas_detalle ";
   	$sql .= "where ";
   	$sql .= "id_factura=".$id_factura;

   	
   	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	$datos = " Error al consultar detalles de la factura";	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar detalles de la factura","");
        return;
    }

    $cont=0;
    $array = array();
	
	while($row = $resultado->fetch_assoc())
    {

    	$detalle['descripcion'] = $row['descripcion'];
  		$detalle['valor_unitario'] = $row['valor_unitario'];
  		$detalle['cantidad'] = $row['cantidad'];
  		$detalle['iva'] = $row['iva'];
  		$detalle['total'] = $row['total'];
  		$array[$cont] = $detalle;
  		$cont++;
    }

    $resultado->free();

    $factura['detalles']=$array;
    
    //búsqueda de transacción y detalles forma de pago
    $sql = "select ";
   	$sql .= "id_transaccion ";
   	$sql .= "from ";
   	$sql .= "transacciones ";
   	$sql .= "where ";
   	$sql .= "id_factura=".$id_factura;
   	
   	$resultado = $conexion->query($sql);

    if(!$resultado) 
    {
    	$datos = " Error al consultar la transacción=".$id_factura;	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar la transacción","");
        return;
    }
    
    while ($row=$resultado->fetch_assoc())
    {
    	$id_transaccion = $row['id_transaccion'];
    }

    $resultado->free();
    
    $factura['id_transaccion']=$id_transaccion;
    
    $sql = "select ";
   	$sql .= "* ";
   	$sql .= "from ";
   	$sql .= "transacciones_forma_pago_detalle ";
   	$sql .= "where ";
   	$sql .= "id_transaccion=".$id_transaccion;
   	
   	$resultado = $conexion->query($sql);
   	
   	$cont=0;
   	$array = array();

    if(!$resultado) 
    {
    	$datos = " Error al consultar la transacción forma pago detalle=".$id_transaccion;	
			insertarLog($datos,$id_aplicacion);
        echo response(2,"Error al consultar la transacción forma pago detalle","");
        return;
    }
    
    while ($row=$resultado->fetch_assoc())
    {
    	$transaccion_forma_detalle['monto'] = $row['monto'];
    	$transaccion_forma_detalle['forma_pago'] = $row['forma_pago'];
    	$transaccion_forma_detalle['banco'] = $row['banco'];
    	$transaccion_forma_detalle['cuenta'] = $row['cuenta'];
    	$transaccion_forma_detalle['aid'] = $row['aid'];
    	$transaccion_forma_detalle['autorizacion'] = $row['autorizacion'];
    	$transaccion_forma_detalle['card_brand'] = $row['card_brand'];
    	$transaccion_forma_detalle['referencia'] = $row['referencia'];
    	$transaccion_forma_detalle['arq'] = $row['arq'];
    	$array[$cont] = $detalle;
  		$cont++;
    }

    $resultado->free();
    
    $factura['transaccion_forma_pago']=$transaccion_forma_detalle;


    $datos = " Obtuvo información de la transaccion=".$id_transaccion;	
		insertarLog($datos,$id_aplicacion);
		
		

    $datos = " respuesta Ok--- ".json_encode($factura, JSON_UNESCAPED_UNICODE);	
		insertarLog($datos,$id_aplicacion);

    echo response(0,"OK",json_encode($factura, JSON_UNESCAPED_UNICODE));
    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;

	}



?>