Modelo de base de datos del sistema de inventario Inventio Lite

Conoce el modelo de base de datos del sistema de inventario Inventio Lite en PHP y MySQL. Explicación detallada de cada tabla, campos y consultas SQL útiles. ¡Descárgalo gratis!

¿Estás desarrollando un sistema de inventario en PHP y MySQL y no sabes cómo estructurar tu base de datos?

Este artículo es parte de la Guía de Desarrollo de Sistemas con PHP y MySQL Aprende a construir software profesional desde cero, con estándares de seguridad y arquitectura comercial. Ver la Guía Completa →

En este artículo te explico el modelo de base de datos de Inventio Lite, un sistema de inventario y ventas desarrollado en PHP y MySQL, para que puedas entenderlo, adaptarlo y usarlo como base en tus propios proyectos.

Te invito a ver mi Directorio Maestro de Modelos de Bases de Datos. Y podras encontras mas modelos para analizar y experimentar.

¿Qué es Inventio Lite?

Inventio Lite es un sistema de inventario y punto de venta desarrollado en PHP y MySQL con arquitectura MVC. Permite gestionar productos, categorías, clientes, proveedores, ventas y abastecimientos desde un panel de administración web sencillo e intuitivo.

Inventio Lite nació hace varios años como un proyecto open source y desde entonces ha sido descargado y usado por cientos de desarrolladores y negocios en Latinoamérica como base para sus propios sistemas de inventario.

Si buscas una versión más completa con más funcionalidades y soporte incluido, más adelante en este artículo te presento Inventio Max.

A continuación les dejo una imagen del modelo de la base de datos generada por el programa MySql Workbench.

La base de datos del sistema Inventio Lite esta conformada por 9 tablas las cuales son:

  1. category
  2. product
  3. person
  4. box
  5. operation_type
  6. sell
  7. operation
  8. user
  9. configuration

Link a la base de datos: https://github.com/evilnapsis/inventio-lite/blob/master/schema.sql ( Sigueme en github 😉 )

Ahora  explicare para que sirve cada tabla.

Category

La tabla category almacena las categorías a las que pertenecen los productos del sistema.

Campos:

  • id — Llave primaria autoincremental
  • name — Nombre de la categoría que se muestra en el sistema
  • description — Descripción de la categoría
  • image — Imagen representativa de la categoría
  • created_at — Fecha de creación

La tabla product tiene un campo category_id que se relaciona con el id de esta tabla, formando una relación uno a muchos — una categoría puede tener muchos productos.

Consultas útiles:

-- Mostrar todas las categorías 
SELECT * FROM category; 
-- Mostrar productos de una categoría específica 
SELECT * FROM product WHERE category_id = 1;

Product

La tabla product es el corazón del sistema. Aquí se almacena toda la información de los productos del inventario.

Campos:

  • id — Llave primaria del producto
  • name — Nombre del producto
  • description — Descripción breve
  • barcode — Código de barras
  • image — Nombre del archivo de imagen
  • price_in — Precio de compra o abastecimiento
  • price_out — Precio de venta
  • inventary_min — Cantidad mínima en inventario (para alertas de stock bajo)
  • presentation — Presentación del producto (bolsa, botella, caja, etc.)
  • unit — Unidad de medida (metros, kilos, litros, etc.)
  • category_id — Categoría a la que pertenece
  • user_id — Usuario que dio de alta el producto
  • is_active — Indica si el producto está activo o inactivo
  • created_at — Fecha de creación

Consultas útiles:

-- Mostrar todos los productos
SELECT * FROM product;

-- Mostrar solo productos activos
SELECT * FROM product WHERE is_active = 1;

-- Mostrar productos por categoría
SELECT * FROM product WHERE category_id = 1;

-- Mostrar productos dados de alta por un usuario
SELECT * FROM product WHERE user_id = 1;

Person

La tabla person maneja tanto clientes como proveedores dentro del mismo modelo, diferenciados por el campo kind.

Campos:

  • id — Llave primaria
  • name — Nombre
  • lastname — Apellidos
  • company — Nombre de la empresa
  • address1, address2 — Direcciones
  • phone1, phone2 — Teléfonos
  • email1, email2 — Correos electrónicos
  • image — Foto o imagen
  • kind — Tipo: 1 = cliente, 2 = proveedor
  • created_at — Fecha de creación

Consultas útiles

-- Mostrar solo clientes
SELECT * FROM person WHERE kind = 1;

-- Mostrar solo proveedores
SELECT * FROM person WHERE kind = 2;

Box

