<?php

// Configuración del registro de errores
ini_set('display_errors', 0); // No mostrar errores en pantalla en producción
ini_set('log_errors', 1); // Habilitar el registro de errores
ini_set('error_log', __DIR__ . '/phperror.log'); // Especificar la ruta del archivo de registro

include("clase_cargue.php"); // Asegúrate de que este archivo exista y contenga las clases necesarias (conexion, carguefactura)

// Función personalizada para el manejo de errores
function customErrorHandler($errno, $errstr, $errfile, $errline) {
    $error_message = "[" . date("Y-m-d H:i:s") . "] Error ($errno): $errstr en $errfile en la línea $errline\n";
    error_log($error_message, 3, __DIR__ . '/phperror.log'); // Registrar en el archivo especificado
    // Puedes optar por mostrar un mensaje de error genérico al usuario aquí
    // Por ejemplo: echo "Ocurrió un error inesperado. Por favor, inténtelo de nuevo más tarde.";
    // O, para solicitudes AJAX, devolver una respuesta JSON de error
    // die(); // Detener la ejecución del script
}

// Establecer la función personalizada para el manejo de errores
set_error_handler("customErrorHandler");

if(isset($_POST["codigo"])){
    $codigo = $_POST["codigo"];
    $Nombre = $_POST["nombre"];
    $cantidacaja = $_POST["cantcaja"];
    $cantidafrcc = $_POST["cantfrcc"];
    $base = $_POST["baseiva"];
    $valoriva = $_POST["valiva"];
    $iva = $_POST["tipoiva"];
    $pcaja = $_POST["costcaja"];
    $pfrcc = $_POST["costofrcc"];
    $utilicaja = $_POST["utilicaja"];
    $utilifrcc = $_POST["utilifrcc"];
    $Tprecio = $_POST["tcargue"];
    $factur = str_replace(' ', '',($_POST["factura"]));
    $movimineto = $_POST["movimien"];

    $lote = $_POST["lote"];
    $fechVencimi = $_POST["fvencimiento"];
    $R_invim = $_POST["rgistroInvima"];
    $es_invim = $_POST["estInvima"];
    $observacion = $_POST["Observaciones"];

    $ventaCaja = $_POST["ventaCaja"];
    $ventaFrcc = $_POST["ventaFrcc"];

    $ventaCaja2 = $_POST["ventaCaja2"];
    $ventaFrcc2 = $_POST["ventaFrcc2"];
    $bodega = $_POST["bodega"];
    $ubicacion = $_POST["ubicacion"];

    $precioblister = $_POST["precioblister"];

    $utilidadCaja2= $_POST["utilidadCaja2"];
    $utilidadFrcc2=$_POST["utilidadFrcc2"];
    $precioCaja3=$_POST["precioCaja3"];
    $precioFrcc3=$_POST["precioFrcc3"];
    $utilidadCaja3=$_POST["utilidadCaja3"];
    $utilidadFrcc3=$_POST["utilidadFrcc3"];

    $fechaActaRecep = $_POST["fechaActaRecep"];
    $usuarioA = $_POST["usuarioA"];
    $preciosTodos = $_POST["preciosTodos"];

    $provedor = $_POST["provedor"];

    // $fecha = $_POST["fechac"];  
    $fecha=date('Y-m-d H:i:s');

    $tipodetalle = $_POST["tipodetalle"];

    // Asumiendo que validadturnosentradas y turno son funciones definidas en otro lugar
    // Si son métodos de una clase, necesitarás instanciar esa clase primero
    // Por ahora, asumiendo que son funciones globales o definidas en clase_cargue.php
    if (function_exists('validadturnosentradas')) {
        validadturnosentradas($bodega);
    } else {
        error_log("Función validadturnosentradas no encontrada.", 3, __DIR__ . '/phperror.log');
    }

    if (function_exists('turno')) {
        turno($bodega);
    } else {
        error_log("Función turno no encontrada.", 3, __DIR__ . '/phperror.log');
    }


    if($fechaActaRecep == ""){
        $fechaActaRecep = date('Y-m-d H:i:s');
    }

    $guarda = new temporal();
    $guarda->guardarproductos(
        $factur, $movimineto, $codigo, $Nombre, $cantidacaja, $cantidafrcc,
        $base, $valoriva, $iva, $pcaja, $pfrcc, $Tprecio, $utilicaja, $utilifrcc,
        $lote, $fechVencimi, $R_invim, $es_invim, $observacion, $ventaCaja, $ventaFrcc,
        $ventaCaja2, $ventaFrcc2, $bodega, $ubicacion, $precioblister,
        $utilidadCaja2, $utilidadFrcc2, $precioCaja3, $precioFrcc3,
        $utilidadCaja3, $utilidadFrcc3, $fechaActaRecep, $usuarioA, $preciosTodos,
        $provedor, $fecha, $tipodetalle
    );

} elseif(isset($_POST["numerofacturac"])){
    $factura = str_replace(' ', '',($_POST["numerofacturac"]));
    $movimiento = $_POST["movimientoo"];
    $bodega = $_POST["bodega"];
    $provedor = $_POST["provedor"];

    $consult = new temporal();
    $consult->consultatemporal($factura, $movimiento, $bodega, $provedor);

} elseif(isset($_POST["validarfact"])){
    $numfact = str_replace(' ', '',($_POST["validarfact"]));
    $provedor = $_POST["provedor"];
    $bodega = $_POST["bodega"];

    $val = new temporal();
    $val->consulnumfactur($numfact, $provedor, $bodega);
}


