FORMULAS DISEÑO DE DOCUMENTOS

Para sumar la cantidad de artículos en factura simplificada

[<SUM(<LineasFra."UNIDADES">,DetailData1)>]

___________________________________________________________________________________

Para calcular el descuento total en una factura simplificada

[((<SUM(<LineasFra."IMPORTE">*<LineasFra."UNIDADES">,DetailData1)>)-(<CabeceraFra."IMPORTEPAGADO">)-(<CabeceraFra."TOTAL_DESCUENTO">))-<CabeceraFra."IMPORTE_TOTAL">]

___________________________________________________________________________________

TITULO

CODIGO

___________________________________________________________________________________

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

QUITAR ESPACIO EN BLANCO EN PIE DE PAGINA PARA FACTURAS A4

Cuando una factura de A4 tiene muchas líneas y se generan 2 hojas o más, en la primera hoja se muestra un espacio en blanco bastante grande.
Esto es debido a que ese espacio en blanco es el espacio reservado para el pie de página. Para «eliminar» ese espacio vamos a reducir el tamaño del pie de pagina al mínimo posible pero manteniendo la información.

Paso 1:

Vamos a añadir un nuevo bloque utilizando la opción de «insertar banda» y seleccionaremos la opción de «Pie».


Esto nos va a crear un nuevo bloque «Footer» que será donde añadiremos los campos.

Paso 2:

Vamos a desplazar los campos del pie al nuevo «Footer» que hemos creado asegurándonos que los campos están siempre dentro del espacio reservado. Si necesitamos más espacio solo tenemos que ampliar el tamaño del bloque «Footer».

Paso 3:

Finalmente, reduciremos el tamaño del bloque «Pie» que previamente hemos dejado vacío al tamaño que queramos que reserve. Este bloque se podría utilizar como «margen inferior» si se quisiera añadir un margen. Muy importante no eliminar el bloque «Pie».

Cómo realizar un rag correctamente

Realizar una COPIA DE SEGURIDAD de la Base de Datos «GLOP.FDB».

Para hacer esta copia GLOP debe estar cerrado y ningún terminal conectado (en caso de tener varios terminales en red)       

Hay que asegurarse además cual es la Base de Datos que está usando el programa y la ubicación de la misma.

Esto lo podemos comprobar en CONFIGURACION/MI GLOP

image.png

O en caso de no tener acceso al programa, en el archivo de configuraciones GLOP.INI que se encuentra en la carpeta donde esté instalado GLOP.

image.png

Al abrir este archivo, localizamos las líneas de [BaseDatos] para conocer la ubicación del archivo

image.png

Una vez realizada la copia de seguridad, tenemos que ejecutar el Modo MS-DOS en el ordenador. 

Para ello, pulsamos en la esquina inferior izquierda de la pantalla, sobre el LOGO de WINDOWS con Botón Derecho del ratón o con pulsación prolongada. Aparecerá un MENÚ y pulsaremos sobre BUSCAR ó EJECUTAR.

image.png

Una vez Aceptamos, entraremos en Modos MS-DOS y nos saldrá esta otra pantalla

image.png

Localizar la Carpeta donde este instalado GLOP.

Para ir a la Raiz de C: se tiene que ir bajando nivel a nivel. Para ello escribimos

cd..  y pulsamos ENTER. Cada vez que lo hagamos bajaremos un nivel (carpeta).

image.png

Una vez situados en la Raíz de C o de la Unidad de disco donde se encuentre instalado GLOP (si necesitamos ir a otra unidad de disco, sólo hay que escribir el nombre de la UNIDAD dos puntos y pulsar ENTER), tenemos que ir a la ubicación de la carpeta de GLOP, realizando el mismo proceso de antes, subir nivel a nivel.

Escribimos CD + el nombre de la Carpeta donde queremos ir.

image.png

Pulsamos ENTER y ya estaremos ubicados dentro de la Carpeta.

Una vez allí, escribimos  RAG.BAT  y pulsamos ENTER para que se ejecute el mismo.

image.png

Tras pulsar ENTER el rag comenzará a ejecutarse y no se debe interrumpir hasta que finalice (volverá a dejar el cursor tras el nombre de la Carpeta de Instalación de Glop cómo aparece en la Imagen).

image.png

