TP Python
TP Python
def registrar_producto():
"""
Permite al usuario ingresar un nuevo producto en la base de datos.
"""
print(Fore.CYAN + "\n--- Registrar Nuevo Producto ---")
nombre = input("Nombre: ")
descripcion = input("Descripción: ")
cantidad = int(input("Cantidad: "))
precio = float(input("Precio: "))
categoria = input("Categoría: ")
cursor.execute('''
INSERT INTO productos (nombre, descripcion, cantidad, precio, categoria)
VALUES (?, ?, ?, ?, ?)
''', (nombre, descripcion, cantidad, precio, categoria))
conn.commit()
print(Fore.GREEN + "✅ Producto registrado con éxito.")
def visualizar_productos():
"""
Muestra todos los productos actualmente registrados.
"""
print(Fore.CYAN + "\n--- Lista de Productos ---")
cursor.execute("SELECT * FROM productos")
productos = cursor.fetchall()
if productos:
for p in productos:
print(f"{Fore.YELLOW}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print(Fore.RED + "No hay productos registrados.")
def actualizar_producto():
"""
Permite actualizar los datos de un producto existente según su ID.
"""
print(Fore.CYAN + "\n--- Actualizar Producto ---")
id_ = input("ID del producto a actualizar: ")
cursor.execute("SELECT * FROM productos WHERE id = ?", (id_,))
producto = cursor.fetchone()
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]
cursor.execute('''
UPDATE productos
SET nombre = ?, descripcion = ?, cantidad = ?, precio = ?, categoria
= ?
WHERE id = ?
''', (nombre, descripcion, cantidad, precio, categoria, id_))
conn.commit()
print(Fore.GREEN + "✅ Producto actualizado con éxito.")
else:
print(Fore.RED + "Producto no encontrado.")
def eliminar_producto():
"""
Elimina un producto de la base de datos por su ID.
"""
print(Fore.CYAN + "\n--- Eliminar Producto ---")
id_ = input("ID del producto a eliminar: ")
cursor.execute("SELECT * FROM productos WHERE id = ?", (id_,))
if cursor.fetchone():
cursor.execute("DELETE FROM productos WHERE id = ?", (id_,))
conn.commit()
print(Fore.GREEN + "✅ Producto eliminado.")
else:
print(Fore.RED + "Producto no encontrado.")
def buscar_producto():
"""
Permite buscar productos por ID, nombre o categoría.
"""
print(Fore.CYAN + "\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: ")
cursor.execute("SELECT * FROM productos WHERE id = ?", (id_,))
elif opcion == '2':
nombre = input("Nombre del producto: ")
cursor.execute("SELECT * FROM productos WHERE nombre LIKE ?", ('%' + nombre
+ '%',))
elif opcion == '3':
categoria = input("Categoría del producto: ")
cursor.execute("SELECT * FROM productos WHERE categoria LIKE ?", ('%' +
categoria + '%',))
else:
print(Fore.RED + "Opción inválida.")
return
resultados = cursor.fetchall()
if resultados:
for p in resultados:
print(f"{Fore.YELLOW}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print(Fore.RED + "No se encontraron productos.")
def reporte_bajo_stock():
"""
Genera un reporte de productos con cantidad igual o inferior a un límite
definido.
"""
print(Fore.CYAN + "\n--- Reporte de Productos con Bajo Stock ---")
limite = int(input("Cantidad límite: "))
cursor.execute("SELECT * FROM productos WHERE cantidad <= ?", (limite,))
productos = cursor.fetchall()
if productos:
for p in productos:
print(f"{Fore.YELLOW}ID: {p[0]} | Nombre: {p[1]} | Cantidad: {p[3]} |
Precio: ${p[4]:.2f} | Categoría: {p[5]}")
else:
print(Fore.GREEN + "No hay productos con bajo stock.")
def menu():
"""
Muestra el menú principal y dirige al usuario según la opción seleccionada.
"""
while True:
print(Fore.BLUE + "\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")