diff --git a/assets/css/style.css b/assets/css/style.css index d62ae85..790157d 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -86,6 +86,7 @@ body { @media (max-width: 992px) { .sidebar { transform: translateX(-100%); + z-index: 1020; /* Ensure sidebar is on top */ } .sidebar.active { @@ -95,6 +96,7 @@ body { .content { margin-left: 0; width: 100%; + transition: filter 0.3s ease; /* Smooth transition for the filter */ } .sidebar-toggle { @@ -102,18 +104,21 @@ body { } body.sidebar-active .content { - margin-left: 260px; + /* Don't push content, but apply a visual effect */ + filter: blur(3px) brightness(0.6); + pointer-events: none; /* Prevent interaction with content when sidebar is open */ } - .sidebar .nav { - display: flex; - overflow-x: auto; - white-space: nowrap; - -webkit-overflow-scrolling: touch; /* Smooth scrolling on iOS */ - } - - .sidebar .nav-item { - flex-basis: auto; /* Allow items to take their natural width */ + /* The body itself gets an overlay to darken it */ + body.sidebar-active::before { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.4); + z-index: 1010; /* Below sidebar, above content */ } } diff --git a/assets/uploads/vouchers/698b898f4bfe3-WhatsApp Image 2026-02-10 at 11.00.23 AM.jpeg b/assets/uploads/vouchers/698b898f4bfe3-WhatsApp Image 2026-02-10 at 11.00.23 AM.jpeg deleted file mode 100644 index ceaba95..0000000 Binary files a/assets/uploads/vouchers/698b898f4bfe3-WhatsApp Image 2026-02-10 at 11.00.23 AM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb2a066015-WhatsApp Image 2026-02-10 at 4.38.05 PM.jpeg b/assets/uploads/vouchers/698cb2a066015-WhatsApp Image 2026-02-10 at 4.38.05 PM.jpeg deleted file mode 100644 index 8eb4e7f..0000000 Binary files a/assets/uploads/vouchers/698cb2a066015-WhatsApp Image 2026-02-10 at 4.38.05 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb456735bd-WhatsApp Image 2026-02-10 at 4.01.05 PM.jpeg b/assets/uploads/vouchers/698cb456735bd-WhatsApp Image 2026-02-10 at 4.01.05 PM.jpeg deleted file mode 100644 index ff8c2dc..0000000 Binary files a/assets/uploads/vouchers/698cb456735bd-WhatsApp Image 2026-02-10 at 4.01.05 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb4e121011-WhatsApp Image 2026-02-11 at 10.06.33 AM.jpeg b/assets/uploads/vouchers/698cb4e121011-WhatsApp Image 2026-02-11 at 10.06.33 AM.jpeg deleted file mode 100644 index 5ff75e0..0000000 Binary files a/assets/uploads/vouchers/698cb4e121011-WhatsApp Image 2026-02-11 at 10.06.33 AM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb5528cb8d-WhatsApp Image 2026-02-11 at 11.58.40 AM.jpeg b/assets/uploads/vouchers/698cb5528cb8d-WhatsApp Image 2026-02-11 at 11.58.40 AM.jpeg deleted file mode 100644 index a4cca2f..0000000 Binary files a/assets/uploads/vouchers/698cb5528cb8d-WhatsApp Image 2026-02-11 at 11.58.40 AM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb5a6eb39f-WhatsApp Image 2026-02-10 at 5.59.30 PM.jpeg b/assets/uploads/vouchers/698cb5a6eb39f-WhatsApp Image 2026-02-10 at 5.59.30 PM.jpeg deleted file mode 100644 index f5b03e5..0000000 Binary files a/assets/uploads/vouchers/698cb5a6eb39f-WhatsApp Image 2026-02-10 at 5.59.30 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb6310747f-WhatsApp Image 2026-02-10 at 6.22.07 PM.jpeg b/assets/uploads/vouchers/698cb6310747f-WhatsApp Image 2026-02-10 at 6.22.07 PM.jpeg deleted file mode 100644 index a25a049..0000000 Binary files a/assets/uploads/vouchers/698cb6310747f-WhatsApp Image 2026-02-10 at 6.22.07 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb6ba3240b-WhatsApp Image 2026-02-10 at 3.57.28 PM.jpeg b/assets/uploads/vouchers/698cb6ba3240b-WhatsApp Image 2026-02-10 at 3.57.28 PM.jpeg deleted file mode 100644 index 8b84ace..0000000 Binary files a/assets/uploads/vouchers/698cb6ba3240b-WhatsApp Image 2026-02-10 at 3.57.28 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb74ea29db-WhatsApp Image 2026-02-10 at 2.22.13 PM.jpeg b/assets/uploads/vouchers/698cb74ea29db-WhatsApp Image 2026-02-10 at 2.22.13 PM.jpeg deleted file mode 100644 index 8647d40..0000000 Binary files a/assets/uploads/vouchers/698cb74ea29db-WhatsApp Image 2026-02-10 at 2.22.13 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb800669c2-WhatsApp Image 2026-02-10 at 10.57.51 AM.jpeg b/assets/uploads/vouchers/698cb800669c2-WhatsApp Image 2026-02-10 at 10.57.51 AM.jpeg deleted file mode 100644 index 3e48ef7..0000000 Binary files a/assets/uploads/vouchers/698cb800669c2-WhatsApp Image 2026-02-10 at 10.57.51 AM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cb9add60e2-WhatsApp Image 2026-02-11 at 12.13.15 PM.jpeg b/assets/uploads/vouchers/698cb9add60e2-WhatsApp Image 2026-02-11 at 12.13.15 PM.jpeg deleted file mode 100644 index cde2b9c..0000000 Binary files a/assets/uploads/vouchers/698cb9add60e2-WhatsApp Image 2026-02-11 at 12.13.15 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cc845baa22-WhatsApp Image 2026-02-11 at 1.18.17 PM.jpeg b/assets/uploads/vouchers/698cc845baa22-WhatsApp Image 2026-02-11 at 1.18.17 PM.jpeg deleted file mode 100644 index 7899cc0..0000000 Binary files a/assets/uploads/vouchers/698cc845baa22-WhatsApp Image 2026-02-11 at 1.18.17 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698ccc706e5c4-WhatsApp Image 2026-02-11 at 1.36.17 PM.jpeg b/assets/uploads/vouchers/698ccc706e5c4-WhatsApp Image 2026-02-11 at 1.36.17 PM.jpeg deleted file mode 100644 index 132e414..0000000 Binary files a/assets/uploads/vouchers/698ccc706e5c4-WhatsApp Image 2026-02-11 at 1.36.17 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cce8b6f423-WhatsApp Image 2026-02-07 at 5.06.42 PM.jpeg b/assets/uploads/vouchers/698cce8b6f423-WhatsApp Image 2026-02-07 at 5.06.42 PM.jpeg deleted file mode 100644 index 5002a34..0000000 Binary files a/assets/uploads/vouchers/698cce8b6f423-WhatsApp Image 2026-02-07 at 5.06.42 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698cdb5b826fa-WhatsApp Image 2026-02-11 at 2.38.51 PM.jpeg b/assets/uploads/vouchers/698cdb5b826fa-WhatsApp Image 2026-02-11 at 2.38.51 PM.jpeg deleted file mode 100644 index 1a5f1e9..0000000 Binary files a/assets/uploads/vouchers/698cdb5b826fa-WhatsApp Image 2026-02-11 at 2.38.51 PM.jpeg and /dev/null differ diff --git a/assets/uploads/vouchers/698e14248ef39-Screenshot_1.png b/assets/uploads/vouchers/698e14248ef39-Screenshot_1.png new file mode 100644 index 0000000..75b08ad Binary files /dev/null and b/assets/uploads/vouchers/698e14248ef39-Screenshot_1.png differ diff --git a/assets/uploads/vouchers/698e1e9c38f85-249.png b/assets/uploads/vouchers/698e1e9c38f85-249.png new file mode 100644 index 0000000..bcbf0e1 Binary files /dev/null and b/assets/uploads/vouchers/698e1e9c38f85-249.png differ diff --git a/assets/uploads/vouchers/698e1edfbe627-086.png b/assets/uploads/vouchers/698e1edfbe627-086.png new file mode 100644 index 0000000..7b28d34 Binary files /dev/null and b/assets/uploads/vouchers/698e1edfbe627-086.png differ diff --git a/assets/uploads/vouchers/698e1f028c75e-0125.png b/assets/uploads/vouchers/698e1f028c75e-0125.png new file mode 100644 index 0000000..e6da601 Binary files /dev/null and b/assets/uploads/vouchers/698e1f028c75e-0125.png differ diff --git a/assets/uploads/vouchers/698e1fc9d9fee-862.png b/assets/uploads/vouchers/698e1fc9d9fee-862.png new file mode 100644 index 0000000..0c8d109 Binary files /dev/null and b/assets/uploads/vouchers/698e1fc9d9fee-862.png differ diff --git a/assets/uploads/vouchers/698e1ff94eafc-137.png b/assets/uploads/vouchers/698e1ff94eafc-137.png new file mode 100644 index 0000000..36f9275 Binary files /dev/null and b/assets/uploads/vouchers/698e1ff94eafc-137.png differ diff --git a/assets/uploads/vouchers/698e226b697a6-203.png b/assets/uploads/vouchers/698e226b697a6-203.png new file mode 100644 index 0000000..538bcfc Binary files /dev/null and b/assets/uploads/vouchers/698e226b697a6-203.png differ diff --git a/assets/uploads/vouchers/698e229c3e93c-366.png b/assets/uploads/vouchers/698e229c3e93c-366.png new file mode 100644 index 0000000..138d62c Binary files /dev/null and b/assets/uploads/vouchers/698e229c3e93c-366.png differ diff --git a/assets/uploads/vouchers/698e22bde0511-963.png b/assets/uploads/vouchers/698e22bde0511-963.png new file mode 100644 index 0000000..807f268 Binary files /dev/null and b/assets/uploads/vouchers/698e22bde0511-963.png differ diff --git a/assets/uploads/vouchers/698e24fe5473c-913.png b/assets/uploads/vouchers/698e24fe5473c-913.png new file mode 100644 index 0000000..7319f7d Binary files /dev/null and b/assets/uploads/vouchers/698e24fe5473c-913.png differ diff --git a/assets/uploads/vouchers/698e252edb996-811.png b/assets/uploads/vouchers/698e252edb996-811.png new file mode 100644 index 0000000..c3938e5 Binary files /dev/null and b/assets/uploads/vouchers/698e252edb996-811.png differ diff --git a/assets/uploads/vouchers/698e258a009ff-854.png b/assets/uploads/vouchers/698e258a009ff-854.png new file mode 100644 index 0000000..c0700d8 Binary files /dev/null and b/assets/uploads/vouchers/698e258a009ff-854.png differ diff --git a/assets/uploads/vouchers/698e26beeced9-WhatsApp Image 2026-02-12 at 2.11.25 PM.jpeg b/assets/uploads/vouchers/698e26beeced9-WhatsApp Image 2026-02-12 at 2.11.25 PM.jpeg new file mode 100644 index 0000000..9bf53f1 Binary files /dev/null and b/assets/uploads/vouchers/698e26beeced9-WhatsApp Image 2026-02-12 at 2.11.25 PM.jpeg differ diff --git a/assets/uploads/vouchers/698e27b78e4f4-WhatsApp Image 2026-02-12 at 2.17.28 PM.jpeg b/assets/uploads/vouchers/698e27b78e4f4-WhatsApp Image 2026-02-12 at 2.17.28 PM.jpeg new file mode 100644 index 0000000..7a1adb4 Binary files /dev/null and b/assets/uploads/vouchers/698e27b78e4f4-WhatsApp Image 2026-02-12 at 2.17.28 PM.jpeg differ diff --git a/assets/uploads/vouchers/698e28bb4950c-WhatsApp Image 2026-02-12 at 2.21.50 PM (1).jpeg b/assets/uploads/vouchers/698e28bb4950c-WhatsApp Image 2026-02-12 at 2.21.50 PM (1).jpeg new file mode 100644 index 0000000..270c757 Binary files /dev/null and b/assets/uploads/vouchers/698e28bb4950c-WhatsApp Image 2026-02-12 at 2.21.50 PM (1).jpeg differ diff --git a/assets/uploads/vouchers/698e293b2b560-300.png b/assets/uploads/vouchers/698e293b2b560-300.png new file mode 100644 index 0000000..6217741 Binary files /dev/null and b/assets/uploads/vouchers/698e293b2b560-300.png differ diff --git a/assets/uploads/vouchers/698e2966812dd-696.png b/assets/uploads/vouchers/698e2966812dd-696.png new file mode 100644 index 0000000..903274d Binary files /dev/null and b/assets/uploads/vouchers/698e2966812dd-696.png differ diff --git a/assets/uploads/vouchers/698e2993669be-615.png b/assets/uploads/vouchers/698e2993669be-615.png new file mode 100644 index 0000000..b2d9d80 Binary files /dev/null and b/assets/uploads/vouchers/698e2993669be-615.png differ diff --git a/assets/uploads/vouchers/698e29b2b30c8-754.png b/assets/uploads/vouchers/698e29b2b30c8-754.png new file mode 100644 index 0000000..b44c058 Binary files /dev/null and b/assets/uploads/vouchers/698e29b2b30c8-754.png differ diff --git a/assets/uploads/vouchers/698e2a14bcd45-WhatsApp Image 2026-02-12 at 2.27.31 PM (1).jpeg b/assets/uploads/vouchers/698e2a14bcd45-WhatsApp Image 2026-02-12 at 2.27.31 PM (1).jpeg new file mode 100644 index 0000000..5ed28da Binary files /dev/null and b/assets/uploads/vouchers/698e2a14bcd45-WhatsApp Image 2026-02-12 at 2.27.31 PM (1).jpeg differ diff --git a/generar_etiquetas.php b/generar_etiquetas.php index 101403c..94be78a 100644 --- a/generar_etiquetas.php +++ b/generar_etiquetas.php @@ -117,11 +117,22 @@ if (!empty($generated_codes)) {

Códigos Generados

+ +
diff --git a/imprimir_etiquetas.php b/imprimir_etiquetas.php index f5d5ea0..c72f9f4 100644 --- a/imprimir_etiquetas.php +++ b/imprimir_etiquetas.php @@ -1,99 +1,38 @@ - - - - - Imprimir Etiquetas - - - - +// 2. Create a file pointer connected to the output stream +$output = fopen('php://output', 'w'); -
-
-

Vista Previa de Impresión

-

Ajusta el tamaño y la escala en el diálogo de impresión de tu navegador si es necesario.

- -
+// 3. Add a UTF-8 BOM to ensure Excel opens it correctly +fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF)); - -
- -
-
- Barcode for <?php echo htmlspecialchars($code); ?> -
-
- -
-
- -
- -
- No se han proporcionado códigos. Por favor, vuelve al generador para crear nuevas etiquetas. -
- -
+// 4. Write the header row +$header = ['Nombre del producto', 'Código único', 'Código de barra (usar fuente)']; +fputcsv($output, $header, ';'); - - \ No newline at end of file +// 5. Write the data rows +foreach ($codes as $code) { + $row = [ + $product_name, + $code, + $code // The same code, to be formatted as a barcode in Excel + ]; + fputcsv($output, $row, ';'); +} + +// 6. Close the file pointer +fclose($output); + +exit; \ No newline at end of file diff --git a/layout_footer.php b/layout_footer.php index 6d84298..5c5120a 100644 --- a/layout_footer.php +++ b/layout_footer.php @@ -31,13 +31,36 @@ const sidebarToggle = document.querySelector('.sidebar-toggle'); const sidebar = document.querySelector('.sidebar'); const body = document.querySelector('body'); + const content = document.querySelector('.content'); + + function closeSidebar() { + if (sidebar.classList.contains('active')) { + sidebar.classList.remove('active'); + body.classList.remove('sidebar-active'); + } + } if (sidebarToggle && sidebar) { - sidebarToggle.addEventListener('click', function() { + sidebarToggle.addEventListener('click', function(e) { + e.stopPropagation(); // Prevent click from bubbling to body sidebar.classList.toggle('active'); body.classList.toggle('sidebar-active'); }); } + + // Close sidebar if user clicks on the content area + if (content) { + content.addEventListener('click', function() { + closeSidebar(); + }); + } + + // Close sidebar on body click if the click is outside the sidebar + body.addEventListener('click', function(e) { + if (body.classList.contains('sidebar-active') && !sidebar.contains(e.target)) { + closeSidebar(); + } + }); }); diff --git a/registrar_entrada_api.php b/registrar_entrada_api.php new file mode 100644 index 0000000..747b824 --- /dev/null +++ b/registrar_entrada_api.php @@ -0,0 +1,83 @@ + false, 'message' => 'Solicitud inválida.']; + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $codigo_unico = filter_input(INPUT_POST, 'codigo_unico', FILTER_SANITIZE_STRING); + $sede_id = filter_input(INPUT_POST, 'sede_id', FILTER_VALIDATE_INT); + $movement_date = date('Y-m-d H:i:s'); + + if ($codigo_unico && $sede_id) { + try { + $pdo = db(); + $pdo->beginTransaction(); + + // 1. Buscar la unidad de inventario + $stmt_unidad = $pdo->prepare("SELECT * FROM unidades_inventario WHERE codigo_unico = :codigo_unico"); + $stmt_unidad->execute(['codigo_unico' => $codigo_unico]); + $unidad = $stmt_unidad->fetch(PDO::FETCH_ASSOC); + + if (!$unidad) { + throw new Exception("El código de unidad '$codigo_unico' no existe."); + } + + if ($unidad['estado'] === 'En Almacén') { + throw new Exception("Esta unidad ya se encuentra en el almacén."); + } + + if ($unidad['estado'] === 'Vendido') { + throw new Exception("Esta unidad ya fue vendida y no puede ser ingresada nuevamente."); + } + + // 2. Actualizar el estado de la unidad + $update_unidad_stmt = $pdo->prepare("UPDATE unidades_inventario SET estado = 'En Almacén', fecha_ingreso = :fecha_ingreso WHERE id = :id"); + $update_unidad_stmt->execute(['fecha_ingreso' => $movement_date, 'id' => $unidad['id']]); + + $product_id = $unidad['producto_id']; + $quantity = 1; + + // 3. Actualizar o insertar en stock_sedes + $stmt_stock = $pdo->prepare("SELECT * FROM stock_sedes WHERE product_id = :product_id AND sede_id = :sede_id"); + $stmt_stock->execute(['product_id' => $product_id, 'sede_id' => $sede_id]); + $existing_stock = $stmt_stock->fetch(); + + if ($existing_stock) { + $new_quantity = $existing_stock['quantity'] + $quantity; + $update_stock_stmt = $pdo->prepare("UPDATE stock_sedes SET quantity = :quantity WHERE id = :id"); + $update_stock_stmt->execute(['quantity' => $new_quantity, 'id' => $existing_stock['id']]); + } else { + $insert_stock_stmt = $pdo->prepare("INSERT INTO stock_sedes (product_id, sede_id, quantity) VALUES (:product_id, :sede_id, :quantity)"); + $insert_stock_stmt->execute(['product_id' => $product_id, 'sede_id' => $sede_id, 'quantity' => $quantity]); + } + + // 4. Insertar en el historial de movimientos + $history_stmt = $pdo->prepare( + "INSERT INTO stock_movements (product_id, sede_id, quantity, type, movement_date) + VALUES (:product_id, :sede_id, :quantity, 'entrada', :movement_date)" + ); + $history_stmt->execute([ + 'product_id' => $product_id, + 'sede_id' => $sede_id, + 'quantity' => $quantity, + 'movement_date' => $movement_date + ]); + + $pdo->commit(); + $response = ['success' => true, 'message' => "Unidad '$codigo_unico' registrada correctamente."]; + + } catch (Exception $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + $response = ['success' => false, 'message' => $e->getMessage()]; + } + } else { + $response['message'] = 'Por favor, proporcione un código de unidad y una sede.'; + } +} + +echo json_encode($response); +?> \ No newline at end of file diff --git a/registro_entrada.php b/registro_entrada.php index d5c79c4..18e71d8 100644 --- a/registro_entrada.php +++ b/registro_entrada.php @@ -3,81 +3,7 @@ $pageTitle = "Registro de Entrada por Unidad"; require_once 'layout_header.php'; require_once 'db/config.php'; -$message = ''; -$error = ''; - -// Lógica para manejar el envío del formulario -if ($_SERVER["REQUEST_METHOD"] == "POST") { - $codigo_unico = filter_input(INPUT_POST, 'codigo_unico', FILTER_SANITIZE_STRING); - $sede_id = filter_input(INPUT_POST, 'sede_id', FILTER_VALIDATE_INT); - $movement_date = date('Y-m-d H:i:s'); - - if ($codigo_unico && $sede_id) { - try { - $pdo = db(); - $pdo->beginTransaction(); - - // 1. Buscar la unidad de inventario - $stmt_unidad = $pdo->prepare("SELECT * FROM unidades_inventario WHERE codigo_unico = :codigo_unico"); - $stmt_unidad->execute(['codigo_unico' => $codigo_unico]); - $unidad = $stmt_unidad->fetch(PDO::FETCH_ASSOC); - - if (!$unidad) { - throw new Exception("El código de unidad '$codigo_unico' no existe."); - } - - if ($unidad['estado'] === 'En Almacén') { - throw new Exception("Esta unidad ya se encuentra en el almacén."); - } - - if ($unidad['estado'] === 'Vendido') { - throw new Exception("Esta unidad ya fue vendida y no puede ser ingresada nuevamente."); - } - - // 2. Actualizar el estado de la unidad - $update_unidad_stmt = $pdo->prepare("UPDATE unidades_inventario SET estado = 'En Almacén', fecha_ingreso = :fecha_ingreso WHERE id = :id"); - $update_unidad_stmt->execute(['fecha_ingreso' => $movement_date, 'id' => $unidad['id']]); - - $product_id = $unidad['producto_id']; - $quantity = 1; // Siempre es 1 para el inventario serializado - - // 3. Actualizar o insertar en stock_sedes (reutilizando lógica anterior) - $stmt_stock = $pdo->prepare("SELECT * FROM stock_sedes WHERE product_id = :product_id AND sede_id = :sede_id"); - $stmt_stock->execute(['product_id' => $product_id, 'sede_id' => $sede_id]); - $existing_stock = $stmt_stock->fetch(); - - if ($existing_stock) { - $new_quantity = $existing_stock['quantity'] + $quantity; - $update_stock_stmt = $pdo->prepare("UPDATE stock_sedes SET quantity = :quantity WHERE id = :id"); - $update_stock_stmt->execute(['quantity' => $new_quantity, 'id' => $existing_stock['id']]); - } else { - $insert_stock_stmt = $pdo->prepare("INSERT INTO stock_sedes (product_id, sede_id, quantity) VALUES (:product_id, :sede_id, :quantity)"); - $insert_stock_stmt->execute(['product_id' => $product_id, 'sede_id' => $sede_id, 'quantity' => $quantity]); - } - - // 4. Insertar en el historial de movimientos - $history_stmt = $pdo->prepare( - "INSERT INTO stock_movements (product_id, sede_id, quantity, type, movement_date) - VALUES (:product_id, :sede_id, :quantity, 'entrada', :movement_date)" - ); - $history_stmt->execute([ - 'product_id' => $product_id, - 'sede_id' => $sede_id, - 'quantity' => $quantity, - 'movement_date' => $movement_date - ]); - - $pdo->commit(); - $message = "Unidad '$codigo_unico' registrada en el inventario correctamente."; - - } catch (Exception $e) { - $pdo->rollBack(); - $error = "Error: " . $e->getMessage(); - } - } else { - $error = "Por favor, escanee un código y seleccione una sede."; - } -} +$error_page_load = ''; // Obtener sedes para el dropdown $sedes = []; @@ -86,7 +12,7 @@ try { $sedes_stmt = $pdo->query("SELECT id, nombre FROM sedes ORDER BY nombre ASC"); $sedes = $sedes_stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { - $error = "Error al cargar las sedes: " . $e->getMessage(); + $error_page_load = "Error al cargar las sedes: " . $e->getMessage(); } ?> @@ -94,11 +20,13 @@ try {
- - - - - + +
+ + +
@@ -106,17 +34,7 @@ try { Registro de Entrada por Unidad
-
-
- -
- - -
-
- +
- +
+
+ +
+ + +
+
+
@@ -136,77 +70,194 @@ try {
- -