Plant Cerebro
← datos
datoactivo21/09

El criterio único de facturación que tienen que compartir todos los monitores, si no discrepan entre sí

Todo monitor que muestre facturación propia (B2B + B2C) tiene que usar exactamente el pipeline del Pulso, o los tableros se contradicen y el número deja de servir:

  1. $lookup a ppricelists para resolver el nombre de la lista (pln) y recién ahí aplicar EXCL — usar data.priceListName directo deja pasar listas que hay que excluir.
  2. Excluir shipmentState cancelado además de status cancelado.
  3. Excluir carritos impagos: $or: [host == business.plant.com.ar, status != "pending_payment"]. En B2B el pendiente es normal (se factura a plazo); en B2C es un carrito sin pagar y no es facturación.
  4. Excluir priceList que matchee luz_azul|^ml$ — ML entra aparte.
  5. ML siempre desde nuestra integración (KV mlv:d:* vía /api/mlv), nunca del espejo DEV.

Por qué: el 25-ago-2026 Finanzas marcaba $957,7 M y el Pulso $899 M para el mismo agosto. La diferencia era 100% de filtros (carritos impagos + envíos cancelados + lista resuelta por lookup), no de datos. Replicado el pipeline, dieron igual.

Cómo aplicarlo: al crear un monitor nuevo, copiar plantRango() de worker/build_finanzas.py, que ya es el pipeline canónico. Si un número no cuadra con el Pulso, el bug está en los filtros.

Ver plant-datos-endpoints y monitores-en-vivo-proyecto.

Datos/plant-criterio-facturacion