Portal B2B para gestionar ventas: pedir, crédito, retiros, pagos y seguimiento — no un backoffice Odoo ni solo un estado de cuenta.
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
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.
| Estado | Hallazgo / mejora | Notas |
|---|---|---|
| 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.
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.
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.
payment_state / estados BrouBot / stages chat a «Pendiente», «Pagada», «En revisión», «Confirmado», «Rechazado» (no códigos EN). → cobra y sigue sin adivinar.#pedidos #pago #estado (hoy solo #chat / #crear-pedido). → ir directo a cobrar / retirar.en_cola; toast + link a Estado de cuenta. → cobrar con confianza.allow_credit_sale.#pf_portal_credito_app y tema website; no volver a paneles negros.bg-light) — ya parcheado; no reintroducir sin .pf-surface-light.allow_credit_sale, «BrouBot» en botón primario, asterisco en tabs.bg-secondary + payment_state crudo).| Tab | Hoy | Mejora 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).
/servicio-asistencia).POST /leer_comprobante → extrae op., importe, fecha.POST /verificar → BrouBot cruza movimientos eBROU.account.payment + reconcilia factura → aparece en estado de cuenta.| Nivel | Config | Default |
|---|---|---|
| Global | Ajustes → Ventas → Portal crédito | 5% |
| Por producto | Ficha producto → «Descuento pre-compra portal %» | Vacío = usa global |
| Módulo | Uso en portal crédito |
|---|---|
pf_sale_credit_control | allow_credit_sale, credit_limit, validación tope |
biller_all | PDF CFE en facturas portal |
pf_preorder | pf_is_preorder, pf_estimated_days, RFQ automática |
pf_website | Branding, checkout, estilos portal |
pf_estado_pago | Badges pago en pedidos/facturas |
| Ruta | Descripción | Estado |
|---|---|---|
/mi-cuenta | Página portal (5 tabs) | P2+ |
/mi-cuenta/api/ayuda | FAQ + links mesa ayuda | P2+ |
/mi-cuenta/api/sugeridos-agregar | Cross-sell productos nuevos | P2+ |
/shop/cart/retiro | Día retiro checkout | P2+ |
/mi-cuenta/api/resumen | Crédito + datos BROU + % web | P2+ |
/mi-cuenta/api/estado-cuenta | Facturas + comprobantes pagos | P2 |
/mi-cuenta/api/sugerencias | Stock / sin stock + sugeridos | P2+ |
/mi-cuenta/api/pago/informar | Subir captura → BrouBot → recibo | P2 |
/mi-cuenta/api/precompra | POST crear SO pre-orden | P5 |
Código: odoo-dev/pf_portal_credito/
Documentación, mockups, módulo vacío en repo.
Portal /mi-cuenta, comprobantes, descuento global 5% / por producto.
Antigüedad, export PDF, alertas vencimiento.
Agregar al pedido, repetir pedido.
Confirmar SO + pf_preorder RFQ + descuento configurable.
Lista precios partner, carrito con validación crédito.
| Tema | Propuesta |
|---|---|
| Descuento pre-compra | 5% default (pf_portal_credito.preorder_discount_pct) |
| Historial sugerencias | 12 meses (history_months) |
| Acceso portal | Solo allow_credit_sale = True |
| ETA sin stock | pf_estimated_days; fase 2: PO entrante |
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