class temporal{
    private $conen; // Añadido para almacenar el objeto de conexión

    function __construct() {
        // Asegúrate de que la clase 'conexion' esté definida y disponible
        if (class_exists('conexion')) {
            $conex = new conexion();
            $this->conen = $conex->conectar();
        } else {
            error_log("Clase 'conexion' no encontrada. Asegúrate de que 'clase_cargue.php' esté incluida correctamente y defina esta clase.", 3, __DIR__ . '/phperror.log');
            // Podrías lanzar una excepción o manejar esto de manera más elegante
            die(json_encode(["res" => "no", "mensa" => "Error de conexión a la base de datos."]));
        }
    }

    function guardarproductos(
        $factur, $movimineto, $codigo, $Nombre, $cantidacaja, $cantidafrcc, $base,
        $valoriva, $iva, $pcaja, $pfrcc, $Tprecio, $utilicaja, $utilifrcc, $lote,
        $fechVencimi, $R_invim, $es_invim, $Observaciones, $ventaCaja, $ventaFrcc,
        $ventaCaja2, $ventaFrcc2, $bodega, $ubicacion, $precioblister,
        $utilidadCaja2, $utilidadFrcc2, $precioCaja3, $precioFrcc3, $utilidadCaja3,
        $utilidadFrcc3, $fechaActaRecep, $usuarioA, $preciosTodos, $provedor, $fecha,
        $tipodetalle
    ){
        $estadoEje = 0;

       $producto = [[
            "Codigo"           => $codigo,
            "Nombre"           => $Nombre,
            "Cantida_caja"     => $cantidacaja,
            "Cantida_frcc"     => $cantidafrcc,
            "Base"             => $base,
            "iva"              => $iva,
            "tipo"             => $valoriva, // Suponiendo que $valoriva es el tipo de IVA
            "total"            => $Tprecio,
            "costocaja"        => $pcaja,
            "costofrcc"        => $pfrcc,
            "utilcaja"         => $utilicaja,
            "utilifrcc"        => $utilifrcc,
            "lote"             => $lote,
            "FVencimiento"     => $fechVencimi,
            "Rinvima"          => $R_invim,
            "Einvima"          => $es_invim,
            "Observac"         => $Observaciones,
            "ventaCaja"        => $ventaCaja,
            "ventaFrcc"        => $ventaFrcc,
            "ventaCaja2"       => $ventaCaja2,
            "ventaFrcc2"       => $ventaFrcc2,
            "precioblister"    => $precioblister,
            "bodega"           => $bodega,
            "ubicacion"        => $ubicacion,
            "utilidadCaja2"    => $utilidadCaja2,
            "utilidadFrcc2"    => $utilidadFrcc2,
            "precioCaja3"      => $precioCaja3,
            "precioFrcc3"      => $precioFrcc3,
            "utilidadCaja3"    => $utilidadCaja3,
            "utilidadFrcc3"    => $utilidadFrcc3,
    ]];

        if (empty(trim($provedor))) {
            echo json_encode(["res" => "no", "mensa" => "No ha selecionado el provedor"]);
            return; // Salir de la función
        }

        // Asegúrate de que la clase 'carguefactura' esté definida y disponible
        if (!class_exists('carguefactura')) {
            error_log("Clase 'carguefactura' no encontrada. Asegúrate de que 'clase_cargue.php' esté incluida correctamente y defina esta clase.", 3, __DIR__ . '/phperror.log');
            echo json_encode(["res" => "no", "mensa" => "Error interno del servidor: clase requerida faltante."]);
            return; // Salir de la función
        }
        $consul = new carguefactura();

    if($_SESSION["inventarioLinea"]==1 || $_SESSION["inventarioLinea"]=="1"){
        if($movimineto == "compra"){
            $fact = $consul->consultarfactor($producto, $bodega);
            
            if($fact != 0){
                $dat = ["res" => "no", "mensa" => "$fact"];
                echo(json_encode($dat));
            } else {
                // $actu = $consul->productoscompra($producto, $factur, $fecha, $provedor, $fechaActaRecep, $bodega, $usuarioA, $preciosTodos);
           
                // if($actu == 1){
                //     $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                //     $estadoEje = 1;
                //     $dat = ["res" => "si", "mensa" => ''];
                //     echo(json_encode($dat));
                // } else {
                //     $dat = ["res" => "no", "mensa" => 'Error al Agregar Producto'];
                //     echo(json_encode($dat));
                // }

                $this->conen->begin_transaction();

                    try {
                        $actu = $consul->productoscompra($producto, $factur, $fecha, $provedor, $fechaActaRecep, $bodega, $usuarioA, $preciosTodos);
                        if ($actu != 1) {
                            throw new Exception("Error en productoscompra");
                        }

                        $kar = $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                        if (!$kar) {
                            throw new Exception("Error en kardex");
                        }

                        // Si todo salió bien
                        $this->conen->commit();
                        $estadoEje = 1;
                        $dat = ["res" => "si", "mensa" => ''];
                        echo json_encode($dat);

                    } catch (Exception $e) {
                        // Si algo falla, revertimos todo
                        $this->conen->rollback();
                        $dat = ["res" => "no", "mensa" => $e->getMessage()];
                        echo json_encode($dat);
                    }

            }
        } elseif($movimineto == "entrada"){
              
            $fact = $consul->consultarfactor($producto, $bodega);

        
            if($fact != 0){
                $dat = ["res" => "no", "mensa" => "$fact"];
                echo(json_encode($dat));
                die();
            }

            $numentra = $consul->consusnumeroentrada($bodega);
            if( $numentra > $factur ){
                $dat = ["res" => "no", "mensa" => "Número de entrada ya existe. EL MOVIMIENTO YA FUE GRABADO"];
                echo(json_encode($dat));
            } else {
                
                // $entra = $consul->entrada($producto, $bodega, $fecha, $preciosTodos);
                   
                // if($entra){
                //   $kar=  $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                   
                //   $estadoEje = 1;
                //     $dat = ["res" => "si", "mensa" => ''];
                //     echo(json_encode($dat));
                // } else {
                //     $dat = ["res" => "no", "mensa" => 'Error al Agregar Producto'];
                //     echo(json_encode($dat));
                // }

                $this->conen->begin_transaction();

                try {
                    $entra = $consul->entrada($producto, $bodega, $fecha, $preciosTodos);
                    if(!$entra) throw new Exception("Error en entrada");

                    $kar = $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                    if(!$kar) throw new Exception("Error en kardex");
                    $estadoEje = 1;
                    $this->conen->commit();
                    echo json_encode(["res" => "si", "mensa" => ""]);

                } catch (Exception $e) {
                    $this->conen->rollback();
                    echo json_encode(["res" => "no", "mensa" => $e->getMessage()]);
                }
            }
        } elseif($movimineto == "salida"){
            $existe = $consul->consultarixistencias($producto, $bodega);
            if($existe == 1){
                $dat = ["res" => "no", "mensa" => 'No se permiten rojos en bodega'];
                echo(json_encode($dat));
            } else {
                if($existe == 2){
                    $dat = ["res" => "no", "mensa" => 'Revise producto no fraccionado o inventario en cero'];
                    echo(json_encode($dat));
                } else {
                    // $exit = $consul->salida($producto, $bodega);
                    // if( $exit){
                    //     $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                    //     $estadoEje = 1;
                    //     $dat = ["res" => "si", "mensa" => ''];
                    //     echo(json_encode($dat));
                    // } else {
                    //     $dat = ["res" => "no", "mensa" => 'Error al Retirar Producto'];
                    //     echo(json_encode($dat));
                    // }


                       $this->conen->begin_transaction();

                        try {
                            $exit = $consul->salida($producto, $bodega);
                            if (!$exit) {
                                throw new Exception("Error al Retirar Producto");
                            }

                            $kar = $consul->kardex($producto, $movimineto, $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                            if (!$kar) {
                                throw new Exception("Error en Kardex");
                            }

                            // Si ambas fueron bien
                            $this->conen->commit();
                            $estadoEje = 1;
                            echo json_encode(["res" => "si", "mensa" => ""]);

                        } catch (Exception $e) {
                            // Algo falló, revertimos todo
                            $this->conen->rollback();
                            echo json_encode(["res" => "no", "mensa" => $e->getMessage()]);
                        }



                }
            }
        } elseif($movimineto == "retirar"){
            $codeP = $producto[0]["Codigo"];
            if($es_invim == "entrada" || $es_invim == "compra"){
                $existe = $consul->consultarixistencias($producto, $bodega);
                if($existe == 1){
                    $dat = ["res" => "no", "mensa" => 'No se permiten rojos en bodega'];
                    echo(json_encode($dat));
                } else {
                    if($existe == 2){
                        $dat = ["res" => "no", "mensa" => 'Revise producto no fraccionado o inventario en cero'];
                        echo(json_encode($dat));
                    } else {
                        // $exit = $consul->salida($producto, $bodega);
                        // if( $exit){
                        //     $consul->kardex($producto, "Retiro_Producto", $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                        //     $dat = ["res" => "si", "mensa" => ''];
                        //     $tempo = $this->conen->query("DELETE FROM `temporal`  WHERE movimineto='$es_invim' and numfactur='$factur' and estinvima='$provedor' and codigop='$codeP' and bodega=$bodega");
                        //     if($es_invim == "compra"){
                        //         $tempo = $this->conen->query("DELETE FROM `prodcompra`   WHERE  numfactur='$factur' and provedor='$provedor' and cproducto='$codeP' and idbodegaCo=$bodega");
                        //     }
                        //     echo(json_encode($dat));
                        // } else {
                        //     $dat = ["res" => "no", "mensa" => 'Error al Retirar Producto'];
                        //     echo(json_encode($dat));
                        // }

                        $this->conen->begin_transaction();

                        try {
                            // 1. Registrar salida
                            $exit = $consul->salida($producto, $bodega);
                            if (!$exit) {
                                throw new Exception("Error al Retirar Producto");
                            }

                            // 2. Registrar en kardex
                            $kar = $consul->kardex($producto, "Retiro_Producto", $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                            if (!$kar) {
                                throw new Exception("Error al registrar Kardex");
                            }

                            // 3. Borrar de temporal
                            $tempo = $this->conen->query("
                                DELETE FROM `temporal`
                                WHERE movimineto='$es_invim'
                                AND numfactur='$factur'
                                AND estinvima='$provedor'
                                AND codigop='$codeP'
                                AND bodega=$bodega
                            ");
                            if (!$tempo) {
                                throw new Exception("Error al borrar temporal");
                            }

                            // 4. Borrar de prodcompra si aplica
                            if ($es_invim == "compra") {
                                $delProd = $this->conen->query("
                                    DELETE FROM `prodcompra`
                                    WHERE numfactur='$factur'
                                    AND provedor='$provedor'
                                    AND cproducto='$codeP'
                                    AND idbodegaCo=$bodega
                                ");
                                if (!$delProd) {
                                    throw new Exception("Error al borrar prodcompra");
                                }
                            }

                            // Si todo fue bien → guardar
                            $this->conen->commit();
                            echo json_encode(["res" => "si", "mensa" => ""]);

                        } catch (Exception $e) {
                            // Algo falló → deshacer todo
                            $this->conen->rollback();
                            echo json_encode(["res" => "no", "mensa" => $e->getMessage()]);
                        }

                    }
                }
            } elseif($es_invim == "salida"){
                // $entra = $consul->entradaobs($producto, $bodega);
                // if($entra){
                //     $consul->kardex($producto, "Reintegro_Producto", $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                //     $dat = ["res" => "si", "mensa" => ''];
                //     $tempo = $this->conen->query("DELETE FROM `temporal`  WHERE movimineto='$es_invim' and numfactur='$factur' and estinvima='$provedor' and codigop='$codeP' and bodega=$bodega");
                //     echo(json_encode($dat));
                // } else {
                //     $dat = ["res" => "no", "mensa" => 'Error al Agregar Producto'];
                //     echo(json_encode($dat));
                // }

                $this->conen->begin_transaction();

                    try {
                        // 1. Reintegro al inventario
                        $entra = $consul->entradaobs($producto, $bodega);
                        if (!$entra) {
                            throw new Exception("Error al agregar producto");
                        }

                        // 2. Registro en kardex
                        $kar = $consul->kardex($producto, "Reintegro_Producto", $fecha, $factur, $provedor, $tipodetalle, $bodega, $usuarioA);
                        if (!$kar) {
                            throw new Exception("Error al registrar en kardex");
                        }

                        // 3. Borrar de temporal
                        $tempo = $this->conen->query("
                            DELETE FROM `temporal`
                            WHERE movimineto='$es_invim'
                            AND numfactur='$factur'
                            AND estinvima='$provedor'
                            AND codigop='$codeP'
                            AND bodega=$bodega
                        ");
                        if (!$tempo) {
                            throw new Exception("Error al borrar temporal");
                        }

                        // Si todo fue bien, confirmar cambios
                        $this->conen->commit();
                        echo json_encode(["res" => "si", "mensa" => ""]);

                    } catch (Exception $e) {
                        // Algo falló, revertimos todo
                        $this->conen->rollback();
                        echo json_encode(["res" => "no", "mensa" => $e->getMessage()]);
                    }


            } else {
                $dat = ["res" => "si", "mensa" => ''];
                $tempo = $this->conen->query("DELETE FROM `temporal`  WHERE movimineto='$es_invim' and numfactur='$factur' and estinvima='$provedor' and codigop='$codeP' and bodega=$bodega");
                echo(json_encode($dat));
            }
        } elseif($movimineto == "obs" || $movimineto == "ordenc" ){
            $estadoEje = 1;
            $dat = ["res" => "si", "mensa" => ''];
            echo(json_encode($dat));
        }


        if($estadoEje == 1){
            // Es una buena práctica verificar si la consulta fue exitosa
            if ($this->conen) {
                $ejecutarr = $this->conen->prepare("INSERT INTO `temporal`(`numfactur`,`movimineto`,`codigop`, `nombrep`, `cantCaja`, `cantFrcc`,
                `base`, `iva`, `tipo`, `costoCaja`,`costoFrcc`, `utulidacaja`, `utulidafrcc`,
                `Total`,`lote`,`fvencimi`,`rinvima`,`estinvima`, `Observaciones`, `VentaCaja`,
                 `VentaFrcc`, `VentaCaja2`,
                  `VentaFrcc2`,`bodega`,`ubicacion`,`precioBlister`, `utilidacaja2`, `utilidafrcc2`, `VentaCaja3`, `VentaFrcc3`, `utilidacaja3`, `utilidafrcc3`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                if ($ejecutarr) {
                    $ejecutarr->bind_param("ssssssssssssssssssssssssssssssss", $factur, $movimineto, $codigo, $Nombre, $cantidacaja, $cantidafrcc, $base, $valoriva, $iva, $pcaja, $pfrcc, $utilicaja, $utilifrcc, $Tprecio, $lote, $fechVencimi, $R_invim, $provedor, $Observaciones, $ventaCaja, $ventaFrcc, $ventaCaja2, $ventaFrcc2, $bodega, $ubicacion, $precioblister, $utilidadCaja2, $utilidadFrcc2, $precioCaja3, $precioFrcc3, $utilidadCaja3, $utilidadFrcc3);
                    if (!$ejecutarr->execute()) {
                        error_log("Error al ejecutar la declaración preparada para la tabla 'temporal': " . $ejecutarr->error, 3, __DIR__ . '/phperror.log');
                        // Podrías enviar una respuesta de error al cliente aquí
                    }
                    $ejecutarr->close();
                } else {
                    error_log("Error al preparar la declaración para la tabla 'temporal': " . $this->conen->error, 3, __DIR__ . '/phperror.log');
                    // Podrías enviar una respuesta de error al cliente aquí
                }
            } else {
                error_log("La conexión a la base de datos es nula al intentar insertar en la tabla 'temporal'.", 3, __DIR__ . '/phperror.log');
            }
        }



    }else{



        /////////////// FIN INVENTARIO NO EN LINEA


 if($movimineto == "compra" || $movimineto == "entrada" ||$movimineto == "salida" || $movimineto == "obs" || $movimineto == "ordenc"){

       if ($this->conen) {
                $ejecutarr = $this->conen->prepare("INSERT INTO `temporal`(`numfactur`,`movimineto`,`codigop`, `nombrep`, `cantCaja`, `cantFrcc`,
                `base`, `iva`, `tipo`, `costoCaja`,`costoFrcc`, `utulidacaja`, `utulidafrcc`,
                `Total`,`lote`,`fvencimi`,`rinvima`,`estinvima`, `Observaciones`, `VentaCaja`,
                 `VentaFrcc`, `VentaCaja2`,
                  `VentaFrcc2`,`bodega`,`ubicacion`,`precioBlister`, `utilidacaja2`, `utilidafrcc2`, `VentaCaja3`, `VentaFrcc3`, `utilidacaja3`, `utilidafrcc3`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                if ($ejecutarr) {
                    $ejecutarr->bind_param("ssssssssssssssssssssssssssssssss", $factur, $movimineto, $codigo, $Nombre, $cantidacaja, $cantidafrcc, $base, $valoriva, $iva, $pcaja, $pfrcc, $utilicaja, $utilifrcc, $Tprecio, $lote, $fechVencimi, $R_invim, $provedor, $Observaciones, $ventaCaja, $ventaFrcc, $ventaCaja2, $ventaFrcc2, $bodega, $ubicacion, $precioblister, $utilidadCaja2, $utilidadFrcc2, $precioCaja3, $precioFrcc3, $utilidadCaja3, $utilidadFrcc3);
                    if (!$ejecutarr->execute()) {
                        error_log("Error al ejecutar la declaración preparada para la tabla 'temporal': " . $ejecutarr->error, 3, __DIR__ . '/phperror.log');
                        // Podrías enviar una respuesta de error al cliente aquí
                      $dat = ["res" => "no", "mensa" => 'Error al agregar producto'];
                         echo(json_encode($dat));
                   
                   
                      }else{
                         $dat = ["res" => "si", "mensa" => ''];
                         echo(json_encode($dat));
                      }

                    $ejecutarr->close();

                } else {
                    error_log("Error al preparar la declaración para la tabla 'temporal': " . $this->conen->error, 3, __DIR__ . '/phperror.log');
                    // Podrías enviar una respuesta de error al cliente aquí
                }
            } else {
                error_log("La conexión a la base de datos es nula al intentar insertar en la tabla 'temporal'.", 3, __DIR__ . '/phperror.log');
            }
          
          
} elseif($movimineto == "retirar"){
            $codeP = $producto[0]["Codigo"];
            $tempo = $this->conen->query("DELETE FROM `temporal`  WHERE movimineto='$es_invim' and numfactur='$factur' and estinvima='$provedor' and codigop='$codeP' and bodega=$bodega");
            $dat = ["res" => "si", "mensa" => ''];
            echo(json_encode($dat));
}


      


        /////////////////FIN INVENTARIO NO ENLINEA











    }
    }


    function consultatemporal($factura, $movimiento, $bodega, $provedor){
        if (!$this->conen) {
            error_log("La conexión a la base de datos es nula en consultatemporal.", 3, __DIR__ . '/phperror.log');
            echo json_encode(["res" => "no", "mensa" => "Error de conexión a la base de datos."]);
            return;
        }

        if($movimiento == "compra"){
             $sentecia = "SELECT * FROM `temporal` WHERE numfactur='$factura' and movimineto='$movimiento' and bodega=$bodega  and estinvima='$provedor'" ;
        }else{
            $sentecia = "SELECT * FROM `temporal` WHERE numfactur='$factura' and movimineto='$movimiento' and bodega=$bodega  " ;
        }

        $resultado = $this->conen->query($sentecia);

        if ($resultado) {
            $fila = $resultado->fetch_all(MYSQLI_ASSOC);
            echo (json_encode($fila));
        } else {
            error_log("Error en la consulta temporal: " . $this->conen->error, 3, __DIR__ . '/phperror.log');
            echo json_encode(["res" => "no", "mensa" => "Error al recuperar datos temporales."]);
        }
    }

    public function consulnumfactur($factura, $provedor, $bodega){
        if (!$this->conen) {
            error_log("La conexión a la base de datos es nula en consulnumfactur.", 3, __DIR__ . '/phperror.log');
            echo 0; // O devolver un estado de error
            return;
        }

        $numfactc = $this->conen->query("SELECT * FROM `factcompra` WHERE factcompra='$factura' and provedor='$provedor' and idbodegaCo=$bodega");

        if ($numfactc) {
            if(mysqli_fetch_object($numfactc)){
                echo 1;
            } else {
                echo 0;
            }
        } else {
            error_log("Error en la consulta de número de factura: " . $this->conen->error, 3, __DIR__ . '/phperror.log');
            echo 0; // Indicar un error o no encontrado
        }
    }
}

?>