Perfiles: desarrollo
Este manual es el puente entre lo que se ve en pantalla y las clases documentadas en el resto de esta web (pestañas Componentes, Injectables, Interfaces y Rutas).
La ficha de cada clase la escribe Compodoc leyendo los comentarios del propio código, y todo lo que se publica —esta web, los PDF y la base de conocimiento— sale de la misma fuente y se rehace a la vez: ninguna salida puede quedarse contando una versión anterior.
![]()
Pantalla → clase
| Pantalla | Componente | Servicios que la sostienen |
|---|---|---|
| Acceso | LoginPage, SeleccionarEmpresaModalComponent |
LoginAloService, SesionService, EncriptarService, RedService |
| Marco de la app, menú y distintivo de red | AppComponent |
MenuService, VariablesGlobalesService, EnvioDiferidoService, RedService |
| Primera descarga | PrimeraSincronizacionModalComponent |
SincronizacionService |
| Realizar inventario | RealizarInventarioPage |
ArticulosService, LotesService, UbicacionesService, InventariosService, InventarioEnCursoService, ContextoInventarioService, BarcodeScannerService, FeedbackEscaneoService, EnvioDiferidoService, LotesPendientesService |
| Antes de empezar | ContextoInventarioModalComponent |
ContextoInventarioService, ConfiguracionService, ErpCatalogoService |
| Crear lote | CrearLoteModalComponent |
LotesPendientesService, ArticulosService |
| Histórico | HistoricoInventariosPage |
InventariosService, RedService |
| Detalle y corrección | HistoricoInventariosDetallePage |
InventariosService, EdicionInventarioService, ArticulosService |
| Configuración | ConfiguracionPage |
ConfiguracionService, SincronizacionService, ErpCatalogoService, DatosDispositivoService, ArticulosService, LotesService |
Reglas de arquitectura que conviene conocer antes de tocar nada
- La sincronización de catálogos vive en un solo sitio,
SincronizacionService.sincronizarTodo(), y se llama al entrar en la app (login y restauración de sesión). Ninguna pantalla sincroniza. - Cada catálogo tiene su propia base IndexedDB por empresa, y los servicios reabren la conexión al cambiar de empresa o si el navegador la cierra.
- Los catálogos tienen una instantánea compartida por empresa (
InstantaneaCatalogoService), en Cloud Storage deamsystem-inventarios: el primero que los carga de ALO la sube y los demás la bajan y siguen con la incremental. La ruta y la clave de cifrado salen de un secreto que sólo da ALO con un token válido de esa empresa. Cada catálogo decide cuándo le vale: artículos y ubicaciones, una semana; lotes, que no tienen incremental, sólo si es del día. - El conteo en curso se persiste después de cada cambio (
InventarioEnCursoService) y sólo se borra cuando ALO acepta el documento. La corrección de un inventario se apoya en ese mismo mecanismo:EdicionInventarioService.preparar()deja el documento cargado como conteo en curso, y la pantalla de captura lo recupera igual que un conteo interrumpido. Un solo camino que mantener. - La contraseña del ERP vive sólo en memoria.
SesionService.paraPersistir()es el único punto donde la sesión llega al disco, y quita la contraseña. El acceso sin red se valida contra un hash PBKDF2. - El interceptor no cierra la sesión cuando no hay red. Sólo la cierra cuando hay cobertura, que es donde un token ausente sí significa que la sesión ha muerto.
- Los perfiles dependen de la identidad con la que se entra, no sólo de la empresa, y la decisión vive en
SesionService.perfilesDeSesion(identidad, empresa). Cualquier punto de entrada nuevo a la sesión tiene que llamar a esa función. MenuServicenunca devuelve un menú vacío: esa vacuidad provocaba un bucle de redirecciones en el guard.- Los códigos de barras se resuelven comparando conjuntos de claves, nunca cadenas (
codigo-barras.ts). Las mismas funciones se usan al indexar el catálogo y al buscar un escaneo, que es lo que garantiza que se crucen. Son funciones puras a propósito: se prueban sin navegador, sin red y sin credenciales. - La app nunca escribe una unidad que no conoce. Donde el ERP no declara unidades, la cifra va desnuda.
Convenciones
- Código, comentarios, commits y documentación en castellano. Carpetas
Servicios/,Modelos/,pages/. - Los comentarios explican por qué, no qué: buena parte de las decisiones de esta app se tomaron contra datos reales medidos en el ERP, y ese razonamiento está en el propio código. Los bloques de documentación de cada clase son los que se ven en esta web.
|
← Anterior
|
Siguiente →
|