← Centro de desarrollo

Portal Cliente Crédito Avanzado

Portal B2B para gestionar ventas: pedir, crédito, retiros, pagos y seguimiento — no un backoffice Odoo ni solo un estado de cuenta.

Piloto staging — hay que mejorarlo mucho H1 staging ✅ TERLINA Módulo pf_portal_credito Odoo 19 Depende: pf_sale_credit_control + pf_preorder

Visión — north star

Portal B2B para gestionar ventas. El cliente mayorista entra a vender más y cobrar/retirar sin fricción: armar pedidos, ver crédito disponible, informar pagos, coordinar retiros y seguir el pedido. No es «Odoo en el website» ni solo un extracto de cuenta. Cada mejora P0–P2 debe acelerar pedir · cobrar · retirar · recomprar. → Propuestas UI

Piloto staging (ago 2026) — backlog de mejoras

Sesión piloto con TERLINA (piloto.terlina@staging.local en :8071). El portal funciona para smoke e2e, pero la UX todavía necesita mucho trabajo hacia el north star (Visión): ayudar a gestionar ventas, no solo mirar saldos. Detalle canónico: ROADMAP · handoff · demo UX.

EstadoHallazgo / mejoraNotas
Staging ✅ Doble «Mi cuenta» en menú usuario Portal Odoo renombrado a Mis datos; queda un solo «Mi cuenta» → /mi-cuenta
Staging ✅ Armar pedido → carrito mostraba solo «Error» API carrito Odoo 19 incompatible; fix en armar pedido → /shop/cart
Staging ✅ Mis pedidos: no había dónde poner «cuándo retiro» Selector de día de retiro en Mis pedidos (/api/retiro/fecha)
Staging ✅ Formularios Retiro / Chat «muy negros» Tema remapeaba bg-light; SCSS portal restaura paneles claros
Staging ✅ Chat: cliente no debería elegir equipo Auto-asignación a equipo portal; se ignora team_id del request
Staging ✅ Estado de cuenta: columna Recibo vacía / sin destacar emitido Emitir recibo con memo Odoo 19 + badge «Emitido» + highlight fila
Staging ✅ Redirect loop si el usuario no tiene allow_credit_sale Gate claro sin bucle login ↔ /mi-cuenta
Repo ✅ · live 🔲 H2 marketing portal.html CTA Mi cuenta En repo; deploy deploy-masvendido-site.sh pendiente OK Nicol
Abrir UX general: pulir tabs, empty states, mobile, copy Prioridad: Mis pedidos + Estado de cuenta + Crear pedido* se sienten crudos
Abrir H3 Pre-compra 5% real en carrito UI muestra −5%; armar pedido aún aplica solo 3% web
Abrir H4 Cron reintento BrouBot + badges legibles Pagos en cola quedan colgados sin cron
Abrir H5 Estado de cuenta PRO (antigüedad, PDF, vencidos) Cliente no entiende deuda por edad ni baja PDF fácil
Abrir H6 Catálogo B2B + topes crédito live Más allá de habitual / segmento
Abrir H7 Mails picking listo / retiro confirmado Hoy el cliente tiene que entrar a mirar
Abrir Go-live prod (panel.masvendido.com) H1 solo ✅ en staging; prod sigue 404 / sin -u

Veredicto: usable en staging para piloto, pero hay que mejorarlo un montón antes de tratarlo como producto terminado. No deploy marketing ni prod Odoo sin OK explícito.

Propuestas UI (análisis) — ago 2026

Análisis sobre código vivo (portal_mi_cuenta.js / SCSS / templates), demo mi-cuenta-demo-cliente.html y backlog piloto. Staging :8071 no estaba arriba al revisar. No es código — priorización para Nicol. Criterio: cada ítem debe ayudar al cliente a vender / reordenar / cobrar / retirar más rápido (Visión). Espejo corto en ROADMAP.

