Documentación App Frontend

Bienvenido a la documentación completa del proyecto Miglop.es V2 Frontend.

📚 Índice de Documentación

Para Empezar

  1. 00-PROJECT-OVERVIEW.md

    • Resumen general del proyecto
    • Stack tecnológico
    • Arquitectura básica
    • Variables de entorno
    • Scripts disponibles
    • 👉 EMPIEZA AQUÍ
  2. 08-ONBOARDING-GUIDE.md

    • Guía completa para nuevos desarrolladores
    • Setup del entorno
    • Primera tarea
    • Workflow de Git
    • 👉 LEE ESTO SI ERES NUEVO EN EL PROYECTO

Arquitectura y Estructura

  1. 01-PROJECT-STRUCTURE.md

    • Estructura de carpetas detallada
    • Organización de componentes
    • Layouts y vistas
    • Stores y servicios
    • Convenciones de nomenclatura
  2. 04-COMPONENT-PATTERNS.md

    • Patrones de componentes Vue 3
    • Composition API
    • Props y Events
    • Composables
    • DevExtreme y Element Plus
    • Mejores prácticas

Tecnologías y Herramientas

  1. 02-LIBRARIES-AND-DEPENDENCIES.md

    • Todas las librerías usadas
    • Configuración de cada librería
    • Versiones y actualizaciones
    • Gestión de dependencias
  2. 03-API-COMMUNICATION.md

    • ApiService
    • JwtService
    • Cómo hacer llamadas a la API
    • Manejo de errores
    • Ejemplos de uso
    • Abort Controllers

Operaciones y Mantenimiento

  1. 07-DEPLOYMENT.md

    • Estrategia de despliegue
    • Entornos (develop, staging, production)
    • Scripts de build
    • CI/CD
    • Configuración de servidores
    • Troubleshooting
  2. 09-UNUSED-COMPONENTS-ANALYSIS.md

    • Análisis de componentes no utilizados
    • Recomendaciones de limpieza
    • Proceso de eliminación segura
    • ⚠️ REVISAR ANTES DE ELIMINAR COMPONENTES

🎯 Guías por Rol

Para Nuevos Desarrolladores

Lectura recomendada en orden:

  1. 00-PROJECT-OVERVIEW.md – 30 min
  2. 08-ONBOARDING-GUIDE.md – 1 hora
  3. 01-PROJECT-STRUCTURE.md – 1 hora
  4. 04-COMPONENT-PATTERNS.md – 1 hora
  5. 03-API-COMMUNICATION.md – 30 min

Total: ~4 horas de lectura

Para Desarrolladores Existentes

Para añadir nuevas features:

Para debugging:

Para deploys:

Para Tech Leads

Para revisión de arquitectura:

Para limpieza de código:

Para onboarding de equipo:

Para DevOps

Para configuración de CI/CD:

🔍 Búsqueda Rápida

¿Cómo hacer…?

Pregunta Documento Sección
¿Cómo crear un componente? 04-COMPONENT-PATTERNS.md Estructura de Componentes
¿Cómo llamar a la API? 03-API-COMMUNICATION.md ApiService
¿Cómo usar un store? 04-COMPONENT-PATTERNS.md Composables
¿Cómo hacer deploy? 07-DEPLOYMENT.md Proceso de Despliegue
¿Qué librerías usar para X? 02-LIBRARIES-AND-DEPENDENCIES.md Por categoría
¿Dónde está el componente Y? 01-PROJECT-STRUCTURE.md Carpeta src/components
¿Cómo configurar el entorno? 08-ONBOARDING-GUIDE.md Configuración Inicial

¿Qué es…?

Concepto Documento Sección
ApiService 03-API-COMMUNICATION.md ApiService
Pinia Stores 04-COMPONENT-PATTERNS.md Composables
DevExtreme 02-LIBRARIES-AND-DEPENDENCIES.md UI Component Libraries
Router Guards 01-PROJECT-STRUCTURE.md src/router
Build Scripts 00-PROJECT-OVERVIEW.md Scripts Disponibles

📊 Estado de la Documentación

Documento Estado Última Actualización
00-PROJECT-OVERVIEW.md ✅ Completo 20/10/2025
01-PROJECT-STRUCTURE.md ✅ Completo 20/10/2025
02-LIBRARIES-AND-DEPENDENCIES.md ✅ Completo 20/10/2025
03-API-COMMUNICATION.md ✅ Completo 20/10/2025
04-COMPONENT-PATTERNS.md ✅ Completo 20/10/2025
07-DEPLOYMENT.md ✅ Completo 20/10/2025
08-ONBOARDING-GUIDE.md ✅ Completo 20/10/2025
09-UNUSED-COMPONENTS-ANALYSIS.md ✅ Completo 20/10/2025

