Mapa mental global — plataforma

Índice guía · Vista no solo de establecimiento: quién entra por dónde, alta tenant ERP y convergencia en la carta / ficha pública. Detalle ficha + ①②③: map-flujo-establecimiento-erp.html.

Flujo lineal: crear la empresa → aparecer en la web

  1. Staff (admin del sitio) entra por company/login_admin.php y abre company/wizard_alta_empresa.php. Sin sesión admin, el wizard redirige al login admin. El borrador vive en sesión y en admin_wizard_empresa_draft.
  2. Pasos 1–7 definen identidad comercial, coordenadas, sedes, áreas, almacenes, categorías ERP y productos (todo sigue siendo borrador hasta el paso 8).
  3. Paso 8 — “Crear en el ERP” (wizard_action=paso8_crear): en una transacción se insertan empresa, cada fila de sedes y, por sede, se llama a chancay_empresa_provision_marker_for_sede(): crea (o reutiliza) un registro en markers, asigna sedes.map_marker_id y genera un slug estable (p. ej. erp-e{id}-s{id}). También se crean áreas, almacenes, categorías, empresa_producto y el usuario owner en empresa_usuario para login_empresa.php.
  4. URL pública de la ficha: el visitante abre la ficha con el slug del pin, resuelto en includes/establecimiento-bootstrap.php (SELECT id FROM markers WHERE slug = ?) y la vista establecimiento.php (o equivalente con id).
  5. Carta / menú en la web: paginas/get_pagina_establecimiento.php y api/chancay/paginas/get_pagina_establecimiento.php usan el markers.id de la ficha. Si hay sede ERP con map_marker_id = ese pin, la carta sale de empresa_producto (empresa_gestion_pos_catalog_rows); si no, productos legacy del marcador.
  6. Después del alta, el dueño entra por login_empresa.php → paneles dashboard_empresa_*.php (resumen, sedes ERP, gestión, ventas…) y sigue editando el mismo tenant. El flujo “pin clásico” sigue disponible con login_establecimiento.phpdashboard_establecimiento.php / panel.
  7. Visitante: mapa o enlace con slugestablecimiento.php (tras includes/establecimiento-bootstrap.php) pide la carta por AJAX/fetch al endpoint; carrito.php puede volver a pedir la misma página para sugerencias u ofertas ligadas al establecimiento.

“Publicar” en el sentido mínimo es el commit del paso 8 (pin markers + slug + sede). Lo demás es evolución de contenido y canales (mapa home, SEO, marketing en dashboard_empresa_marketing.php, etc.).

Cupones (cinta #estCuponesBelt en la ficha pública)

  1. Admin del sitio: company/dashboard_admin.php con marker_id del pin elegido. En el menú lateral, bloque Marketing: Crear Cupones → URL ?marker_id=…&section=crear-cupones (include company/sections/establecimiento_crear_cupones.php). Configurar Cartillassection=configurar-cupones (mismo archivo establecimiento_configurar_cupones.php que el alias configurar-cartillas).
  2. Dueño del establecimiento (login pin): company/dashboard_establecimiento_panel.php expone las mismas entradas de cupones bajo marketing cuando el tipo de negocio lo permite (crear-cupones, configurar-cupones). Resumen alterno: dashboard_establecimiento.php enlaza a gestión de cupones vía flujo simple.
  3. Base de datos: los cupones que alimentan la ficha están en la tabla coupons, con establishment_id = markers.id del pin.
  4. API de lectura: paginas/get_pagina_establecimiento.php?marker_id=… (y la copia bajo api/chancay/paginas/ si el front apunta allí) agrega al JSON el array coupons (consulta acotada, p. ej. orden por created_at DESC).
  5. Vista pública: establecimiento.php llama Api.getPaginaEstablecimiento(markerId); si hay cupones, setCuponesBelt() muestra #estCuponesBelt y rellena #estCuponesScroll. Si el array viene vacío, fallback: Api.getCupones() y filtro por establishment_id. El badge “HOT” en la cinta es solo maquetación en el JS, no un campo “hot” en BD.

Canje en pedidos (código al pagar, POS, marcar usado) usa sobre todo cupones_canjeados y lógica en company/sections/establecimiento_ordenes.php; eso es distinto del listado promocional de la banda en la ficha.

1 · ¿Quién entra y por qué URL?

Núcleo

Datos compartidos
MySQL: empresa, markers, sedes, productos…

Público

Visitante
/ mapa · /{slug} · APIs lectura

Staff

login_admin.php
dashboard_admin · marcadores

Alta ERP

wizard_alta_empresa.php
Solo si sesión admin. Pasos 1–8

Tenant

login_empresa.php
empresa_usuario → panel ERP

Local

login_establecimiento.php
Ficha / catálogo legacy Fase B

Lectura web

get_pagina_establecimiento
JSON carta + ERP si aplica

2 · Wizard alta empresa (inicio “desde cero” del tenant)

Archivo: company/wizard_alta_empresa.php. Si no hay admin_logged_in → redirección a login_admin.php. Borrador admin_wizard_empresa_draft; al final: empresa, sedes, mapa, catálogo ERP…

Gate

Admin logueado
$_SESSION admin

Wizard

Pasos 1→8
Identidad · Mapa · Sedes · … · Productos

BD

empresa
tenant + panel_marker_id

BD

sedes + map_marker_id
enlaza pin público

Mapa web

markers + slug
provision_marker_for_sede()

BD

empresa_producto
catálogo POS / web ERP

3 · Cómo encaja con la web pública

Origen config

Wizard (admin)
o carga manual en panel

Gestión

login_empresa
mantiene productos / sedes

Gestión

login_establecimiento
menú legacy / Fase B

Público

markers + slug
ficha establecimiento

Include

establecimiento-bootstrap
slug → markers.id

Vista

establecimiento.php
HTML + JS ficha

Lectura

get_pagina_establecimiento
paginas/ + api/chancay/

4 · Diagrama maestro: de login admin al carrito

Una sola vista del recorrido: staff crea tenant → tablas MySQL → paneles empresa / establecimiento → visitante lee carta y puede ir al carrito. Las aristas son lectura/guardado lógico, no siempre un include directo.

Staff

login_admin.php
sesión admin

Staff

dashboard_admin.php
menú + wizard

Wizard

wizard_alta_empresa.php
pasos 1–8 UI

Borrador

admin_wizard_…draft
+ sesión PHP

Paso 8

wizard_persist…
BEGIN … COMMIT

BD

empresa
tenant

BD

sedes
map_marker_id

BD

markers
slug URL pública

BD

areas
por sede

BD

empresa_almacen
stock

BD

categorias
ERP por área

BD

empresa_producto
carta ERP

BD

empresa_usuario
+ rol owner

Legacy

productos
menú pin sin ERP sede

Tenant

login_empresa.php
empresa_id sesión

ERP

dashboard_empresa_*.php
resumen · sedes · gestión · ventas

Pin

login_establecimiento.php
dueño ficha

Pin

dashboard_establecimiento.php
panel + panel_marker

Público

index / mapa
/{slug}

Include

establecimiento-bootstrap
resuelve id pin

Vista

establecimiento.php
ficha + carta UI

JSON

get_pagina_establecimiento
paginas · api/chancay

Lógica

empresa_gestion_pos_catalog_rows
si sede↔pin ERP

Checkout

carrito.php
reusa API carta