CÓMO ACTUALIZAR GLOP

Requisitos para poder actualizar de versión

· Disponer de licencia en fecha
· Disponer del instalador de la última versión
· Conocer la versión de la cual partimos ya que el proceso varía según la versión del firebird de nuestra versión de Glop al existir versiones antiguas en firebird 2.5 y versiones más actuales con firebird 3.0

En ambos casos antes de realizar la instalación, hacer un copia de seguridad y luego ejecutar el comando rag.bat

Procedimiento

Versiones Firebird 2.5
Si tu versión actual de GLOP todavía es de firebird 2.5, te aconsejamos realizar una primera actualización a la última versión disponible con ese firebird 2.5 (Junio17.2) antes de realizar la actualización a la última versión publicada. Puedes solicitar esa versión Junio17.2 a soporte@glop.es
Una vez estemos en esta versión ya procederemos a pasar a la última versión publicada.

Versiones Firebird a 3.0
Una vez tenemos cualquier versión de firebird 3.0 y hemos realizado el rag, prodemos proceder directamente a instalar la última versión publicada.

Precauciones y posibles conflictos

Durante la instalación de la nueva versión pueden aparecer ciertos mensajes de error por el contenido de la base de datos


En caso de aparecer este mensaje la opción más rápida sería realizar un reiniciar sistema para que no dejen problemas en el proceso de actualización las informaciones huérfanas de datos que haya podido quedar tras realizarse borrados de registros en versiones anteriores. (por ejemplo, borrados de artículos que ya no eran vendibles)

He actualizado la versión y no me imprime el QR del verifactu.
Esto es un problema de diseño, sigue el siguiente enlace para comprobar que lo tienes todo correctamente

Manual para cambiar de pagador un sitio

Para realizar un cambio de pagador de un sitio de App primero deberemos dirigirnos a la ficha del sitio y seguidamente pulsar en el botón de cambiar de pagador.

Esta acción mostrará un modal en el cual se deberá indicar el correo electrónico del nuevo pagador, este usuario ya debe existir en App.glop.es y no podrá ser ya administrador pagador de otro sitio.

CONDICIONES ALTA LICENCIAS

Licencia kit digital:
En el formulario de AppGlop, dependiendo de la cantidad de kit digital de la licencia vamos a indicar la cantidad de kit digital y de importe.
Al activar una licencia de kit digital, ponemos en el campo de kit digital 1 y el importe de esa licencia es 0.
Si por ejemplo vamos a poner 2 licencias, una con kit digital y otra no, en el campo kit digital ponemos 1 (con su importe 0) y en la cuota ponemos el importe de la otra licencia que no es kit digital.
El correo del pagador tiene que ser el correo del cliente.

Licencia Cloud Saas / GB Saas:
A la hora de rellenar el formulario, solo se pone el producto, no se pone la cuota mensual de 10’90/11’90

Módulo Carta digital solo pedidos (pide y paga sin pagar):
Hay que seleccionar la opción de carta digital pedidos antiguo

Datos en licencias Tbai:
Las licencias que son del país vasco y van a usar Tbai no pueden usar el símbolo &

Modulo GlopDroid cliente final web en pago por uso
El modulo de GlopDroid a cliente final web Glop (no tickedo) hay que poner el precio de cliente final del producto de glopdroid 1 puesto, es deir los 8’9€ aunque sea ilimitado.

Saas tickedo
correo pagador: contacto@tickedo.es
A nivel de lics, poner business, pago por uso y activar siempre api.
Al rellenar formulario, no se añade el producto «cloud».
Tickedo no vende GB, si quieren una «GB» es GL + Cloud
Si es de gestión, poner producto «gestión»
tickedo no vende droid cantidad 1, siempre es ilimitado a precio de 1
A la hora de pedir el modulo a comercial, le van a indicar la cantidad de droids a asignar a la licencia.
Ahora tickedo vende gratuitamente el modulo cloud y solo se factura la cuota.

Kit digital tickedo/Glop
Distribuidor: Mobisoft cliente final
Comentarios: Kit digital + MOD asociados a kit digital
Tickedo no pedirá soporte en el registro. Se encarga de consultar con el cliente si quiere contratar soporte en la segunda justificación y rellenar el formulario de alta de soporte

Volver arriba

Acceder a WikiGlop