Inventory Py: Aplicacion en Python para un Inventario Sencillo con SQLite


Inventory Py es una sencilla aplicacion en Python para manejar un inventario sencillo usando el motor de base de datos SQLite.

Inventory Py es una aplicacion desarrollada puramente para la consola o terminal, con un menu sencillo podemos ver las diferentes opciones.

Dentro de las opciones estan.

  1. Ver inventario
  2. Agregar a Inventario
  3. Disminuir a Inventario
  4. Ver Productos
  5. Agregar Producto
  6. Eliminar Producto
  7. Salir

Las diferentes opciones despliegan datos o solicitan datos de acuerdo a lo que muestra cada opcion.

En el siguiente video se muestra el funcionamiento de el programa Inventory Py.

Espero les guste el video y se suscriban a mi canal.

Codigo

El codigo esta hecho en Python y estamos usando como base de datos el Motor SQLite.

El siguiente es el codigo fuente para hacer la instalacion.

Si es por primera vez se ejecuta el archivo install.py asi como esta, si se quiere eliminar datos y volver a empezar, entonces debes quitar los comentarios de las opciones drop table product y drop table operation.

# Powered by Evilnapsis
import sqlite3


con  = sqlite3.connect("inventory.db")
cur = con.cursor()

#cur.execute("drop table product")
cur.execute("create table if not exists product (id integer not null primary key, name varchar(255), price_in double, price_out double, created_at datetime)")
print("[+] Tabla Product")

#operation_type 1: entrada ... 2: salida
#cur.execute("drop table operation")
cur.execute("create table if not exists operation (id integer not null primary key, product_id int, operation_type int, q int, created_at datetime)")
print("[+] Tabla Operation")


El siguiente codigo es el codigo ya de la aplicacion al cual llame main.py esta conformado por 7 funciones.

import sqlite3

# Funcion para mostrar el menu
# esta funcion se muestra todo el tiempo
def menu():
	i = 0
	while i!=8:
		print("\n\n-----* INVENTORY PY *-------")
		print("-----    MENU    -------")
		print("1. Ver inventario")
		print("2. Agregar a Inventario")
		print("3. Disminuir Inventario")
		print("4. Ver Productos")
		print("5. Agregar Producto")
		print("6. Eliminar Producto ")
		print("7. Salir")
		i = input("\nOpcion > ")
		i = int(i)
		print("Opcion seleccionada:  ", i)
		print("------------------------------")
		if i == 1:
			ver_inventario()
		elif i==2:
			agregar_inventario()
		elif i==3:
			disminuir_inventario()
		elif i==4:
			ver_productos()
		elif i==5:
			agregar_producto()
		elif i==6:
			eliminar_producto()
		elif i==7:
			print("-- [ Powered by Evilnapsis] --")
			exit()
# Funcion para ver el inventario
def ver_inventario():
	print("\n\n---- VER INVENTARIO -----")
	con = sqlite3.connect("inventory.db")
	cursor = con.cursor()
	cursor2 = con.cursor()
	rows = cursor.execute("select * from product")
	print("ID  |  PRODUCTO | EXISTENCIAS ")
	for r in rows:
		entradas = 0
		salidas = 0
		inventario = 0
		entradas_rows = cursor2.execute("select sum(q) as sumx from operation where operation_type=? and product_id=?", (1,r[0]))
		for er in entradas_rows:
			if er[0]!=None:
				entradas = er[0]
		salidas_rows = cursor2.execute("select sum(q) as sumx from operation where operation_type=? and product_id=?", (2,r[0]))
		for sr in salidas_rows:
			if sr[0]!=None:
				salidas = sr[0]
		inventario = entradas - salidas

		print(r[0], "  |  ", r[1], " | ", inventario)

	con.commit()
	print("------------------------\n\n")
	menu() # Regresar al menu principal

