From 520d1acb1b544987ac3efe2a7dfa90af4a757df6 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Tue, 17 Feb 2026 02:42:46 +0000 Subject: [PATCH] Autosave: 20260217-024246 --- get_barcodes_by_product_and_sede.php | 59 ++++++++++----------- inventario_por_sede.php | 77 +++++++++++++--------------- panel_inventario.php | 45 +++++++++++----- 3 files changed, 94 insertions(+), 87 deletions(-) diff --git a/get_barcodes_by_product_and_sede.php b/get_barcodes_by_product_and_sede.php index f8a0d18..21cbf85 100644 --- a/get_barcodes_by_product_and_sede.php +++ b/get_barcodes_by_product_and_sede.php @@ -1,40 +1,33 @@ false, 'barcodes' => []]; +header('Content-Type: application/json'); -if (isset($_GET['product_id']) && isset($_GET['sede_id'])) { - $productId = (int)$_GET['product_id']; - $sedeId = (int)$_GET['sede_id']; +$productId = isset($_GET['product_id']) ? (int)$_GET['product_id'] : 0; +$sedeId = isset($_GET['sede_id']) ? (int)$_GET['sede_id'] : 0; - try { - $db = db(); - $stmt = $db->prepare(" - SELECT codigo_unico, estado - FROM unidades_inventario - WHERE producto_id = :product_id AND sede_id = :sede_id AND estado != 'Vendido' - ORDER BY id DESC - "); - $stmt->bindParam(':product_id', $productId, PDO::PARAM_INT); - $stmt->bindParam(':sede_id', $sedeId, PDO::PARAM_INT); - $stmt->execute(); - - // Usamos FETCH_ASSOC para obtener un array asociativo por cada fila - $barcodes = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $response['success'] = true; - $response['barcodes'] = $barcodes; - - } catch (PDOException $e) { - // En un entorno de producción, registrarías este error en lugar de mostrarlo - $response['message'] = 'Error de base de datos: ' . $e->getMessage(); - } -} else { - $response['message'] = 'ID de producto o sede no proporcionado.'; +if ($productId <= 0 || $sedeId <= 0) { + echo json_encode([]); + exit; } -echo json_encode($response); -?> \ No newline at end of file +try { + $db = db(); + $stmt = $db->prepare( + "SELECT codigo_unico, estado + FROM unidades_inventario + WHERE producto_id = :product_id AND sede_id = :sede_id" + ); + $stmt->bindParam(':product_id', $productId, PDO::PARAM_INT); + $stmt->bindParam(':sede_id', $sedeId, PDO::PARAM_INT); + $stmt->execute(); + + $results = $stmt->fetchAll(PDO::FETCH_ASSOC); + + echo json_encode($results); + +} catch (PDOException $e) { + http_response_code(500); + echo json_encode(['error' => 'Database error: ' . $e->getMessage()]); +} +?> diff --git a/inventario_por_sede.php b/inventario_por_sede.php index 019e708..9fc8018 100644 --- a/inventario_por_sede.php +++ b/inventario_por_sede.php @@ -16,10 +16,12 @@ if ($selected_sede_id) { // Se añade p.id para poder usarlo en el botón $stmt = $db->prepare(" - SELECT p.id, p.nombre, p.sku, ss.quantity + SELECT p.id, p.nombre, p.sku, COUNT(ui.id) as quantity FROM products p - JOIN stock_sedes ss ON p.id = ss.product_id - WHERE ss.sede_id = ? AND ss.quantity > 0 + JOIN unidades_inventario ui ON p.id = ui.producto_id + WHERE ui.sede_id = ? AND ui.estado = 'En Almacén' + GROUP BY p.id, p.nombre, p.sku + HAVING quantity > 0 ORDER BY p.nombre ASC "); $stmt->execute([$selected_sede_id]); @@ -64,8 +66,7 @@ if ($selected_sede_id) { Producto SKU - Cantidad en Stock - Acciones + Cantidad en Stock @@ -73,14 +74,14 @@ if ($selected_sede_id) { - - + 0): ?> + + + + + 0 + @@ -112,9 +113,7 @@ if ($selected_sede_id) { -