Autor: Iker Acevedo¶
Fecha creación: 2026-09-16
Estado: preprod
Modelos de dominio¶
Viven bajo LiquidacionDinamica/Dominio/Modelos/. Espejo 1:1 del front en liquidacion-transportadora.models.ts. Cambio en backend = cambio en frontend también.
Configuración¶
ConfiguracionTransportadora¶
Espejo de un documento de ConfiguracionLiquidacionTransportadora. Un documento por transportadora.
| Campo | Tipo | Descripción |
|---|---|---|
IdTransportadora |
int |
ID de la colección Transportadora |
NombreEnPedidos |
string |
Valor exacto (normalizado) como llega en PedidosInter.Transportadora — si no calza, el motor no puede asociar pedidos entrantes con esta configuración |
MotorLiquidacion |
enum | Dinamica | Legacy | Sombra | Deshabilitado |
PoliticaPeso |
enum | TablaIncrementosConTope | PorcentajeSobreFleteTransportadora — ver Políticas de peso |
TopeKilosTabla |
int? |
Requerido (≥2) si la política es tabla; debe ser null si es porcentaje |
AplicaMaximoServicioSeguro |
bool |
Si es true, comisión de recaudo y seguro también respetan "nunca menos que lo cobrado por la transportadora" (hoy solo TCC) |
TrayectoPorDefecto |
string? |
Código de trayecto a usar cuando el pedido trae uno no reconocido |
TrayectoTransportadora¶
Lista blanca de códigos de ruta válidos por transportadora (TrayectosTransportadora). Solo catálogo — no lleva peso ni tarifa. Codigo, NombreVisible, Orden.
TarifaTransportadoraTienda¶
Espejo de TarifasTransportadoraTienda: cuánto le cuesta liquidar una guía a una tienda puntual, o la Genérica de toda la transportadora.
| Campo | Descripción |
|---|---|
Alcance |
Tienda | Generico |
IdTienda |
Requerido si Alcance=Tienda; null si Generico |
TipoLiquidacion |
Entrega | Devolucion — cada combinación tienda+tipo tiene su propia tarifa |
PorcentajeRecaudo, PorcentajeSeguro |
% de comisión/seguro |
PorcentajeKiloAdicional |
% de recargo sobre el flete ya calculado, cuando el peso supera el tope de la tabla |
MontoMinimoServicio |
Piso fijo de servicio/seguro, sin importar el % configurado — la mayoría de transportadoras tiene uno |
Trayectos |
Lista de TrayectoTarifa, uno por cada trayecto que esta tarifa cubre |
TrayectoTarifa / IncrementoPeso¶
TrayectoTarifa: flete base (1kg) de un trayecto puntual dentro de una tarifa, más su lista de IncrementosPeso (solo tiene efecto bajo la política de tabla). IncrementoPeso: Kilos + IncrementoSobreKiloAnterior — un escalón de la tabla.
CostosOperativosTienda¶
Espejo de AdministracionCostos (por tienda, no por transportadora): porcentajes descuento flete/confirmación/adelanto (texto crudo tal cual Mongo) + montos fijos (PicyPac, OtroPorcentajeVenta, etc.). Parseados durante construcción liquidación.
Pedido¶
PedidoLiquidable¶
Subconjunto limpio (tipos normalizados, no JToken crudo) de documento PedidosInter. Lo mínimo para clasificar/validar/tarifar: Numeropreenvio, IdTienda, Transportadora, estado, fechas entrega/devolución, trayecto, peso.
⚠️ No incluye: dropshipper, marketing, referido (entran más adelante, resueltos por calculadoras propias).
Resultados de cálculo¶
Cada uno es la salida de una Calculadora — ver Calculadoras para el detalle de cómo se llenan.
| Modelo | Salida de |
|---|---|
ResultadoBaseRecaudo |
CalculadoraBaseRecaudo |
ResultadoFleteTienda |
CalculadoraFleteTienda |
ResultadoCalculoEntrega |
CalculadoraEntrega |
ResultadoCalculoDevolucion |
CalculadoraDevolucion |
ResultadoCalculoDropshipper |
CalculadoraDropshipper |
ResultadoPagoAdicional |
CalculadoraMarketing / CalculadoraReferido (comparten el mismo modelo de salida) |
ContextoCalculoFlete |
Entrada de las Políticas de Peso — no una salida: peso, flete real, % kilo adicional, trayecto de tarifa resuelto + su genérico, tope de kilos |
DatosOriginalesParaProveedor |
Campos que el documento del proveedor dropshipper copia tal cual del documento de la tienda que vendió (réplica intencional del comportamiento legacy) |
Historial de cambios¶
| Fecha | Autor | Cambio |
|---|---|---|
| 2026-09-16 | Iker Acevedo | Documentación inicial de los modelos de dominio. |
| 2026-09-16 | Iker Acevedo | Trayectos/IncrementosPeso cambiados de IReadOnlyList<T> a List<T> — Newtonsoft no puede poblar una ReadOnlyCollection al deserializar directo desde Mongo (crash real visto en CloudWatch). Ver commit 892e372. |