Inventario nuevo — pantallas del front¶
Pantallas de Angular que usan el inventario nuevo (ApiLambdaInventario). Estado: rama feature/inventario-trazabilidad-front, validada en PreProd por Iker; producción pendiente (ver LogiGho-Dominio-Inventario/11-front/CHECKLIST-PASO-A-PRODUCCION.md).
Backend y reglas: visión del dominio · API de inventario · llamadores y estándar de llamadas · alertas por Slack · tareas futuras.
Fórmulas del libro (v2, ver estados y fórmula): Actual = Ingresos − Salidas + Anulaciones + Ajustes · Consumo = Salidas − Anulaciones · En tránsito = Consumo − Entregas − Devoluciones − Pérdidas.
Dónde está cada cosa¶
| Pantalla / pieza | Ruta de código (SitioLogiGho/src/app/…) |
Quién la ve |
|---|---|---|
| Resumen de inventario | views/logistica/resumen-inventario/ |
roles con acceso al Resumen |
| Menú «Más»: ¿Cómo se calcula? / Administrar inventario | mismo componente | Jefe Logistica y Desarrollador (fórmulas); Jefe Logistica, Desarrollador y CEO (administrar) |
| Modal Bajo stock (con filtro negativo / sin stock / bajo su mínimo) | …/components/bajo-stock-modal/ y alertas-resumen.ts |
todos los del Resumen |
| Despachos por día (ventana) | …/components/despachos-modal/ |
todos los del Resumen |
| Trazabilidad por producto | views/logistica/inventario-trazabilidad/ |
Jefe Logistica, Desarrollador, CEO (ROLES_TRAZABILIDAD) |
| Administrar inventario | …/resumen-inventario/administrar-inventario/ |
Jefe Logistica, Desarrollador, CEO |
| Catálogo (portafolio): etiqueta de stock y botón Trazabilidad | views/tienda/portafolio/ |
Trazabilidad: Jefe Logistica, Desarrollador, CEO |
Componentes compartidos nuevos: components/despachos-diarios, components/selector-fecha, components/select-buscable, components/explicacion-calculos, components/esqueleto. Lógica sin Angular: core/domain/inventario/ (despachos-diarios.ts, envio-lotes.ts), core/domain/roles.ts, core/domain/colores-logigho.ts. Estilo común «tabla a tarjetas»: src/scss/_tabla-tarjetas.scss (mixin tabla-a-tarjetas).
Despachos por día¶
- Día = día calendario en hora de Colombia (America/Bogota, UTC-5), no UTC.
- Rangos 7, 14, 30 días o personalizado (hasta 92 días).
- Fuente temporal: lectura de la colección
SalidaInventariopor la API genérica (id productoexacto +fechasFiltrosobre la fecha de creación del documento, hasta 20 páginas de 256; si se alcanza el tope avisa que el resultado puede estar incompleto). - Endpoint agregado disponible: el backend ya tiene
GET /inventario/despachos(API); reemplazaría soloDespachosDiariosServicecuando se decida (hoy exige los roles de la trazabilidad). - Pantalla «Suscripción inventario» (menú Más): consume
/inventario/suscripciones. Debe leerdatos.okde la prueba, no solo el HTTP, y conectarse al API real antes del PR (sin mock). Ver alertas por Slack. - Definición pendiente con la arquitecta: hoy «despachado» = salida registrada en el libro; no es la
Fecha Despachode PedidosInter. Un endpoint agregado por día reemplazaría soloDespachosDiariosService. - No verificado: volumen real en producción ni que
fechasFiltro(por fecha de creación) cubra salidas creadas un día distinto al de sufecha.
Administrar inventario¶
- Escritura por
metodoGenerico(booleanosTienda.ServicioInventario,Productos.ManejaInventario,FechaInicioInventariocomo texto ISO UTC) +actualizaInventarioLotespara el ingreso inicial. - Regla: nunca un producto activo con la tienda apagada; apagar la tienda desactiva primero sus productos.
- Activar uno o varios productos pide el conteo físico inicial (≥ 1) de cada uno; los ingresos no se reintentan (no son idempotentes).
- Pendiente de confirmar con la arquitecta: que
metodoGenericosea el mecanismo aceptado para esas escrituras.
Respuestas del API de inventario¶
El front solo usa el código HTTP de las rutas de inventario (actualizaInventarioLotes, etc.); no depende del texto de la respuesta (Operación exitosa. / Sin cambios: N pedidos leídos…). La única lectura de texto está en la creación de guía con la transportadora (resultado-creacion-guia.ts), que no es una ruta de inventario.
Auditoría (insertarAuditoria)¶
ConsumoGenericoService.insertarGenerico registra una auditoría con ?coleccion=<nombre del método>. Para actualizaInventarioLotes eso enviaba coleccion=actualizaInventarioLotes, que no es una colección: hipótesis de la causa de las dos llamadas insertarAuditoria con 404 vistas en la consola de PreProd. Cambio hecho: las rutas listadas en RUTAS_SIN_AUDITORIA no auditan. No verificado contra el API (falta ver que el 404 desaparezca en PreProd).
Pruebas¶
Jasmine/Karma (ng test). Las suites de inventario pasan; los ~90 fallos restantes de la suite completa son «should create» de componentes y servicios preexistentes, ninguno de inventario.