From 1c6ec71bf9f7529aa0f6c3628fc94d38eabe91b9 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Thu, 12 Feb 2026 03:10:11 +0000 Subject: [PATCH] Autosave: 20260212-031011 --- agregar_producto.php | 4 + assets/css/style.css | 36 +++ assets/pasted-20260202-195725-d26f89a4.png | Bin 0 -> 15944 bytes editar_producto.php | 5 + handle_agregar_producto.php | 5 +- handle_editar_producto.php | 5 +- imprimir_codigo.php | 82 ++++++ includes/footer.php | 20 ++ includes/header.php | 10 +- productos.php | 3 + registrar_entrada.php | 274 +++++++++++++++---- registrar_salida.php | 304 ++++++++++++++++----- 12 files changed, 620 insertions(+), 128 deletions(-) create mode 100644 assets/pasted-20260202-195725-d26f89a4.png create mode 100644 imprimir_codigo.php diff --git a/agregar_producto.php b/agregar_producto.php index 3434b23..012e92f 100644 --- a/agregar_producto.php +++ b/agregar_producto.php @@ -26,6 +26,10 @@ try { +
+ + +
diff --git a/assets/css/style.css b/assets/css/style.css index 4a3fd4a..2df147e 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -306,6 +306,7 @@ a:hover { flex-grow: 1; padding: 2rem; background-color: var(--color-fondo); + width: 100%; /* Ensure it takes full width */ } /* Forzar color de texto en el cuerpo de las tablas */ @@ -318,4 +319,39 @@ a:hover { color: #000 !important; } +/* --- Responsive / Mobile --- */ +@media (max-width: 768px) { + .d-flex { + flex-direction: column; + } + + .sidebar { + min-width: 100%; + max-width: 100%; + min-height: auto; + display: none; /* Hidden by default on mobile */ + } + + .sidebar.show { + display: flex; + } + + .main-content { + padding: 1rem; + } + + .mobile-nav { + display: flex !important; + justify-content: space-between; + align-items: center; + padding: 1rem; + background-color: #00754A; + color: white; + } +} + +.mobile-nav { + display: none; /* Hidden on desktop */ +} + diff --git a/assets/pasted-20260202-195725-d26f89a4.png b/assets/pasted-20260202-195725-d26f89a4.png new file mode 100644 index 0000000000000000000000000000000000000000..9b105bc0559f2d0d4c610c45ab0c2a62be520b02 GIT binary patch literal 15944 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 E2U+d7IsgCw literal 0 HcmV?d00001 diff --git a/editar_producto.php b/editar_producto.php index c4b8150..9e746e1 100644 --- a/editar_producto.php +++ b/editar_producto.php @@ -39,6 +39,11 @@ if (!$product) {
+
+ + +
+
diff --git a/handle_agregar_producto.php b/handle_agregar_producto.php index eec0634..5d57a08 100644 --- a/handle_agregar_producto.php +++ b/handle_agregar_producto.php @@ -11,6 +11,7 @@ require_once 'db/config.php'; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Sanitize and retrieve product data $nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_STRING); + $codigo_barras = filter_input(INPUT_POST, 'codigo_barras', FILTER_SANITIZE_STRING); $descripcion = filter_input(INPUT_POST, 'descripcion', FILTER_SANITIZE_STRING); $costo = filter_input(INPUT_POST, 'costo', FILTER_VALIDATE_FLOAT); $precio_venta = filter_input(INPUT_POST, 'precio_venta', FILTER_VALIDATE_FLOAT); @@ -26,9 +27,9 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { // 1. Insert product $sku = 'SKU-' . strtoupper(substr(uniqid(), -8)); - $sql_producto = "INSERT INTO productos (sku, nombre, descripcion, costo, precio_venta, created_at) VALUES (?, ?, ?, ?, ?, NOW())"; + $sql_producto = "INSERT INTO productos (sku, nombre, codigo_barras, descripcion, costo, precio_venta, created_at) VALUES (?, ?, ?, ?, ?, ?, NOW())"; $stmt_producto = $pdo->prepare($sql_producto); - $stmt_producto->execute([$sku, $nombre, $descripcion, $costo, $precio_venta]); + $stmt_producto->execute([$sku, $nombre, $codigo_barras, $descripcion, $costo, $precio_venta]); // Get the ID of the new product $producto_id = $pdo->lastInsertId(); diff --git a/handle_editar_producto.php b/handle_editar_producto.php index 99741d3..40ed563 100644 --- a/handle_editar_producto.php +++ b/handle_editar_producto.php @@ -10,6 +10,7 @@ require_once 'db/config.php'; if ($_SERVER["REQUEST_METHOD"] == "POST") { $product_id = isset($_POST['id']) ? (int)$_POST['id'] : 0; $nombre = trim($_POST['nombre']); + $codigo_barras = trim($_POST['codigo_barras']); $descripcion = trim($_POST['descripcion']); $costo = filter_input(INPUT_POST, 'costo', FILTER_VALIDATE_FLOAT); $precio_venta = filter_input(INPUT_POST, 'precio_venta', FILTER_VALIDATE_FLOAT); @@ -17,10 +18,10 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($product_id > 0 && !empty($nombre) && $costo !== false && $precio_venta !== false) { try { $pdo = db(); - $sql = "UPDATE productos SET nombre = ?, descripcion = ?, costo = ?, precio_venta = ? WHERE id = ?"; + $sql = "UPDATE productos SET nombre = ?, codigo_barras = ?, descripcion = ?, costo = ?, precio_venta = ? WHERE id = ?"; $stmt = $pdo->prepare($sql); - if ($stmt->execute([$nombre, $descripcion, $costo, $precio_venta, $product_id])) { + if ($stmt->execute([$nombre, $codigo_barras, $descripcion, $costo, $precio_venta, $product_id])) { $_SESSION['success_message'] = "Producto actualizado correctamente."; } else { $_SESSION['error_message'] = "Error al actualizar el producto."; diff --git a/imprimir_codigo.php b/imprimir_codigo.php new file mode 100644 index 0000000..cabb44d --- /dev/null +++ b/imprimir_codigo.php @@ -0,0 +1,82 @@ +prepare("SELECT * FROM productos WHERE id = ?"); +$stmt->execute([$product_id]); +$product = $stmt->fetch(PDO::FETCH_ASSOC); + +if (!$product) { + die("Producto no encontrado."); +} + +$barcodeValue = $product['codigo_barras'] ? $product['codigo_barras'] : $product['sku']; +?> + + + + + + Imprimir Código de Barras - <?php echo htmlspecialchars($product['nombre']); ?> + + + + + +
+ + +
+
+ +
+
+ +
+ + + + diff --git a/includes/footer.php b/includes/footer.php index 9ad4207..b35200e 100644 --- a/includes/footer.php +++ b/includes/footer.php @@ -6,5 +6,25 @@ + + \ No newline at end of file diff --git a/includes/header.php b/includes/header.php index 0b5001c..06292ce 100644 --- a/includes/header.php +++ b/includes/header.php @@ -29,8 +29,16 @@ if (!is_logged_in()) {
+ +
+

Inventario

+ +
+ -