📄 CatalogQR – Base de Datos (Esquema)

Este documento detalla la estructura física de la base de datos en Supabase, incluyendo campos de integración y configuraciones avanzadas.


🏢 Tabla: businesses (Tenants)

CampoTipoDescripción
iduuid (PK)Identificador único del negocio.
owner_iduuid (FK)Relación con el Merchant en merchant_profiles.
slugtext (Unique)URL amigable para el catálogo público.
whatsapp_numbertextNúmero vinculado para notificaciones y pedidos.
wompi_public_keytextKey para el widget de pagos del negocio.
wompi_integrity_secrettextSecreto para firmar transacciones de compras.
opening_hoursjsonbHorarios de atención por día de la semana.
allows_deliverybooleanFlag para habilitar servicio a domicilio.
CampoTipoDescripción
skutextCódigo de inventario único.
pricenumericPrecio de venta al público.
track_inventorybooleanSi el sistema debe descontar stock automáticamente.
stock_quantityintegerCantidad disponible en tiempo real.
extrasjsonbOpciones adicionales (ej. cobertura, toppings, tallas).

🛒 Tabla: orders (Transacciones)

CampoTipoDescripción
friendly_idtextID corto y legible para humanos (ej. ABC-123).
statustextFlujo: pending, confirmed, cooking, delivered, etc.
payment_statustextEstado en pasarela: pending, paid, voided.
payment_methodtextMedio: cash, wompi.
pending_changesjsonbModificaciones sugeridas por el cliente pendientes de aprobación.

⚙️ Tabla: saas_settings (Configuración Global)

Registro único (id: 'global') que controla la plataforma.

  • Integraciones Maestro: wompi_sandbox_keys, wompi_production_keys.
  • Comunicaciones: waha_api_url, chatwoot_url, smtp_host.
  • Estado: maintenance_mode, site_name.

🛠️ Triggers y Funciones Especiales

  • update_stock_on_order: Función PL/pgSQL que descuenta inventario al marcar una orden como pagada.
  • sync_friendly_id: Generador de identificadores aleatorios únicos para las órdenes.

🔗 Documentación Relacionada