La tabla box gestiona los cortes de caja del sistema. Cuando se realiza un corte, se crea un registro en esta tabla y todas las ventas pendientes se asocian a ese corte mediante el campo box_id en la tabla sell.

Campos:

  • id — Llave primaria autoincremental
  • created_at — Fecha del corte de caja

Operation Type

Esta tabla es una biblioteca que define los tipos de movimiento en el inventario. Sus valores son fijos y no deben modificarse porque afectan el funcionamiento del sistema:

  • 1 = Entrada (abastecimiento, compra)
  • 2 = Salida (venta)

Sell

La tabla sell agrupa las operaciones de venta o abastecimiento. Cada registro representa una transacción completa.

Campos:

  • id — Llave primaria
  • person_id — Cliente (ventas) o proveedor (abastecimientos)
  • user_id — Usuario que realizó la operación
  • operation_type_id — Tipo: entrada o salida
  • box_id — Corte de caja al que pertenece (NULL hasta el corte)
  • total — Total de la transacción
  • cash — Monto pagado por el cliente
  • discount — Descuento aplicado
  • created_at — Fecha de creación

Consultas útiles

-- Mostrar todas las ventas
SELECT * FROM sell WHERE operation_type_id = 2;

-- Mostrar todos los abastecimientos
SELECT * FROM sell WHERE operation_type_id = 1;

-- Ventas de un corte de caja específico
SELECT * FROM sell WHERE operation_type_id = 2 AND box_id = 1;

-- Ventas por rango de fechas
SELECT * FROM sell
WHERE operation_type_id = 2
AND (DATE(created_at) > 'YYYY-MM-DD' AND DATE(created_at) <= 'YYYY-MM-DD');

Operation

La tabla operation guarda el detalle de cada producto dentro de una venta o abastecimiento. Es la tabla que realmente mueve el inventario.

Campos:

  • id — Llave primaria
  • product_id — Producto involucrado
  • q — Cantidad
  • operation_type_id — Entrada o salida
  • sell_id — Venta o abastecimiento al que pertenece
  • created_at — Fecha

Consultas SQL

-- Total de entradas de un producto
SELECT SUM(q) FROM operation
WHERE operation_type_id = 1 AND product_id = 1;

-- Total de salidas de un producto
SELECT SUM(q) FROM operation
WHERE operation_type_id = 2 AND product_id = 1;

User

La tabla user almacena los usuarios con acceso al panel de administración.

Campos:

  • id — Llave primaria
  • name, lastname — Nombre completo
  • username — Nombre de usuario
  • email — Correo electrónico
  • password — Contraseña de acceso
  • image — Foto de perfil
  • is_active — Usuario activo o inactivo
  • is_admin — Indica si es administrador
  • created_at — Fecha de creación

Consultas útiles

  • Login valido del usuario: select * from user where (email=”EMAIL” and password=”PASSWORD”) and is_active=1

Configuration

La tabla configuration es una tabla experimental que sirve para usar configuraciones o ajustes generales que afectan al funcionamiento del sistema.

Campos

  • id: Id autoincremental
  • short: Nombre corto, normalmente se utiliza como una llave para acceder a los valores de las configuraciones en lugar de usar el id
  • name: Es el nombre de la configuración, este se muestra en el sistema.
  • kind: Tipo de valor puede ser textual, numérico, si/no, imagen. se usa un valor numérico, por ejemplo, tipo textual=1, numérico=2…
  • val: Valor almacenado, es el valor referente a la configuración

Las entradas en la tabla de configuración se acceden en el sistema para alterar ciertos funcionamientos.

Descarga el código fuente

Puedes descargar el esquema SQL completo de Inventio Lite directamente desde GitHub:

Esquema SQL: github.com/evilnapsis/inventio-lite/blob/master/schema.sql

¿Quieres el sistema completo y listo para usar?

Si no quieres construir el sistema desde cero y prefieres un sistema de inventario profesional, completamente funcional y con soporte incluido, te presentamos Inventio Max — la versión premium de Inventio con más módulos, mejor diseño y actualizaciones constantes.

Ver Inventio Max →

Conclusión

El modelo de base de datos de Inventio Lite es sencillo pero completo. Con solo 9 tablas cubre todo el flujo de un sistema de inventario y ventas: productos, categorías, clientes, proveedores, ventas, abastecimientos, cortes de caja y usuarios.

Puedes usarlo como base para tu propio sistema o descargarlo directamente y adaptarlo a tus necesidades. Si tienes dudas sobre alguna tabla o quieres saber cómo extender el modelo, déjanos un comentario.

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading