<?php
$r="../../";
require_once($r."inc/funciones.php");
validNotSession($r);
$spe=$_SESSION['perfil'];
$iduser=$_SESSION['userid'];
$mysqli = connectDB($r);

// Verificar si se ha enviado el código
// Verificar si se ha enviado el código
if (isset($_POST['code'])) {
    $idcodeabono = $_POST['code'];

    // Consulta para obtener el abono por el código
    $query = "SELECT * FROM `z_abonos` WHERE `idabono` = ?";

    // Preparar la consulta
    if ($stmt = $mysqli->prepare($query)) {
        // Vincular el parámetro y ejecutar la consulta
        $stmt->bind_param("i", $idcodeabono);

        if ($stmt->execute()) {
            // Obtener los resultados de la consulta
            $result = $stmt->get_result();

            // Verificar si hay resultados
            if ($result->num_rows > 0) {
                $abonos = array();

                // Iterar sobre los resultados con un while
                while ($row = $result->fetch_assoc()) {
                    // Agregar cada abono al array
                    $abonos[] = $row;

                    // Obtener los datos de cada fila
                    $codigopedido = $row['codigopedido'];
                    $abono = $row['abono'];
                    $iduser = $row['iduser'];
                    $idmedio = $row['idmedio'];
                    $total = $row['total'];
                    $nota = $row['nota'];
                    $fecha = $row['fecha'];

                    // Inserción en la tabla de respaldo z_abonos_revertidos
                    $insertQuery = "INSERT INTO `z_abonos_revertidos` (`idabono`, `iduser`, `codigopedido`, `idmedio`, `abono`, `total`, `nota`, `fecha`) 
                                    VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
                    if ($insertStmt = $mysqli->prepare($insertQuery)) {
                        // Vincular los parámetros y ejecutar la consulta de inserción
                        $insertStmt->bind_param("iiiiiiss", $idcodeabono, $iduser, $codigopedido, $idmedio, $abono, $total, $nota, $fecha);

                        if ($insertStmt->execute()) {
                            // Si la inserción fue exitosa, eliminar el abono original
                            $deleteQuery = "DELETE FROM `z_abonos` WHERE `idabono` = ?";
                            if ($deleteStmt = $mysqli->prepare($deleteQuery)) {
                                $deleteStmt->bind_param("i", $idcodeabono);

                                if ($deleteStmt->execute()) {
                                    // Si la eliminación fue exitosa, actualizar el pedido
                                    $updateQuery = "UPDATE `z_pedidos` SET `pago`=0, `abono`=`abono` - ? WHERE `codigopedido` = ?";
                                    if ($updateStmt = $mysqli->prepare($updateQuery)) {
                                        $updateStmt->bind_param("di", $abono, $codigopedido);
                                        
                                        if ($updateStmt->execute()) {
                                            $updateStmt->close();
                                        } else {
                                            echo json_encode(array("status" => "error", "message" => "Error al actualizar el pedido con el código: $codigopedido."));
                                            exit;
                                        }
                                    } else {
                                        echo json_encode(array("status" => "error", "message" => "Error en la preparación de la consulta de actualización del pedido."));
                                        exit;
                                    }
                                } else {
                                    echo json_encode(array("status" => "error", "message" => "Error al eliminar el abono."));
                                    exit;
                                }
                                $deleteStmt->close();
                            } else {
                                echo json_encode(array("status" => "error", "message" => "Error en la preparación de la consulta de eliminación del abono."));
                                exit;
                            }
                        } else {
                            echo json_encode(array("status" => "error", "message" => "Error al insertar en z_abonos_revertidos."));
                            exit;
                        }
                        $insertStmt->close();
                    } else {
                        echo json_encode(array("status" => "error", "message" => "Error en la preparación de la consulta de inserción en z_abonos_revertidos."));
                        exit;
                    }
                }

                // Devolver una respuesta de éxito si todo fue bien
                echo json_encode(array("status" => "success", "message" => "El movimiento ha sido revertido correctamente.", "data" => $abonos));
            } else {
                echo json_encode(array("status" => "error", "message" => "No se encontraron abonos con ese código."));
            }
        } else {
            echo json_encode(array("status" => "error", "message" => "No se pudo ejecutar la consulta."));
        }

        $stmt->close();
    } else {
        echo json_encode(array("status" => "error", "message" => "Error en la preparación de la consulta."));
    }

    // Cerrar la conexión
    $mysqli->close();
} else {
    echo json_encode(array("status" => "error", "message" => "Código no recibido."));
}



?>
