<?php

    // include("../conexion/conexion.php");
    // $conn = new conexion();
    // $conectar = $conn->conectar();




$queryD = "SELECT * FROM `devolucionproduc` WHERE estadoDevolucionElectronicaDv='1' LIMIT 1";

    $resultadoD = $conectar->query($queryD);



if($resultadoD->num_rows > 0 ){
// $fila = $resultado->fetch_all(MYSQLI_ASSOC);
$fila2 = $resultadoD->fetch_assoc();
$factur =$fila2["numeroFactu"];
$numerodevo=$fila2["numeroDevo"];
$estadoDevolucion=$fila2["CalificacioDv"];
$bodega=$fila2["bodegaDV"];
$observacio=$fila2["notaDevo"];

$query = "SELECT `tipoId`, `cedula`, `Nombre`,
`direccion`, `telefono`, `apellido`, `correo`,
  `dv`, `naturaleza`,
 `regimen`, `responsabilidad`, `codigociudad`,`ResoluPosElec`, `PrefijoPosE`, `userApi`, `passApi`,
 facturas.factura, `valor`, `fechaFactura`,  `F.Pago_Electro`, `Fecha_Venci_Electro`, `M.Pago_Electro`,nit,detallef,cufe,fechaFactura
    FROM `facturas`
    INNER JOIN empresa ON facturas.idbodegaF = empresa.bodegaEm
    INNER JOIN clientes ON facturas.cliente = clientes.cedula 
    WHERE facturas.factura='$factur'
    LIMIT 1";

    $resultado = $conectar->query($query);

    $fila = $resultado->fetch_assoc();


 






    $facturaEnvia = preg_replace('/\D/', '', $numerodevo);
    $PREFIJO = preg_replace('/\d/', '', $numerodevo);
    



$productosQuery = "SELECT * FROM `devolucionproduc` INNER JOIN productos on devolucionproduc.producto=productos.codigo  WHERE numeroFactu='$factur' and estadoDevolucionElectronicaDv='1'";
$resultado1 = $conectar->query($productosQuery);
$fila1 = $resultado1->fetch_all(MYSQLI_ASSOC);
$productos = [];

$totalD=0;
$actulizarEstadoFac = "UPDATE devolucionproduc SET estadoDevolucionElectronicaDv = 'ok' WHERE numeroFactu = '$factur' and estadoDevolucionElectronicaDv='1'";
$eje = $conectar->query($actulizarEstadoFac);

foreach ($fila1 as $key => $value) {
    $tipoProduct = $value["TipoproducDv"];
    $precioVenta = $value["valorDv"];

    if (($tipoProduct == "hibrido" || $tipoProduct == "Fabricacion") && $precioVenta == 0) {
        
    }else{

    $caja = $value["CajaDv"];
    $frcc = $value["FrccDv"];
    
    $totalD=$totalD+$precioVenta;

    // $precioUnita=$value["base"];
    // if( $precioUnita==0){
    //     $precioUnita=$value["valor"];  
    // }

    $precioUnita=$value["valorDv"];  
    
    $cnatidad = (int)$caja + (int)$frcc;

    $tipoiva = $value["tipoIvaDv"];
    $valorNombre = $value["nombre"];
    $costounitario = $precioUnita / $cnatidad;

    $tipo = "";
    $claseImpuesto = "";
    $iva = "";

    switch ($tipoiva) {
        case "19":
            $tipo = "IVA";
            $claseImpuesto = "PO";
            $iva = "IVA_19";
            break;
        case "5":
            $tipo = "IVA";
            $claseImpuesto = "PO";
            $iva = "IVA_5";
            break;
        case "0":
            $tipo = "EXE";
            $claseImpuesto = "PO";
            $iva = "EXCENTO";
            break;
        case "1":
            $tipo = "EXC";
            $claseImpuesto = "PO";
            $iva = "EXCLUIDO";
            break;
        case "8":
            $tipo = "INC";
            $claseImpuesto = "PO";
            $iva = "IMPUESTO_CONSUMO_8";
            break;
    }

    $datos = array(
        "codigo" => $value["producto"],
        "nombreItemVenta" => $valorNombre,
        "precioVentaUnitario" => $costounitario,
        "precioReferencia"=>0,
        "descuentoPorcentaje"=>0,
        "cantidad" => $cnatidad,
        "observacion" => "",
        "unidad" => "94",
        "codigoDescuento"=>"04",
        "impuesto"=>$iva
     
    );

    $productos[] = $datos;


    }


}




$fecha=date('Y-m-d').'T'.date('H:i');

$respFiscales = $fila["responsabilidad"];


if($estadoDevolucion=="TO"){
    $tipoDevolucion = "ANULACION";
}else{
    $tipoDevolucion = "DEVOLUCION_BIENES";
}



$regimen=$fila["regimen"];
// $natural = ($fila["naturaleza"] == "NATURALES") ? "NATURAL" : "JURIDICA";
$natural = $fila["naturaleza"];
$formaPago = $fila["F.Pago_Electro"];
$medioP=$fila["M.Pago_Electro"];

$facturaelectronica = array(
    "nit" => $fila["nit"],   
    "numeroFacturaAsociada" => $factur,
    "numeroDocumentoComercial"=>$numerodevo,
    "tipo"=>$tipoDevolucion,
    "fechaGeneracion"=>$fecha,
    "fechaVencimiento"=>$fecha,
    "mediosPago"=>$medioP,
    "observacion"=>"$observacio",
    "formaPago"=>$formaPago,
    "total"=> $totalD,
    "cliente" => array(
        "nombreRazonSocial" => $fila["Nombre"] . " " . $fila["apellido"],
        "tipoIdentificacion" => $fila["tipoId"],
        "numIdentificacion" => $fila["cedula"],
        "naturaleza" => $natural,   
        "direccion" => $fila["direccion"],
        "ciudad" => $fila["codigociudad"],
        "telefono" => $fila["telefono"],
        "email" => $fila["correo"],
        "responsabilidadesFiscales"=>$respFiscales,
        "regimenContable"=>$regimen
    ),
   
    "items" => $productos
   
);


// echo(json_encode($facturaelectronica));
// die();


if(isset($_SESSION[$bodega]["toke"])){
    $token=$_SESSION[$bodega]["toke"];
    
} else {
    $userrApi = $fila["userApi"];
    $passApi = $fila["passApi"];

    // $url pruebas = "https://pru.clarisacloud.com:8443/seguridad/rest/api/v1/login/"
   // url producion=https://csi.clarisa.co:8443/seguridad/rest/api/v1/login/
    $url = "https://csi.clarisa.co:8443/seguridad/rest/api/v1/login/";

    $data = array(
        'usuario' => $userrApi,
        'contrasenia' => $passApi
    );

    $options = array(
        'http' => array(
            'header' => "Content-type: application/json",
            'method' => 'POST',
            'content' => json_encode($data)
        )
    );

    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);

    if ($response === FALSE) {
        if (isset($TipoFactura)) {

        } else {
            die('Error al realizar la solicitud');
        }
    }

    $result = json_decode($response, true);
    $token = $result["data"]["token"];
   // $_SESSION["toke"] = $token;

   $_SESSION[$bodega]=[
    "toke" => $token
];


// echo(var_dump($token));
// die();
}




     //url_producion=https://csi.clarisa.co:8443/facturas/rest/api/v1/notaCredito
        // url_prueba=https://pru.clarisacloud.com:8443/facturas/rest/api/v1/notaCredito

