SistemaStock - Gestión de Autopartes
Desktop app en Java + SQL Server para administrar stock con control por RUDAC y rack, historial e impresión.
- Java SE 22
- Swing
- Eclipse + WindowBuilder
- SQL Server 2021
- JDBC
Resumen
Que hace
- Búsqueda por RUDAC y visualización formateada.
- ABM (agregar/modificar/eliminar) con validaciones;
- Tipos: Chapa, Caja de Cambio, Motor (con año y patente para caja/motor).
- Historial de acciones: usuario, fecha y hora de alta/modificación/baja.
- Hoja de envío: Domicilio o Transporte, con impresión.
- Filtro por rack e impresión de listado para control fisico.
Para quien
- Desarmaderos con RUDAC que requieren trazabilidad de piezas.
- Equipos de depósito que controlan ubicación y stock por rack.
- Administración que necesita auditoría de usuarios y comprobantes impresos.
Arquitectura
UI: Java Swing (Eclipse + WindowBuilder). Persistencia: SQL Server 2021 via JDBC. Build: JDK 22 (compatible 17+).
Capas / Paquetes
src/
sistemastock.app
|-- MainTest.java
`-- VentanaSistema.java
sistemastock.bd
|-- BaseDeDatos.java
`-- ConexionSQL.java
sistemastock.enums
|-- TipoChapa.java
|-- TipoEmpresa.java
`-- TipoEstado.java
sistemastock.modelo
|-- Producto.java (abstracta)
|-- Chapa.java
|-- CajaDeCambio.java
`-- Motor.java
sistemastock.sistema
`-- SistemaStock.java
sistemastock.usuario
|-- Usuario.java
`-- Modificacion.java
Conexion
JDBC con cadena segura y trustServerCertificate para entorno LAN. Uso de PreparedStatement en todas las operaciones (evita inyeccion y normaliza parametros).
Impresión
Generacion de listados (por rack) y hoja de envío con maquetado consistente.
Utilidad crearLinea() para alinear etiqueta/valor y JTextArea.print()
para mandar a impresora.
Validaciones y mensajes (Java)
- try/catch en altas, ediciones y bajas: captura
SQLExceptiony muestra mensajes claros (éxito/error). - Mensajes de éxito: "Producto agregado con éxito", "Modificado con éxito", "Eliminado con éxito".
- Mensajes de error: conexion fallida, RUDAC duplicado/no encontrado, campos obligatorios faltantes.
- Requeridos por tipo:
- Chapa: tipoChapa obligatorio.
- Caja/Motor: año (> 1900) y patente alfanumerica. - Normalización de entradas:
trim()+ mayusculas para RUDAC y ubicación (usaUPPER/LTRIM/RTRIMen SQL). - Prevencion de duplicados al agregar: se consulta RUDAC previo a
INSERT; si existe, se avisa al usuario.
Modulos
Buscar Producto
Ingreso de RUDAC y render legible de todos los campos (estado, ubicación, empresa, observaciones, etc.).
Agregar Producto
Tres subpestanas: Chapa, Caja de Cambio, Motor. Caja/Motor agregan año y patente. Publicado en ML: Si/No.
Modificar / Eliminar
Busca por RUDAC, trae datos precargados y permite actualizar o eliminar.
Historial
Bitacora por usuario con fecha y hora: alta, modificación y baja.
Hoja de Envío
Dos subpaneles: Domicilio y Transporte. Datos específicos y área de notas -> imprimir.
Imprimir / Rack
Combo de racks disponibles -> listado de piezas en ese rack -> impresión para control fisico.
Retos & soluciones
- Conectividad LAN estable -> URL JDBC con
trustServerCertificatey test de conexion al iniciar; mensajes claros si falla. - Datos consistentes / RUDAC único -> validación previa al
INSERTy PK/UNIQUE en BD; aviso si el RUDAC ya existe. - Búsquedas confiables -> normalización
trim()+UPPER/LTRIM/RTRIMpara evitar errores por espacios/case. - Validaciones por tipo de pieza -> reglas condicionales (Chapa requiere tipoChapa; Caja/Motor año y patente) con mensajes de éxito/error via try/catch.
- Auditoría completa -> tabla
Modificacioncon snapshot legible, usuario y fechaHora; historial ordenado por reciente. - Control por rack -> índice en
ubicaciony consulta parametrizada; reporte legible listo para imprimir. - Impresión uniforme -> helper
crearLinea()para alinear etiqueta/valor yJTextArea.print()para listados y hoja de envío. - UX de mostrador -> pestanas por modulo, combos con Enums (Estado/Empresa/TipoChapa) y feedback inmediato ("Agregado/Modificado/Eliminado con éxito").
- Seguridad basica -> consultas preparadas en todo el sistema; en producción, usuario
SQL con minimos permisos y
encrypt=true. - Mantenibilidad -> código por paquetes (bd/modelo/sistema/usuario) que separa responsabilidades y facilita nuevas features (roles, exportar PDF, etc.).
Galería
Resultados
- Trazabilidad por RUDAC e historial de acciones de usuarios.
- Control de depósito por ubicación/rack con lista impresa.
- Operativa agil en mostrador: altas rapidas por tipo (Chapa/Caja/Motor).
- Documentación limpia: hojas de envío estandarizadas.