PC Shop: una aplicación de gestión en Delphi 12.1 orientada a portfolio profesional
PC Shop es un proyecto de desarrollo de escritorio realizado con Delphi 12.1 Community Edition, VCL, FireDAC y SQLite. Nace como una aplicación sencilla de gestión de productos, pero evoluciona progresivamente hacia un pequeño entorno de retail con persistencia, ventas, control de stock y una arquitectura separada por responsabilidades.
El objetivo no es construir un ERP completo, sino desarrollar una aplicación realista que permita practicar y mostrar competencias útiles en ofertas de empleo relacionadas con Delphi, Object Pascal, SQL, bases de datos y mantenimiento de aplicaciones de escritorio.
Arquitectura del proyecto
PC Shop mantiene separadas la interfaz, el modelo y la persistencia.
Formulario VCL
↓
TProducto / lógica de aplicación
↓
Data Module
↓
FireDAC
↓
SQLite
El formulario se ocupa principalmente de la interacción con el usuario y de mostrar la información. Las sentencias SQL permanecen centralizadas en el Data Module.
Esta separación permite que el código sea más mantenible y facilita futuras ampliaciones.
Gestión de productos
El módulo de productos utiliza actualmente los siguientes datos:
- Código.
- Nombre.
- Precio.
- Stock.
La aplicación dispone de un CRUD persistente completo:
- CREATE: alta mediante INSERT parametrizado.
- READ: recuperación mediante SELECT.
- UPDATE: edición mediante UPDATE parametrizado.
- DELETE: eliminación mediante DELETE parametrizado.
Los productos se reconstruyen desde SQLite al iniciar la aplicación y se convierten nuevamente en objetos TProducto, que después alimentan la colección interna y el TStringGrid.
SQL parametrizado y FireDAC
Una de las decisiones principales del proyecto consiste en evitar la construcción de SQL mediante concatenación directa de los datos introducidos por el usuario.
Las operaciones se realizan mediante parámetros FireDAC, por ejemplo:
UPDATE PRODUCTOS
SET Nombre = :Nombre,
Precio = :Precio,
Stock = :Stock
WHERE Codigo = :Codigo;
También se utiliza RowsAffected para comprobar si una operación SQL ha afectado realmente a un registro.
Búsquedas, filtros y ordenación
Sobre la base del CRUD se incorporan funciones habituales en una aplicación de gestión:
- Búsqueda por código.
- Búsqueda parcial por nombre.
- Filtro de productos con stock bajo.
- Cálculo del valor total del inventario.
- Ordenación por nombre A-Z y Z-A mediante
ORDER BYejecutado desde SQLite.
El formulario comunica qué información necesita mostrar, mientras que el Data Module mantiene la responsabilidad de obtenerla desde la base de datos.
Primer módulo de ventas
PC Shop empieza también a incorporar lógica de negocio propia de una aplicación de retail.
La primera operación de venta permite seleccionar un producto, indicar una cantidad y registrar la operación descontando automáticamente el stock.
La venta se trata como una operación indivisible:
INSERT INTO VENTAS + UPDATE PRODUCTOS
Ambas operaciones se ejecutan dentro de una transacción FireDAC.
- Si las dos operaciones funcionan: COMMIT.
- Si alguna falla: ROLLBACK.
Además, la propia consulta SQL comprueba de nuevo que exista stock suficiente en el momento de realizar la venta.
WHERE Stock >= :Cantidad
Si el UPDATE no puede modificar ninguna fila, RowsAffected permite detectar que no existe stock suficiente y cancelar toda la operación.
De esta forma:
VENTA + DESCUENTO DE STOCK = una única operación lógica
Problemas reales resueltos durante el desarrollo
El proyecto también sirve para practicar mantenimiento y depuración sobre incidencias reales que aparecen durante la evolución del código.
Entre otras, se han resuelto:
- Duplicación accidental de productos en la colección.
- Valores de Precio y Stock mostrados incorrectamente en el grid.
- Bloqueos de SQLite durante el desarrollo.
- Error F2039 al permanecer abierto
pcshop.exe. - Access Violation provocada por utilizar el Data Module antes de su creación.
- Parámetros SQL mal escritos.
- Errores List index out of bounds por eliminar dos veces el mismo elemento.
- Diferencias entre modificar un objeto en memoria y persistir realmente el cambio en SQLite.
Competencias profesionales trabajadas
PC Shop permite trabajar de forma práctica competencias que aparecen habitualmente en ofertas de desarrollo y mantenimiento de aplicaciones:
- Delphi 12.1 / Object Pascal.
- VCL.
- FireDAC.
- SQLite.
- SQL.
- Bases de datos relacionales.
- CRUD persistente.
- Consultas parametrizadas.
- Transacciones.
- Control de stock.
- Lógica de retail.
- Programación orientada a objetos.
- Separación de responsabilidades.
- Depuración y mantenimiento de código.
- Git y GitHub.
Versión pública y evolución privada
PC Shop dispone de una versión pública destinada principalmente a portfolio y documentación técnica:
GitHub:
https://github.com/101aero/pcshopPB/
El desarrollo completo y las funcionalidades de evolución comercial continúan en una versión privada del proyecto, donde se incorporan progresivamente nuevas características.
Próximos pasos
La evolución del proyecto continúa orientándose hacia funcionalidades que aporten valor profesional y que permitan cubrir competencias reales de ofertas de empleo.
Entre las líneas previstas se encuentran:
- Ampliación del módulo de ventas.
- Gestión de varias líneas por venta.
- Histórico de operaciones.
- Mejoras de inventario.
- Integración progresiva de Firebird en futuras fases o proyectos relacionados.
- Stored Procedures, Triggers y Views cuando el modelo lo justifique.
- Integraciones con periféricos o comunicaciones cuando encajen de forma natural en el proyecto.
InformatOLI — Desarrollo de software y ciberseguridad desde 1996.