🤝 Contribuir a la Documentación

Esta documentación es un documento vivo. Si encuentras:

  • Información desactualizada
  • Errores o inexactitudes
  • Secciones que faltan
  • Oportunidades de mejora

Por favor, actualiza la documentación:

  1. Edita el archivo markdown correspondiente
  2. Haz commit con mensaje descriptivo: docs: actualizar [sección]
  3. Crea Pull Request

📧 Contacto

Para preguntas sobre la documentación o el proyecto:

  • Tech Lead: [Nombre/Email]
  • Maintainer de Docs: [Nombre/Email]
  • Canal de Slack/Teams: #frontend-dev

Generado: 20/10/2025 Versión: 1.0.0 Proyecto: Miglop.es V2 Frontend Stack: Vue 3 + TypeScript + Vite

Configuración Comeback

Configuración

Pasos a seguir:

Activaremos Comeback desde configuración-terminales-modulos-api-fidelización-comeback

Lo activaremos, introduciremos las credenciales de acceso, y podremos elegir entre que nos muestre o no la pantalla de asignación fidelización directamente al cobrar una mesa desde el TPV. En caso de no activar esta configuración, para mostrar la pantalla de asignación de fidelización, deberemos hacer clic sobre el botón de fidelización en la pantalla de cobro.

Tras esto, al realizar una venta, nos solicitará el código de fidelización del cliente, bien sea automáticamente si hemos activado el parámetro o bien al pulsar sobre el botón fidelización.

A TENER EN CUENTA

Para imprimir en el ticket el código QR para su escaneo con diferente información sobre el ticket y la api-key de comeback, se debe seguir el siguiente manual: https://soporte.glop.es/manual-activar-qr-informacion-en-ticket/

Documentación Odoo App Backend

Resumen Ejecutivo

Se ha implementado una integración completa entre el sistema Miglop.es y Odoo para la gestión automatizada de facturas. Esta integración permite:

  • Creación automática de facturas en Odoo cuando se procesan pagos en Stripe
  • Sincronización de datos entre ambos sistemas
  • Descarga de facturas PDF directamente desde Odoo
  • Priorización de facturas de Odoo sobre las de Stripe en la interfaz de usuario

Arquitectura de la Integración

1. Librería Principal: app/Api/Odoo/

OdooClient (app/Api/Odoo/OdooClient.php)

Cliente principal que maneja la conexión con Odoo mediante XML-RPC y HTTP.

Características principales:

  • Autenticación dual (XML-RPC y HTTP con cookies)
  • Gestión de sesiones y cookies
  • Métodos para ejecutar operaciones en Odoo
  • Manejo de errores y excepciones

Métodos clave:

  • authenticate(): Autenticación XML-RPC
  • authenticateWithHttp(): Autenticación HTTP con cookies
  • execute(): Ejecutar operaciones en Odoo
  • getInvoicesByEmail(): Obtener facturas por email del cliente
  • downloadInvoicePdf(): Descargar PDF de facturas

Servicios Especializados

InvoiceService (app/Api/Odoo/Services/InvoiceService.php)

  • Gestión completa de facturas en Odoo
  • Creación, actualización, consulta y eliminación
  • Generación de PDFs
  • Integración con datos de Stripe

PartnerService (app/Api/Odoo/Services/PartnerService.php)

  • Gestión de clientes/proveedores
  • Búsqueda por email, CIF, nombre
  • Creación automática de clientes

ProductService (app/Api/Odoo/Services/ProductService.php)

  • Gestión de productos
  • Búsqueda y creación automática
  • Mapeo con productos de Stripe

Modelo de Datos

Invoice (app/Api/Odoo/Models/Invoice.php)

  • Modelo auxiliar para construir facturas
  • Métodos fluidos para configuración
  • Soporte para diferentes tipos de factura

2. Configuración

Archivo de Configuración (config/odoo.php)

return [
    'odoo_url'         => env('ODOO_URL'),
    'odoo_database'    => env('ODOO_DATABASE'),
    'odoo_username'    => env('ODOO_USERNAME'),
    'odoo_apikey'      => env('ODOO_APIKEY'),
    'odoo_apipassword' => env('ODOO_APIPASSWORD'),
    'odoo_id_tax'      => 51
];

Variables de entorno requeridas:

  • ODOO_URL: URL de la instancia Odoo
  • ODOO_DATABASE: Nombre de la base de datos
  • ODOO_USERNAME: Email del usuario
  • ODOO_APIKEY: Clave API del usuario
  • ODOO_APIPASSWORD: Contraseña del usuario

Funcionalidades Implementadas

1. Creación Automática de Facturas

Webhook de Stripe (StripeWebhookController::handlePushInvoiceToOdoo)