$url = "https://csi.clarisa.co:8443/facturas/rest/api/v1/notaCredito";

$options = [
    'http' => [
        'header' => "Content-type: application/json\r\n" . "Authorization: $token",
        'method' => 'POST',
        'content' => json_encode($facturaelectronica)
]
    ];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    if (isset($TipoFactura)) {

    } else {
        die('Error al realizar la solicitud');
    }
}

$resulta = json_decode($response, true);


// echo(json_encode($resulta));
// die();

if ($resulta["success"] == true || $resulta["success"] == "true") {
    $cufe = $resulta["data"]["cufe"];
    $actulizarEstadoFac = "UPDATE devolucionproduc SET estadoDevolucionElectronicaDv = 'OK', otroDato='$cufe' WHERE numeroFactu = '$factur' ";
    $eje = $conectar->query($actulizarEstadoFac);

    /// Registro documento electrónico

// $nit = $fila["nit"];
// $nombre = $userrApi;
// $age = date('Y', strtotime($fecha));  // Extrae el año
// $mes = date('m', strtotime($fecha));  // Extrae el mes

// $url = "https://gestion.posnube.xyz/api/electro/$nit/$nombre/$age/$mes";

// // Inicializar cURL
// $ch = curl_init($url);

// // Configuración de la solicitud cURL
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Obtener la respuesta si es necesario (aunque no la usaremos)
// curl_setopt($ch, CURLOPT_HTTPGET, true); // Especificar que es una solicitud GET
// curl_setopt($ch, CURLOPT_FAILONERROR, false); // No detiene el script en caso de error
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Opcional: Ignorar problemas con certificados SSL

// // Ejecutar la solicitud (sin necesidad de almacenar la respuesta)
// curl_exec($ch);

// // Cerrar la sesión cURL
// curl_close($ch);

//fin registro documentos electrónicos


} else {
    if (isset($resulta["data"]["errores"][0]["errorMessage"])) {
        $erro = $resulta["data"]["errores"][0]["errorMessage"];
    } else {
        if (isset($resulta["data"]["errores"][0]["codError"])) {
            $erro = $resulta["data"]["errores"][0]["codError"];
        } else {
            $erro = "Validar En la plataform del provedor Tecnoloogico";
        }
    }

    $actulizarEstadoFac = "UPDATE devolucionproduc SET otroDato = '$erro' WHERE numeroFactu = '$factur'";
    $eje = $conectar->query($actulizarEstadoFac);
}
// echo(json_encode($resulta));
// die();

}else{
    echo("sin datos");
}
?>