1. Diagnóstico

Hoy el portal se siente como backoffice Odoo embebido en website o como un estado de cuenta + menú de módulos: 8 tabs planas, tablas densas, badges en inglés (not_paid / stages helpdesk), CTAs débiles y copy de desarrollador («Crear pedido*», «Error», «BrouBot»). El north star es un portal B2B para gestionar ventas — pedir, crédito, retiros, pagos, seguimiento — no un extracto contable ni un clone de Odoo. El cliente mayorista necesita acciones claras para vender y operar (armar pedido, informar pago, coordinar retiro), no un menú de módulos. La demo ya muestra mejor jerarquía (KPIs, pills ES, recorrido); el gap demo↔prod es el mapa de trabajo. Los fixes piloto (paneles claros, día retiro, recibo, anti-doble menú) sacaron fricción grave, pero queda deuda visual y de IA orientada a ventas.

2. Quick wins (P0 · ≤1–2 días c/u) — fricción que frena la venta

3. Medium (P1) — operar ventas sin fricción

4. Bigger bets (P2) — portal de ventas B2B

5. Anti-patterns a matar

6. Tab por tab

TabHoyMejora concreta
Resumen 4 cards + alert % web; sin acción KPI vencido; CTA contextual; cuenta BROU copiable; link «Ver estado»
Estado de cuenta Tablas crudas; estados EN; recibo mejorado Pills ES; PDF; highlight vencidas; empty state; tooltip Recibo
Mis pedidos Cards OK; retiro/fecha añadidos Chip «Falta día de retiro»; timeline; fotos más grandes en mobile
Crear pedido* Tabla densa; * confuso; redirect carrito OK Renombrar; sticky barra «N ítems · $»; cards en mobile; sticky CTA
Sugerencias Mejor UX de qty/cajas; overlap con Crear Explicar vs Armar; post-add redirect opcional; pre-compra % real (H3)
Ayuda FAQ accordion + links Top 3 preguntas; CTA Chat primario; menos URLs técnicas
Chat Shell OK; sin equipo; stages EN Categorías humanas; «Escribinos» vacío; badges ES
Informar pago Form mínimo; estados código Pasos 1-2-3; preview foto; estados humanos; historial reciente

Prioridad sugerida post-piloto: P0 copy/estados/deep-links → P1 IA tabs + mobile → P2 home crédito + H5/H7. Alinear look a teal MasVendido de la demo (no purple genérico).

Objetivo de producto

  • Estado de cuenta — saldo, límite, movimientos, antigüedad, CFE Biller.
  • Sugerencias de compra — según lo que el cliente suele pedir + productos sugeridos para agregar.
  • Ayuda — FAQ crédito + mesa de ayuda / tickets (misma mesa que /servicio-asistencia).
  • Pedido web — elige día de retiro + 3% descuento automático.
  • Con stock — productos habituales disponibles hoy → agregar al pedido.
  • Sin stock — ETA de llegada + opción de pre-compra con descuento.

Mockups (wireframe)

Mi crédito — Dashboard
$ 84kDisponible
$ 16kUsado
$ 100kLímite
$ 2.4kVencido
Factura F001-1234Pendiente
Pedido SO-8891En curso
Sugerencias — Lo que suele pedir

✓ Con stock hoy

Piso SPC Roble 2m²48 u.
Zócalo PVC blanco120 u.
Cola vinílica 5kg24 u.

⏳ Sin stock — pre-compra

Guarda humid. 2mm~12 días · -5%
Membrana 20m~18 días · -5%

Arquitectura