Flujo de trabajo:

  1. Trigger: Se ejecuta cuando Stripe procesa un pago exitoso
  2. Validación: Verifica que el sitio tenga un pagador con datos fiscales
  3. Gestión de Cliente: Busca o crea el cliente en Odoo usando el CIF
  4. Creación de Factura: Convierte los datos de Stripe a formato Odoo
  5. Publicación: La factura se crea y publica automáticamente

Datos procesados:

  • Información del cliente (CIF, nombre, dirección)
  • Detalles de la factura (fecha, importe, moneda)
  • Líneas de factura (productos, cantidades, precios)
  • Impuestos aplicables

Logging completo para auditoría y debugging.

2. Consulta de Facturas

Endpoint: getInvoicesByPagador

Funcionalidad:

  • Obtiene facturas tanto de Stripe como de Odoo
  • Prioriza las facturas de Odoo sobre las de Stripe
  • Filtra facturas duplicadas (las de Odoo tienen prioridad)
  • Genera enlaces de descarga para PDFs de Odoo

Lógica de priorización:

// Filtrar facturas de Stripe que ya existen en Odoo
$invoices = $invoices->whereNotIn('id', $odoo_invoices->pluck('stripe_id')->filter());
// Combinar ambas fuentes, priorizando Odoo
$invoices = $invoices->merge($odoo_invoices);

3. Descarga de Facturas PDF

Endpoint: /api/v1/glop/sitios/invoices/odoo/{id}

Funcionalidad:

  • Descarga directa de PDFs desde Odoo
  • Autenticación HTTP con cookies
  • Headers apropiados para descarga de archivos
  • Manejo de errores robusto

Implementación:

public function getInvoicesOdooPdf($invoiceid, OdooClient $odoo_client) {
    $contentPdf = $odoo_client->downloadInvoicePdf($invoiceid, false);
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="invoice_' . $invoiceid . '.pdf"');
    header('Content-Length: ' . strlen($contentPdf));
    echo $contentPdf;
    exit();
}

Flujo de Datos

1. Proceso de Creación de Factura

2. Proceso de Consulta de Facturas

Características Técnicas

1. Autenticación Dual

  • XML-RPC: Para operaciones de datos
  • HTTP con cookies: Para descarga de PDFs

2. Manejo de Errores

  • Logging detallado en canal ‘dev’
  • Excepciones específicas para cada tipo de error
  • Rollback automático en caso de fallos

3. Codificación de Caracteres

  • Conversión UTF-8 a ISO-8859-1 para compatibilidad
  • Manejo correcto de caracteres especiales

4. Mapeo de Datos

  • Conversión automática de formatos Stripe a Odoo
  • Preservación de referencias entre sistemas
  • Gestión de impuestos y monedas

Endpoints de la API

1. Consulta de Facturas

  • URL: GET /api/v1/glop/sitios/invoices
  • Parámetros: start_date, end_date, descargar, tipo
  • Funcionalidad: Obtiene facturas combinadas de Stripe y Odoo

2. Descarga de PDF

  • URL: GET /api/v1/glop/sitios/invoices/odoo/{id}
  • Funcionalidad: Descarga PDF de factura específica de Odoo

Configuración Requerida

1. Variables de Entorno

ODOO_URL=https://tu-instancia.odoo.com
ODOO_DATABASE=tu_base_datos
ODOO_USERNAME=tu_email@empresa.com
ODOO_APIKEY=tu_api_key
ODOO_APIPASSWORD=tu_password

2. Permisos en Odoo

  • Acceso a módulo de facturación
  • Permisos de lectura/escritura en account.move
  • Permisos de lectura/escritura en res.partner
  • Permisos de lectura/escritura en product.product

3. Configuración de Impuestos

  • ID del impuesto configurado en config/odoo.php
  • Impuestos activos en Odoo para el tipo de factura

Beneficios de la Integración

1. Automatización

  • Eliminación de procesos manuales de facturación
  • Sincronización automática entre sistemas
  • Reducción de errores humanos

2. Consistencia de Datos

  • Una sola fuente de verdad para facturas
  • Sincronización en tiempo real
  • Historial completo de transacciones

3. Mejora de la Experiencia de Usuario

  • Acceso unificado a todas las facturas
  • Descarga directa de PDFs
  • Interfaz simplificada

4. Cumplimiento Fiscal

  • Facturas oficiales generadas en Odoo
  • Cumplimiento de normativas españolas
  • Trazabilidad completa

No mostrar facturas en portal cliente Stripe

Desactivar Odoo

  1. Para desactivar odoo: comentar la función StripeWebhookController::handlePushInvoiceToOdoo
  2. Desactivar la búsqueda de Odoo
Volver arriba

Acceder a WikiGlop