SistemaStock - Gestion de Autopartes
Desktop app en Java + SQL Server para administrar stock con control por RUDAC y rack, historial e impresion.
- Java SE 22
- Swing
- Eclipse + WindowBuilder
- SQL Server 2021
- JDBC
Resumen
Que hace
- Busqueda por RUDAC y visualizacion formateada.
- ABM (agregar/modificar/eliminar) con validaciones;
- Tipos: Chapa, Caja de Cambio, Motor (con ano y patente para caja/motor).
- Historial de acciones: usuario, fecha y hora de alta/modificacion/baja.
- Hoja de envio: Domicilio o Transporte, con impresion.
- Filtro por rack e impresion de listado para control fisico.
Para quien
- Desarmaderos con RUDAC que requieren trazabilidad de piezas.
- Equipos de deposito que controlan ubicacion y stock por rack.
- Administracion que necesita auditoria 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).
Impresion
Generacion de listados (por rack) y hoja de envio 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 (exito/error). - Mensajes de exito: "Producto agregado con exito", "Modificado con exito", "Eliminado con exito".
- Mensajes de error: conexion fallida, RUDAC duplicado/no encontrado, campos obligatorios faltantes.
- Requeridos por tipo:
- Chapa: tipoChapa obligatorio.
- Caja/Motor: ano (> 1900) y patente alfanumerica. - Normalizacion de entradas:
trim()+ mayusculas para RUDAC y ubicacion (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, ubicacion, empresa, observaciones, etc.).
Agregar Producto
Tres subpestanas: Chapa, Caja de Cambio, Motor. Caja/Motor agregan ano 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, modificacion y baja.
Hoja de Envio
Dos subpaneles: Domicilio y Transporte. Datos especificos y area de notas -> imprimir.
Imprimir / Rack
Combo de racks disponibles -> listado de piezas en ese rack -> impresion para control fisico.
Retos & soluciones
- Conectividad LAN estable -> URL JDBC con
trustServerCertificatey test de conexion al iniciar; mensajes claros si falla. - Datos consistentes / RUDAC unico -> validacion previa al
INSERTy PK/UNIQUE en BD; aviso si el RUDAC ya existe. - Busquedas confiables -> normalizacion
trim()+UPPER/LTRIM/RTRIMpara evitar errores por espacios/case. - Validaciones por tipo de pieza -> reglas condicionales (Chapa requiere tipoChapa; Caja/Motor ano y patente) con mensajes de exito/error via try/catch.
- Auditoria completa -> tabla
Modificacioncon snapshot legible, usuario y fechaHora; historial ordenado por reciente. - Control por rack -> indice en
ubicaciony consulta parametrizada; reporte legible listo para imprimir. - Impresion uniforme -> helper
crearLinea()para alinear etiqueta/valor yJTextArea.print()para listados y hoja de envio. - UX de mostrador -> pestanas por modulo, combos con Enums (Estado/Empresa/TipoChapa) y feedback inmediato ("Agregado/Modificado/Eliminado con exito").
- Seguridad basica -> consultas preparadas en todo el sistema; en produccion, usuario
SQL con minimos permisos y
encrypt=true. - Mantenibilidad -> codigo por paquetes (bd/modelo/sistema/usuario) que separa responsabilidades y facilita nuevas features (roles, exportar PDF, etc.).
Galeria
Resultados
- Trazabilidad total por RUDAC + historial de usuarios.
- Control de deposito por ubicacion/rack con lista impresa.
- Operativa agil en mostrador: altas rapidas por tipo (Chapa/Caja/Motor).
- Documentacion limpia: hojas de envio estandarizadas.