<?php
if (!defined('BASEPATH')) {
    http_response_code(403);
    die(json_encode(["success" => false, "message" => "Acceso directo no permitido"]));
}

switch ($tipo) {
    case 'crearVenta':
        $items = isset($datapost['items']) ? $datapost['items'] : [];
        $pago = isset($datapost['pago']) ? (float)$datapost['pago'] : 0;
        $metodo_pago = isset($datapost['metodo_pago']) ? $datapost['metodo_pago'] : 'efectivo';
        $cliente_id = isset($datapost['cliente_id']) ? (int)$datapost['cliente_id'] : null;
        $usuario_id = isset($datapost['usuario_id']) ? (int)$datapost['usuario_id'] : null;
        $sucursal = isset($datapost['sucursal']) ? mysqli_real_escape_string($conn, $datapost['sucursal']) : '';
        $caja = isset($datapost['caja']) ? mysqli_real_escape_string($conn, $datapost['caja']) : '';
        $notas = isset($datapost['notas']) ? mysqli_real_escape_string($conn, $datapost['notas']) : '';

        if (empty($items)) {
            sendResponse(false, "No hay productos en la venta");
        }

        // Calcular totales
        $subtotal = 0;
        foreach ($items as $item) {
            $subtotal += (float)$item['cantidad'] * (float)$item['precio'];
        }
        $subtotal = round($subtotal, 2);
        $total = $subtotal;
        $pago = round($pago, 2);
        $cambio = round($pago - $total, 2);

        if ($pago < $total && $metodo_pago === 'efectivo') {
            sendResponse(false, "El pago es menor al total");
        }

        // Generar folio
        $fecha_folio = date('Ymd');
        $sql_folio = "SELECT COUNT(*) as num FROM ventas WHERE DATE(fecha) = CURDATE()";
        $result_folio = mysqli_query($conn, $sql_folio);
        $row_folio = mysqli_fetch_assoc($result_folio);
        $num_venta = ($row_folio['num'] ?? 0) + 1;
        $folio = "V{$fecha_folio}-" . str_pad($num_venta, 4, '0', STR_PAD_LEFT);

        mysqli_begin_transaction($conn);

        try {
            // Insertar venta
            $cliente_val = $cliente_id ? $cliente_id : 'NULL';
            $usuario_val = $usuario_id ? $usuario_id : 'NULL';

            $sql = "INSERT INTO ventas (folio, subtotal, total, pago, cambio, metodo_pago, cliente_id, usuario_id, sucursal, caja, notas)
                    VALUES ('$folio', $subtotal, $total, $pago, $cambio, '$metodo_pago', $cliente_val, $usuario_val, '$sucursal', '$caja', '$notas')";

            if (!mysqli_query($conn, $sql)) {
                throw new Exception("Error al crear venta: " . mysqli_error($conn));
            }

            $venta_id = mysqli_insert_id($conn);

            // Insertar detalle
            foreach ($items as $item) {
                $producto_id = (int)$item['id'];
                $producto_nombre = mysqli_real_escape_string($conn, $item['nombre']);
                $cantidad = (float)$item['cantidad'];
                $precio_unitario = (float)$item['precio'];
                $item_subtotal = $cantidad * $precio_unitario;

                $sql_detalle = "INSERT INTO venta_detalle (venta_id, producto_id, producto_nombre, cantidad, precio_unitario, subtotal)
                                VALUES ($venta_id, $producto_id, '$producto_nombre', $cantidad, $precio_unitario, $item_subtotal)";

                if (!mysqli_query($conn, $sql_detalle)) {
                    throw new Exception("Error al insertar detalle: " . mysqli_error($conn));
                }

                // Descontar stock solo si el producto no tiene no_descuento_inventario
                $check_desc = mysqli_query($conn, "SELECT COALESCE(no_descuento_inventario, 0) as ndi FROM productos WHERE id = $producto_id");
                $row_desc = $check_desc ? mysqli_fetch_assoc($check_desc) : null;
                if (!$row_desc || (int)$row_desc['ndi'] === 0) {
                    $sql_stock = "UPDATE productos SET stock = stock - $cantidad WHERE id = $producto_id";
                    mysqli_query($conn, $sql_stock);
                }
            }

            mysqli_commit($conn);

            sendResponse(true, "Venta registrada correctamente", [
                'id' => $venta_id,
                'folio' => $folio,
                'total' => $total,
                'pago' => $pago,
                'cambio' => $cambio
            ]);

        } catch (Exception $e) {
            mysqli_rollback($conn);
            sendResponse(false, $e->getMessage());
        }
        break;

    case 'getVenta':
        $id = isset($datapost['id']) ? (int)$datapost['id'] : 0;

        if ($id <= 0) {
            sendResponse(false, "ID de venta no valido");
        }

        $sql = "SELECT * FROM ventas WHERE id = $id";
        $result = mysqli_query($conn, $sql);

        if ($result && mysqli_num_rows($result) > 0) {
            $venta = mysqli_fetch_assoc($result);

            // Obtener detalle
            $sql_detalle = "SELECT * FROM venta_detalle WHERE venta_id = $id";
            $result_detalle = mysqli_query($conn, $sql_detalle);

            $items = [];
            while ($row = mysqli_fetch_assoc($result_detalle)) {
                $items[] = [
                    'id' => (int)$row['producto_id'],
                    'nombre' => $row['producto_nombre'],
                    'cantidad' => (float)$row['cantidad'],
                    'precio' => (float)$row['precio_unitario'],
                    'subtotal' => (float)$row['subtotal']
                ];
            }

            sendResponse(true, "Venta encontrada", [
                'id' => (int)$venta['id'],
                'folio' => $venta['folio'],
                'fecha' => $venta['fecha'],
                'subtotal' => (float)$venta['subtotal'],
                'total' => (float)$venta['total'],
                'pago' => (float)$venta['pago'],
                'cambio' => (float)$venta['cambio'],
                'metodo_pago' => $venta['metodo_pago'],
                'estado' => $venta['estado'],
                'notas' => $venta['notas'],
                'items' => $items
            ]);
        } else {
            sendResponse(false, "Venta no encontrada");
        }
        break;

    case 'getVentas':
        $limit = isset($datapost['limit']) ? (int)$datapost['limit'] : 50;
        $offset = isset($datapost['offset']) ? (int)$datapost['offset'] : 0;

        $sql = "SELECT * FROM ventas ORDER BY fecha DESC LIMIT $limit OFFSET $offset";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $ventas = [];
            while ($row = mysqli_fetch_assoc($result)) {
                $ventas[] = [
                    'id' => (int)$row['id'],
                    'folio' => $row['folio'],
                    'fecha' => $row['fecha'],
                    'total' => (float)$row['total'],
                    'metodo_pago' => $row['metodo_pago'],
                    'estado' => $row['estado']
                ];
            }
            sendResponse(true, "Ventas obtenidas", $ventas);
        } else {
            sendResponse(false, "Error al obtener ventas");
        }
        break;

    case 'getVentasDelDia':
        $sql = "SELECT v.*,
                (SELECT COUNT(*) FROM venta_detalle WHERE venta_id = v.id) as num_items
                FROM ventas v
                WHERE DATE(v.fecha) = CURDATE() AND v.estado = 'completada'
                ORDER BY v.fecha DESC";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $ventas = [];
            $total_dia = 0;
            $total_efectivo = 0;
            $total_tarjeta = 0;
            $total_transferencia = 0;

            while ($row = mysqli_fetch_assoc($result)) {
                $ventas[] = [
                    'id' => (int)$row['id'],
                    'folio' => $row['folio'],
                    'fecha' => $row['fecha'],
                    'total' => (float)$row['total'],
                    'metodo_pago' => $row['metodo_pago'],
                    'num_items' => (int)$row['num_items']
                ];

                $total_dia += (float)$row['total'];
                if ($row['metodo_pago'] === 'efectivo') $total_efectivo += (float)$row['total'];
                if ($row['metodo_pago'] === 'tarjeta') $total_tarjeta += (float)$row['total'];
                if ($row['metodo_pago'] === 'transferencia') $total_transferencia += (float)$row['total'];
            }

            sendResponse(true, "Ventas del dia", [
                'ventas' => $ventas,
                'resumen' => [
                    'total' => $total_dia,
                    'efectivo' => $total_efectivo,
                    'tarjeta' => $total_tarjeta,
                    'transferencia' => $total_transferencia,
                    'cantidad' => count($ventas)
                ]
            ]);
        } else {
            sendResponse(false, "Error al obtener ventas del dia");
        }
        break;

    case 'getVentasPorFecha':
        $fecha_inicio = isset($datapost['fecha_inicio']) ? $datapost['fecha_inicio'] : date('Y-m-d');
        $fecha_fin = isset($datapost['fecha_fin']) ? $datapost['fecha_fin'] : date('Y-m-d');

        $sql = "SELECT * FROM ventas
                WHERE DATE(fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin'
                AND estado = 'completada'
                ORDER BY fecha DESC";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $ventas = [];
            $total = 0;
            while ($row = mysqli_fetch_assoc($result)) {
                $ventas[] = [
                    'id' => (int)$row['id'],
                    'folio' => $row['folio'],
                    'fecha' => $row['fecha'],
                    'total' => (float)$row['total'],
                    'metodo_pago' => $row['metodo_pago']
                ];
                $total += (float)$row['total'];
            }
            sendResponse(true, "Ventas obtenidas", [
                'ventas' => $ventas,
                'total' => $total,
                'cantidad' => count($ventas)
            ]);
        } else {
            sendResponse(false, "Error al obtener ventas");
        }
        break;

    case 'cancelarVenta':
        $id = isset($datapost['id']) ? (int)$datapost['id'] : 0;
        $motivo = isset($datapost['motivo']) ? mysqli_real_escape_string($conn, $datapost['motivo']) : '';

        if ($id <= 0) {
            sendResponse(false, "ID de venta no valido");
        }

        mysqli_begin_transaction($conn);

        try {
            // Obtener detalle para restaurar stock
            $sql_detalle = "SELECT producto_id, cantidad FROM venta_detalle WHERE venta_id = $id";
            $result_detalle = mysqli_query($conn, $sql_detalle);

            while ($row = mysqli_fetch_assoc($result_detalle)) {
                $producto_id = (int)$row['producto_id'];
                $cantidad = (float)$row['cantidad'];
                mysqli_query($conn, "UPDATE productos SET stock = stock + $cantidad WHERE id = $producto_id");
            }

            // Cancelar venta
            $sql = "UPDATE ventas SET estado = 'cancelada', notas = CONCAT(IFNULL(notas,''), ' [CANCELADA: $motivo]') WHERE id = $id";

            if (!mysqli_query($conn, $sql)) {
                throw new Exception("Error al cancelar venta");
            }

            mysqli_commit($conn);
            sendResponse(true, "Venta cancelada correctamente");

        } catch (Exception $e) {
            mysqli_rollback($conn);
            sendResponse(false, $e->getMessage());
        }
        break;

    case 'getProductosPOS':
        $sql = "SELECT p.id, p.nombre, p.precio, p.unidad, p.stock, p.categoria_id, c.nombre as categoria,
                COALESCE(p.no_descuento_inventario, 0) as no_descuento_inventario
                FROM productos p
                LEFT JOIN categorias_productos c ON p.categoria_id = c.id
                WHERE p.activo = 1 AND COALESCE(p.no_venta, 0) = 0
                ORDER BY c.orden, p.nombre ASC";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $productos = [];
            while ($row = mysqli_fetch_assoc($result)) {
                $productos[] = [
                    'id' => (int)$row['id'],
                    'nombre' => $row['nombre'],
                    'precio' => (float)$row['precio'],
                    'unidad' => $row['unidad'],
                    'stock' => (float)$row['stock'],
                    'categoria_id' => (int)$row['categoria_id'],
                    'categoria' => $row['categoria'],
                    'no_descuento_inventario' => (int)$row['no_descuento_inventario']
                ];
            }
            sendResponse(true, "Productos obtenidos", $productos);
        } else {
            sendResponse(false, "Error al obtener productos");
        }
        break;

    // === PEDIDOS PAUSADOS ===
    case 'getPedidosPausados':
        $sql = "SELECT pp.*, c.nombre as cliente_nombre, c.telefono as cliente_telefono
                FROM pedidos_pausados pp
                INNER JOIN clientes c ON pp.cliente_id = c.id
                WHERE pp.estado = 'activo'
                ORDER BY pp.updated_at DESC";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $pedidos = [];
            while ($row = mysqli_fetch_assoc($result)) {
                $pedidos[] = [
                    'id' => (int)$row['id'],
                    'cliente_id' => (int)$row['cliente_id'],
                    'cliente_nombre' => $row['cliente_nombre'],
                    'cliente_telefono' => $row['cliente_telefono'],
                    'items' => json_decode($row['items'], true),
                    'total' => (float)$row['total'],
                    'notas' => $row['notas'],
                    'created_at' => $row['created_at'],
                    'updated_at' => $row['updated_at']
                ];
            }
            sendResponse(true, "Pedidos pausados obtenidos", $pedidos);
        } else {
            sendResponse(false, "Error al obtener pedidos pausados: " . mysqli_error($conn));
        }
        break;

    case 'getPedidoPausadoCliente':
        $cliente_id = isset($datapost['cliente_id']) ? (int)$datapost['cliente_id'] : 0;

        if ($cliente_id <= 0) {
            sendResponse(false, "ID de cliente no valido");
        }

        $sql = "SELECT pp.*, c.nombre as cliente_nombre
                FROM pedidos_pausados pp
                INNER JOIN clientes c ON pp.cliente_id = c.id
                WHERE pp.cliente_id = $cliente_id AND pp.estado = 'activo'";
        $result = mysqli_query($conn, $sql);

        if ($result && mysqli_num_rows($result) > 0) {
            $row = mysqli_fetch_assoc($result);
            sendResponse(true, "Pedido encontrado", [
                'id' => (int)$row['id'],
                'cliente_id' => (int)$row['cliente_id'],
                'cliente_nombre' => $row['cliente_nombre'],
                'items' => json_decode($row['items'], true),
                'total' => (float)$row['total'],
                'notas' => $row['notas']
            ]);
        } else {
            sendResponse(true, "Sin pedido pausado", null);
        }
        break;

    case 'pausarPedido':
        $cliente_id = isset($datapost['cliente_id']) ? (int)$datapost['cliente_id'] : 0;
        $items = isset($datapost['items']) ? $datapost['items'] : [];
        $notas = isset($datapost['notas']) ? mysqli_real_escape_string($conn, $datapost['notas']) : '';
        $reemplazar = isset($datapost['reemplazar']) ? $datapost['reemplazar'] : false;
        $usuario_id = isset($datapost['usuario_id']) ? (int)$datapost['usuario_id'] : null;
        $sucursal = isset($datapost['sucursal']) ? mysqli_real_escape_string($conn, $datapost['sucursal']) : '';
        $caja = isset($datapost['caja']) ? mysqli_real_escape_string($conn, $datapost['caja']) : '';

        if ($cliente_id <= 0) {
            sendResponse(false, "Debe seleccionar un cliente");
        }

        if (empty($items)) {
            sendResponse(false, "No hay productos para pausar");
        }

        // Calcular total
        $total = 0;
        foreach ($items as $item) {
            $total += (float)$item['cantidad'] * (float)$item['precio'];
        }

        $items_json = mysqli_real_escape_string($conn, json_encode($items));

        // Verificar si ya existe pedido activo para este cliente
        $sql_check = "SELECT id, items FROM pedidos_pausados WHERE cliente_id = $cliente_id AND estado = 'activo'";
        $result_check = mysqli_query($conn, $sql_check);

        if ($result_check && mysqli_num_rows($result_check) > 0) {
            if ($reemplazar) {
                // Reemplazar pedido existente (cuando se retomó y se vuelve a pausar)
                $sql = "UPDATE pedidos_pausados SET
                        items = '$items_json',
                        total = $total,
                        notas = '$notas',
                        updated_at = NOW()
                        WHERE cliente_id = $cliente_id AND estado = 'activo'";
            } else {
                // Acumular items al pedido existente
                $row = mysqli_fetch_assoc($result_check);
                $items_existentes = json_decode($row['items'], true) ?: [];

                // Combinar items
                foreach ($items as $nuevo_item) {
                    $encontrado = false;
                    foreach ($items_existentes as &$item_existente) {
                        if ($item_existente['id'] === $nuevo_item['id']) {
                            $item_existente['cantidad'] += $nuevo_item['cantidad'];
                            $encontrado = true;
                            break;
                        }
                    }
                    if (!$encontrado) {
                        $items_existentes[] = $nuevo_item;
                    }
                }

                // Recalcular total
                $total = 0;
                foreach ($items_existentes as $item) {
                    $total += (float)$item['cantidad'] * (float)$item['precio'];
                }

                $items_json = mysqli_real_escape_string($conn, json_encode($items_existentes));

                $sql = "UPDATE pedidos_pausados SET
                        items = '$items_json',
                        total = $total,
                        notas = '$notas',
                        updated_at = NOW()
                        WHERE cliente_id = $cliente_id AND estado = 'activo'";
            }
        } else {
            // Crear nuevo pedido
            $usuario_val = $usuario_id ? $usuario_id : 'NULL';
            $sql = "INSERT INTO pedidos_pausados (cliente_id, items, total, notas, usuario_id, sucursal, caja)
                    VALUES ($cliente_id, '$items_json', $total, '$notas', $usuario_val, '$sucursal', '$caja')";
        }

        if (mysqli_query($conn, $sql)) {
            sendResponse(true, "Pedido pausado correctamente", ['total' => $total]);
        } else {
            sendResponse(false, "Error al pausar pedido: " . mysqli_error($conn));
        }
        break;

    case 'retomarPedido':
        $pedido_id = isset($datapost['pedido_id']) ? (int)$datapost['pedido_id'] : 0;

        if ($pedido_id <= 0) {
            sendResponse(false, "ID de pedido no valido");
        }

        $sql = "SELECT pp.*, c.nombre as cliente_nombre
                FROM pedidos_pausados pp
                INNER JOIN clientes c ON pp.cliente_id = c.id
                WHERE pp.id = $pedido_id AND pp.estado = 'activo'";
        $result = mysqli_query($conn, $sql);

        if ($result && mysqli_num_rows($result) > 0) {
            $row = mysqli_fetch_assoc($result);
            sendResponse(true, "Pedido retomado", [
                'id' => (int)$row['id'],
                'cliente_id' => (int)$row['cliente_id'],
                'cliente_nombre' => $row['cliente_nombre'],
                'items' => json_decode($row['items'], true),
                'total' => (float)$row['total']
            ]);
        } else {
            sendResponse(false, "Pedido no encontrado");
        }
        break;

    case 'cobrarPedidoPausado':
        $pedido_id = isset($datapost['pedido_id']) ? (int)$datapost['pedido_id'] : 0;
        $items = isset($datapost['items']) ? $datapost['items'] : [];
        $pago = isset($datapost['pago']) ? (float)$datapost['pago'] : 0;
        $metodo_pago = isset($datapost['metodo_pago']) ? $datapost['metodo_pago'] : 'efectivo';
        $cobro_parcial = isset($datapost['cobro_parcial']) ? $datapost['cobro_parcial'] : false;
        $items_restantes = isset($datapost['items_restantes']) ? $datapost['items_restantes'] : [];
        $usuario_id = isset($datapost['usuario_id']) ? (int)$datapost['usuario_id'] : null;
        $sucursal = isset($datapost['sucursal']) ? mysqli_real_escape_string($conn, $datapost['sucursal']) : '';
        $caja = isset($datapost['caja']) ? mysqli_real_escape_string($conn, $datapost['caja']) : '';

        if ($pedido_id <= 0) {
            sendResponse(false, "ID de pedido no valido");
        }

        if (empty($items)) {
            sendResponse(false, "No hay items para cobrar");
        }

        // Obtener info del pedido
        $sql_pedido = "SELECT cliente_id FROM pedidos_pausados WHERE id = $pedido_id AND estado = 'activo'";
        $result_pedido = mysqli_query($conn, $sql_pedido);
        if (!$result_pedido || mysqli_num_rows($result_pedido) == 0) {
            sendResponse(false, "Pedido no encontrado");
        }
        $pedido_data = mysqli_fetch_assoc($result_pedido);
        $cliente_id = (int)$pedido_data['cliente_id'];

        // Calcular total de lo que se cobra
        $total = 0;
        foreach ($items as $item) {
            $total += (float)$item['cantidad'] * (float)$item['precio'];
        }
        $total = round($total, 2);
        $pago = round($pago, 2);
        $cambio = round($pago - $total, 2);

        if ($pago < $total && $metodo_pago === 'efectivo') {
            sendResponse(false, "El pago es menor al total");
        }

        // Generar folio
        $fecha_folio = date('Ymd');
        $sql_folio = "SELECT COUNT(*) as num FROM ventas WHERE DATE(fecha) = CURDATE()";
        $result_folio = mysqli_query($conn, $sql_folio);
        $row_folio = mysqli_fetch_assoc($result_folio);
        $num_venta = ($row_folio['num'] ?? 0) + 1;
        $folio = "V{$fecha_folio}-" . str_pad($num_venta, 4, '0', STR_PAD_LEFT);

        mysqli_begin_transaction($conn);

        try {
            // Insertar venta
            $usuario_val = $usuario_id ? $usuario_id : 'NULL';
            $sql = "INSERT INTO ventas (folio, subtotal, total, pago, cambio, metodo_pago, cliente_id, usuario_id, sucursal, caja, notas)
                    VALUES ('$folio', $total, $total, $pago, $cambio, '$metodo_pago', $cliente_id, $usuario_val, '$sucursal', '$caja', 'Cobro de pedido pausado')";

            if (!mysqli_query($conn, $sql)) {
                throw new Exception("Error al crear venta: " . mysqli_error($conn));
            }

            $venta_id = mysqli_insert_id($conn);

            // Insertar detalle
            foreach ($items as $item) {
                $producto_id = (int)$item['id'];
                $producto_nombre = mysqli_real_escape_string($conn, $item['nombre']);
                $cantidad = (float)$item['cantidad'];
                $precio_unitario = (float)$item['precio'];
                $item_subtotal = $cantidad * $precio_unitario;

                $sql_detalle = "INSERT INTO venta_detalle (venta_id, producto_id, producto_nombre, cantidad, precio_unitario, subtotal)
                                VALUES ($venta_id, $producto_id, '$producto_nombre', $cantidad, $precio_unitario, $item_subtotal)";

                if (!mysqli_query($conn, $sql_detalle)) {
                    throw new Exception("Error al insertar detalle: " . mysqli_error($conn));
                }

                // Descontar stock solo si el producto no tiene no_descuento_inventario
                $check_desc = mysqli_query($conn, "SELECT COALESCE(no_descuento_inventario, 0) as ndi FROM productos WHERE id = $producto_id");
                $row_desc = $check_desc ? mysqli_fetch_assoc($check_desc) : null;
                if (!$row_desc || (int)$row_desc['ndi'] === 0) {
                    $sql_stock = "UPDATE productos SET stock = stock - $cantidad WHERE id = $producto_id";
                    mysqli_query($conn, $sql_stock);
                }
            }

            // Manejar pedido pausado
            if ($cobro_parcial && !empty($items_restantes)) {
                // Actualizar con items restantes
                $total_restante = 0;
                foreach ($items_restantes as $item) {
                    $total_restante += (float)$item['cantidad'] * (float)$item['precio'];
                }
                $items_restantes_json = mysqli_real_escape_string($conn, json_encode($items_restantes));

                $sql_update = "UPDATE pedidos_pausados SET
                               items = '$items_restantes_json',
                               total = $total_restante,
                               updated_at = NOW()
                               WHERE id = $pedido_id";
                mysqli_query($conn, $sql_update);
            } else {
                // Marcar pedido como cobrado
                $sql_update_estado = "UPDATE pedidos_pausados SET estado = 'cobrado', updated_at = NOW() WHERE id = $pedido_id";
                mysqli_query($conn, $sql_update_estado);
            }

            mysqli_commit($conn);

            sendResponse(true, "Venta registrada correctamente", [
                'id' => $venta_id,
                'folio' => $folio,
                'total' => $total,
                'pago' => $pago,
                'cambio' => $cambio
            ]);

        } catch (Exception $e) {
            mysqli_rollback($conn);
            sendResponse(false, $e->getMessage());
        }
        break;

    case 'cancelarPedidoPausado':
        $pedido_id = isset($datapost['pedido_id']) ? (int)$datapost['pedido_id'] : 0;

        if ($pedido_id <= 0) {
            sendResponse(false, "ID de pedido no valido");
        }

        $sql = "UPDATE pedidos_pausados SET estado = 'cancelado', updated_at = NOW() WHERE id = $pedido_id AND estado = 'activo'";

        if (mysqli_query($conn, $sql)) {
            if (mysqli_affected_rows($conn) > 0) {
                sendResponse(true, "Pedido cancelado correctamente");
            } else {
                sendResponse(false, "Pedido no encontrado o ya fue procesado");
            }
        } else {
            sendResponse(false, "Error al cancelar pedido: " . mysqli_error($conn));
        }
        break;

    default:
        sendResponse(false, "Operacion no valida en Ventas");
        break;
}