┌─────────────────────────────────────────────┐ │ UI portal (pf_website / templates Odoo) │ │ /mi-cuenta · sugerencias · estado cuenta │ └────────────────────┬────────────────────────┘ │ JSON /mi-cuenta/api/* ┌────────────────────▼────────────────────────┐ │ pf_portal_credito (Odoo 19 — delgado) │ └────────────────────┬────────────────────────┘ │ pf_sale_credit_control · account.move · sale.order biller_all (CFE) · pf_preorder · EbrouBotv2 (BrouBot :8765)

Flujo pago BROU + BrouBot (P2)

  1. Cliente transfiere a cuenta BROU (indica Nº factura en asunto).
  2. En portal → Informar pago → sube captura del comprobante.
  3. Odoo llama POST /leer_comprobante → extrae op., importe, fecha.
  4. Odoo llama POST /verificar → BrouBot cruza movimientos eBROU.
  5. Si confirmado → account.payment + reconcilia factura → aparece en estado de cuenta.
  6. Si en cola → reintento automático (cron / cola BrouBot).

Descuento pre-compra

NivelConfigDefault
GlobalAjustes → Ventas → Portal crédito5%
Por productoFicha producto → «Descuento pre-compra portal %»Vacío = usa global

Extras portal PRO (roadmap)

✓ P2+ Ayuda embebida + 3% web + día retiro + sugeridos agregar
🔲 Alertas facturas por vencer (email / badge)
🔲 Descargar estado de cuenta PDF
🔲 Repetir pedido anterior en 1 clic
🔲 Notificaciones cuando llega stock pre-comprado

→ Ver mockup interactivo Mi cuenta PRO

Reutiliza (ya existe)

MóduloUso en portal crédito
pf_sale_credit_controlallow_credit_sale, credit_limit, validación tope
biller_allPDF CFE en facturas portal
pf_preorderpf_is_preorder, pf_estimated_days, RFQ automática
pf_websiteBranding, checkout, estilos portal
pf_estado_pagoBadges pago en pedidos/facturas

API implementada

RutaDescripciónEstado
/mi-cuentaPágina portal (5 tabs)P2+
/mi-cuenta/api/ayudaFAQ + links mesa ayudaP2+
/mi-cuenta/api/sugeridos-agregarCross-sell productos nuevosP2+
/shop/cart/retiroDía retiro checkoutP2+
/mi-cuenta/api/resumenCrédito + datos BROU + % webP2+
/mi-cuenta/api/estado-cuentaFacturas + comprobantes pagosP2
/mi-cuenta/api/sugerenciasStock / sin stock + sugeridosP2+
/mi-cuenta/api/pago/informarSubir captura → BrouBot → reciboP2
/mi-cuenta/api/precompraPOST crear SO pre-ordenP5

Código: odoo-dev/pf_portal_credito/

Roadmap de fases

P0

Spec + portal desarrollo

Documentación, mockups, módulo vacío en repo.

Hecho
P2

UI «Mi cuenta» + pagos BrouBot

Portal /mi-cuenta, comprobantes, descuento global 5% / por producto.

En repo
P3

Estado de cuenta PRO

Antigüedad, export PDF, alertas vencimiento.

Pendiente
P4

Carrito sugerencias

Agregar al pedido, repetir pedido.

Pendiente
P5

Pre-compra con descuento

Confirmar SO + pf_preorder RFQ + descuento configurable.

Pendiente
P6

Catálogo B2B + tope en vivo

Lista precios partner, carrito con validación crédito.

Pendiente

Reglas de negocio (a definir)

TemaPropuesta
Descuento pre-compra5% default (pf_portal_credito.preorder_discount_pct)
Historial sugerencias12 meses (history_months)
Acceso portalSolo allow_credit_sale = True
ETA sin stockpf_estimated_days; fase 2: PO entrante

Motor sugerencias (v1)

sale.order.line (12 meses, partner comercial, sale/done) → ranking por frecuencia y cantidad → cruce free_qty en vivo → CON STOCK: free_qty > 0 → SIN STOCK: pf_is_preorder o free_qty ≤ 0 + ETA + descuento

← Volver al centro de desarrollo · docs/desarrollo/PORTAL_CLIENTE_CREDITO.md