Autor: Iker Acevedo¶
Fecha creacion: 2026-09-09 Estado: produccion Tipo: componente
Componente: PasoCotizacionComponent¶
Selector: app-paso-cotizacion
Ubicación: src/app/components/modal-creacion-pedidos/components/paso-cotizacion/
Acceso: Autenticado | paso 3 del ModalCreacionPedidosComponent
¿Qué hace?¶
Es el paso 3 del modal de creación de pedidos: cotiza el envío contra Interrapidísimo, Servientrega y Envía a la vez, y muestra las 3 tarifas como tarjetas para que el usuario elija. Antes vivía todo inline dentro del modal; se extrajo a componente propio para poder tocarlo sin arriesgar el resto del flujo.
Con/sin recaudo¶
Switch "Con recaudo / Sin recaudo" que aplica a las 3 transportadoras a la vez (Common.ConRecaudo en el request al orquestador). Antes solo existía visualmente para Envía — el campo ya era global en el payload, pero el backend lo ignoraba para Inter/Servientrega hasta la Ronda 2 de feature/integracion-cotizador-envia. Ver ApiLambdaOrquestadorCotizaciones.
UI¶
- Tarjeta por transportadora con badge "Tarifa más económica" — se calcula en el front comparando los 3 totales devueltos, no viene del backend.
- El badge de trayecto (
cubrimiento) que se mostraba para Envía se quitó por decisión del usuario. El backend lo sigue devolviendo, pero no se renderiza. - Nota fija: "el valor declarado es la base con la que se cotiza el flete".
Botón "Ver desglose por transportadora"¶
Visible solo para roles CEO/Desarrollador, gateado por sessionStorage.getItem('roles_asignados') — mismo patrón que usan exportacion-pedidos.component.ts y floating-bar.component.ts en el resto del repo.
Al abrirlo dispara una segunda cotización con CotizacionLogigho: false, para mostrar el desglose crudo que devuelve cada transportadora (flete base, seguro, etc.) sin la fórmula Logigho aplicada encima.
⚠️ Esto es ocultamiento de UI, no control de acceso. El backend no valida el rol de quien llama al endpoint del orquestador — cualquiera con el token puede pedir
CotizacionLogigho: falsedirectamente. Si en algún momento el desglose crudo se considera información sensible de verdad, hay que validarlo en el backend, no confiar en este gate del front.
Labels del desglose¶
Ajustados a pedido de negocio — antes cada transportadora tenía su propio nombre para el mismo concepto, ahora todos dicen "Seguro":
| Transportadora | Label anterior | Label actual |
|---|---|---|
| Servientrega | "Sobreflete" | "Seguro" |
| Envía | "Servicio" (antes también "Costo M"/"Otros") | "Seguro" |
Servicios y endpoints¶
| Servicio | Método | Endpoint | Cuándo |
|---|---|---|---|
CotizacionService |
cotizar() |
POST /orquestadorCotizacion (CotizacionLogigho: true) |
Cotización normal, al entrar al paso o cambiar switch/ciudades |
CotizacionService |
cotizar() |
POST /orquestadorCotizacion (CotizacionLogigho: false) |
Solo si el usuario abre "Ver desglose", y solo para roles CEO/Desarrollador |
Historial de cambios¶
| Fecha | Autor | Cambio |
|---|---|---|
| 2026-09-09 | Iker Acevedo | Extracción del paso 3 a componente propio. Switch con/sin recaudo ahora afecta a las 3 transportadoras. Rediseño de tarjetas con badge de tarifa más económica. Botón de desglose gateado por rol. Labels de "Seguro" unificados. |
Observaciones¶
- El badge de trayecto (
cubrimiento) de Envía se evaluó mostrar y se quitó a pedido del usuario — no es un bug, es una decisión de producto. El dato sigue llegando en el response por si se necesita después. - Ver reglas-modalidad-pago.ts para cómo el switch de este paso se traduce a "Forma de pago" en el paso 4 (Guía) — la regla es distinta por transportadora y Envía está invertida.