Autor: Iker Acevedo¶
Fecha creación: 2026-09-16 Estado: preprod Tipo: componente
Configuración General¶
Selector: app-configuracion-general
Ubicación: src/app/views/director-de-operaciones/costos-transportadora/components/configuracion-general
¿Qué hace?¶
Edita el documento ConfiguracionLiquidacionTransportadora de la transportadora activa: qué motor usa, qué política de peso, el tope de kilos, si aplica el máximo servicio/seguro, y el trayecto por defecto. Es el panel que decide si una transportadora liquida de verdad con el motor Dinámico o no.
Patrón de borrador (draft)¶
El componente edita una copia local (draft) que arranca como clon de store.configuracion(). Solo se escribe de vuelta al store cuando el usuario presiona Guardar — así "Descartar" puede volver al último estado guardado sin lógica adicional, simplemente recargando el draft desde el store otra vez.
Todos los campos y reglas están alineados 1:1 con ConfiguracionTransportadora.cs del backend — no son supuestos de diseño de la pantalla.
Validaciones de operación¶
Un panel muestra reglas reales de consistencia (copiadas de los comentarios del dominio backend), no un checklist decorativo:
| Validación | Bloqueante | Regla |
|---|---|---|
| Tope de kilos en rango | Sí | Entre 2 y 50 si la política es tabla; debe estar vacío si es porcentaje |
| Nombre en Pedidos configurado | Sí | Necesario para que el motor pueda asociar pedidos entrantes con esta configuración |
| Trayecto por defecto válido | No | Si no está configurado, los pedidos sin trayecto reconocible van directo a auditoría |
Si hay alguna validación bloqueante sin cumplir, el botón Guardar queda inhabilitado — motor Dinámico con datos inconsistentes es exactamente el escenario que puede hacer fallar una liquidación real, y se corta acá, antes de que ese dato llegue a la Lambda.
El tope físico de 50 kg es un límite de negocio (no hay ninguna tarifa real que lo necesite por encima de eso), por eso vive en el componente y no en el modelo de dominio del backend.
Comportamientos ya resueltos, no obvios¶
- Cambiar la política de peso a "Porcentaje sobre Flete" limpia automáticamente el tope de kilos (
null, porque esa política no lo usa); cambiar a "Tabla de Incrementos" lo inicializa en 5 si estaba vacío. - El campo de tope de kilos se corrige en el momento (
onCambioTopeKilos) si se pega un valor fuera de rango — el atributomaxdel<input>solo limita las flechitas del spinner, no lo que se puede pegar directo. - El selector de "Trayecto por Defecto" se llena con los trayectos reales configurados en la pestaña Trayectos — ya no son 3 valores fijos ("Urbano", "Nacional", "Especial") como en una versión anterior; el backend acepta cualquier código que exista en la lista blanca.
Historial de cambios¶
| Fecha | Autor | Cambio |
|---|---|---|
| 2026-09-16 | Iker Acevedo | Documentación inicial. |
Observaciones¶
- El motor y la política se muestran con su descripción completa bajo el select (
descripcionMotorSeleccionado/descripcionPoliticaSeleccionada) — copiada literal del comentario de cada enum enEnums.cs, para que quien configura entienda la consecuencia de cada opción sin tener que preguntar.