import sqlite3
from colorama import init, Fore
# Inicializar colorama para el uso de colores en terminal
init(autoreset=True)
# ===================== CONEXIÓN Y CONFIGURACIÓN =====================
# Establecer conexión con la base de datos (se crea si no existe)
conn = [Link]('[Link]')
cursor = [Link]()
# Crear la tabla de productos si no existe
[Link]('''
CREATE TABLE IF NOT EXISTS productos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
descripcion TEXT,
cantidad INTEGER NOT NULL,
precio REAL NOT NULL,
categoria TEXT
)
''')
[Link]()
# ===================== FUNCIONES PRINCIPALES =====================
def registrar_producto():
"""
Permite al usuario ingresar un nuevo producto en la base de datos.
"""
print([Link] + "\n--- Registrar Nuevo Producto ---")
nombre = input("Nombre: ")
descripcion = input("Descripción: ")
cantidad = int(input("Cantidad: "))
precio = float(input("Precio: "))
categoria = input("Categoría: ")
[Link]('''
INSERT INTO productos (nombre, descripcion, cantidad, precio, categoria)
VALUES (?, ?, ?, ?, ?)
''', (nombre, descripcion, cantidad, precio, categoria))
[Link]()
print([Link] + "✅ Producto registrado con éxito.")
def visualizar_productos():
"""
Muestra todos los productos actualmente registrados.
"""
print([Link] + "\n--- Lista de Productos ---")
[Link]("SELECT * FROM productos")
productos = [Link]()
if productos:
for p in productos:
print(f"{[Link]}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print([Link] + "No hay productos registrados.")
def actualizar_producto():
"""
Permite actualizar los datos de un producto existente según su ID.
"""
print([Link] + "\n--- Actualizar Producto ---")
id_ = input("ID del producto a actualizar: ")
[Link]("SELECT * FROM productos WHERE id = ?", (id_,))
producto = [Link]()
if producto:
print("Dejar en blanco para mantener el valor actual.")
nombre = input(f"Nuevo nombre ({producto[1]}): ") or producto[1]
descripcion = input(f"Nueva descripción ({producto[2]}): ") or producto[2]
cantidad = input(f"Nueva cantidad ({producto[3]}): ")
cantidad = int(cantidad) if cantidad else producto[3]
precio = input(f"Nuevo precio ({producto[4]}): ")
precio = float(precio) if precio else producto[4]
categoria = input(f"Nueva categoría ({producto[5]}): ") or producto[5]
[Link]('''
UPDATE productos
SET nombre = ?, descripcion = ?, cantidad = ?, precio = ?, categoria
= ?
WHERE id = ?
''', (nombre, descripcion, cantidad, precio, categoria, id_))
[Link]()
print([Link] + "✅ Producto actualizado con éxito.")
else:
print([Link] + "Producto no encontrado.")
def eliminar_producto():
"""
Elimina un producto de la base de datos por su ID.
"""
print([Link] + "\n--- Eliminar Producto ---")
id_ = input("ID del producto a eliminar: ")
[Link]("SELECT * FROM productos WHERE id = ?", (id_,))
if [Link]():
[Link]("DELETE FROM productos WHERE id = ?", (id_,))
[Link]()
print([Link] + "✅ Producto eliminado.")
else:
print([Link] + "Producto no encontrado.")
def buscar_producto():
"""
Permite buscar productos por ID, nombre o categoría.
"""
print([Link] + "\n--- Buscar Producto ---")
print("1. Buscar por ID")
print("2. Buscar por Nombre")
print("3. Buscar por Categoría")
opcion = input("Opción: ")
if opcion == '1':
id_ = input("ID del producto: ")
[Link]("SELECT * FROM productos WHERE id = ?", (id_,))
elif opcion == '2':
nombre = input("Nombre del producto: ")
[Link]("SELECT * FROM productos WHERE nombre LIKE ?", ('%' + nombre
+ '%',))
elif opcion == '3':
categoria = input("Categoría del producto: ")
[Link]("SELECT * FROM productos WHERE categoria LIKE ?", ('%' +
categoria + '%',))
else:
print([Link] + "Opción inválida.")
return
resultados = [Link]()
if resultados:
for p in resultados:
print(f"{[Link]}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print([Link] + "No se encontraron productos.")
def reporte_bajo_stock():
"""
Genera un reporte de productos con cantidad igual o inferior a un límite
definido.
"""
print([Link] + "\n--- Reporte de Productos con Bajo Stock ---")
limite = int(input("Cantidad límite: "))
[Link]("SELECT * FROM productos WHERE cantidad <= ?", (limite,))
productos = [Link]()
if productos:
for p in productos:
print(f"{[Link]}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print([Link] + "No hay productos con bajo stock.")
# ===================== MENÚ PRINCIPAL =====================
def menu():
"""
Muestra el menú principal y dirige al usuario según la opción seleccionada.
"""
while True:
print([Link] + "\n====== MENÚ DE INVENTARIO ======")
print("1. Registrar producto")
print("2. Visualizar productos")
print("3. Actualizar producto")
print("4. Eliminar producto")
print("5. Buscar producto")
print("6. Reporte bajo stock")
print("7. Salir")
opcion = input("Seleccione una opción: ")
if opcion == '1':
registrar_producto()
elif opcion == '2':
visualizar_productos()
elif opcion == '3':
actualizar_producto()
elif opcion == '4':
eliminar_producto()
elif opcion == '5':
buscar_producto()
elif opcion == '6':
reporte_bajo_stock()
elif opcion == '7':
print([Link] + "Gracias por usar el sistema. ¡Hasta luego!")
break
else:
print([Link] + "Opción inválida. Intente nuevamente.")
# ===================== EJECUCIÓN =====================
if __name__ == "__main__":
menu()
[Link]()