# Funcion para agregar cantidades al inventario de un producto
def agregar_inventario():
	print ("\n\n----- AGREGAR INVENTARIO ----")
	id_product = input("Id del Producto > ")
	quantity = input("Cantidad a Agregar > ")
	id_product = str(id_product)
	quantity  = float(quantity)

	con = sqlite3.connect("inventory.db")
	valores = (id_product, quantity, 1)
	con.execute("insert into operation (product_id, q,operation_type) values (?,?,?)", valores)
	con.commit()
	print("[+] Agregado exitosamente!")
	print("------------------------\n\n")
	menu() # Regresar al menu Principal

# Funcion para Disminuir cantidades o existencias al inventario de un producto
def disminuir_inventario():
	print ("\n\n----- DISMINUIR INVENTARIO ----")
	id_product = input("Id del Producto > ")
	quantity = input("Cantidad a Disminuir > ")
	id_product = str(id_product)
	quantity  = float(quantity)

	con = sqlite3.connect("inventory.db")
	cursor2 = con.cursor()

	entradas = 0
	salidas = 0
	inventario = 0
	entradas_rows = cursor2.execute("select sum(q) as sumx from operation where operation_type=? and product_id=?", (1,id_product))
	for er in entradas_rows:
		if er[0]!=None:
			entradas = er[0]
	salidas_rows = cursor2.execute("select sum(q) as sumx from operation where operation_type=? and product_id=?", (2,id_product))
	for sr in salidas_rows:
		if sr[0]!=None:
			salidas = sr[0]
	inventario = entradas - salidas
	if quantity>inventario:
		print("No se puede dejar Disminuir mas de las existencias")
	else:
		valores = (id_product, quantity, 2)
		con.execute("insert into operation (product_id, q,operation_type) values (?,?,?)", valores)
		con.commit()
	print("[-] Disminuido exitosamente!")
	print("------------------------\n\n")
	menu() # Regresar al menu Principal

# Funcion para agregar un producto a la base de datos
def agregar_producto():
	print ("\n\n----- AGREGAR PRODUCTO ----")
	name = input("Nombre del Producto > ")
	price_in = input("Precio de Compra > ")
	price_out = input("Precio de Venta > ")
	name = str(name)
	price_in  = float(price_in)
	price_out = float(price_out)
	con = sqlite3.connect("inventory.db")
	valores = (name, price_in, price_out, "NOW()")
	con.execute("insert into product (name, price_in, price_out,created_at) values (?,?,?,?)", valores)
	con.commit()
	print("[+] Agregado exitosamente!")
	print("------------------------\n\n")
	menu() # Regresar al menu Principal

# Funcion para ver productos
def ver_productos():
	print("\n\n---- VER PRODUCTOS -----")
	con = sqlite3.connect("inventory.db")
	cursor = con.cursor()
	rows = cursor.execute("select * from product")
	print("ID  |  PRODUCTO | EXISTENCIAS ")
	for r in rows:
		print(r[0], "  |  ", r[1], " | ", r[2], " | ", r[3])

	con.commit()
	print("------------------------\n\n")
	menu() # Regresar al menu principal

# Funcion para eliminar productos de la BD
def eliminar_producto():
	print ("\n\n----- ELIMINAR PRODUCTO ----")
	id_product = input("Id del Producto > ")
	id_product = str(id_product)
	con = sqlite3.connect("inventory.db")
	cursor = con.cursor()
	cursor.execute("delete from operation where product_id=?", (id_product))
	cursor.execute("delete from product where id=?", (id_product))
	con.commit()
	print("[-] Eliminado exitosamente!")
	print("------------------------\n\n")
	menu() # Regresar al menu Principal

# Llamar al menu por primera vez
menu()



Todo el codigo parte de la funcion MENU que muestra las opciones y recibe un numero como opcion, despues de finalizar cada accion se regresa de nuevo a la funcion MENU.

En el video de arriba se muestra todo el funcionamiento del proyecto.

Descargar

Para descargar el proyecto puedes usar el siguiente enlace.

Link: https://www.dropbox.com/s/fkqumccln8p7p7x/inventory-py.zip

Leave a comment