esofitec. CoreDocs

esofitec. CoreDocs

Addons estándar / Conector eCommerce

Arquitectura técnica

Componentes del sistema#

El sistema se compone de dos piezas desplegables independientes:

Componente Descripción
Servicio de sincronización Proceso principal (.exe) que se instala como servicio de Windows. Ejecuta los ciclos de importación y exportación.
Extensión a3ERP DLL listener y diccionario de datos que extiende a3ERP con las tablas y eventos necesarios para la integración.

Tecnología#

Elemento Valor
Framework .NET Framework 4.8
Tipo de proceso Aplicación de consola registrada como servicio de Windows
Arquitectura objetivo x86 (principal), x64 (secundario)
Sistema operativo Windows Server / Windows 10 o posterior

Flujo de ejecución#

En cada ciclo el servicio:

  1. Valida la licencia (incluye verificación de hora vía NTP).
  2. Conecta al ERP a3ERP vía la API NAX.
  3. Obtiene la lista de tiendas activas de la configuración.
  4. Para cada tienda, carga los plugins configurados y ejecuta:
  5. Importación de documentos de venta (tienda → ERP).
  6. Exportación de artículos y stock (ERP → tienda).
  7. Transmisión del estado de preparaciones (solo Shopify).
  8. Desconecta la tienda y pasa a la siguiente.
  9. Si hay errores, envía notificación por correo.

Conectores por plataforma#

Cada plataforma de tienda tiene un conector propio que implementa la misma interfaz genérica. Esto permite que el motor de importación/exportación sea independiente de la plataforma.

Plataforma Protocolo Autenticación Dirección Librería Particularidades
WooCommerce REST API v3 Consumer Key + Consumer Secret Bidireccional WooCommerceNET (fork) Timeout 90s; paginación 25 items; soporte IDs long y BOM UTF-8
Shopify REST API + GraphQL Bearer (Access Token) Bidireccional ShopifySharp (fork) Rate limiting 510ms; API 2023-07; fulfillments completos
Prestashop REST API XML API Key (Basic HTTP) Solo importación RestSharp 110.2.0 Exportación no implementada; compatible PS7/PS8/PS9
LabelGrup + Prestashop REST API propietaria Credenciales LabelGrup Solo importación RestSharp 110.2.0 Servidor intermediario; packs y tallas complejas

Sistema de plugins#

El servicio carga plugins dinámicamente en tiempo de ejecución mediante MEF (Managed Extensibility Framework). Los plugins permiten adaptar el comportamiento de la sincronización sin modificar el núcleo del producto.

Los plugins se colocan en la carpeta Plugins/ del directorio de instalación y se activan automáticamente al arrancar el servicio.

Plugins disponibles#

Plugin Plataforma Propósito
Sit.ECPluginFactNF01 WooCommerce, Shopify, Prestashop Establece el número de factura del ERP a partir del número de orden de la tienda
Sit.ECPluginMapAlm Shopify Mapeo de almacenes entre Shopify y el ERP; distribuye stock en múltiples ubicaciones
Sit.ECPluginWooAdvancedCoupons WooCommerce Procesa descuentos del plugin «Advanced Coupons» prorrateando por tipo de IVA
Sit.ECPluginWooElexRBP WooCommerce Sincroniza tarifas del ERP con el sistema de precios por rol de «Elex Role Based Pricing»
Sit.ECPluginWooWCpdfInvoices WooCommerce Establece el número de factura a partir del plugin «Invoices for WooCommerce» (WCpdf)

Integraciones externas#

Sistema Protocolo Dirección
a3ERP (Wolters Kluwer) API NAX (COM/SQL) Bidireccional
WooCommerce REST API v3 Bidireccional
Shopify REST API + GraphQL Bidireccional
Prestashop REST API XML Entrada (importación)
LabelGrup (módulo Prestashop) API REST propietaria Entrada (importación)
Servicio de licencias Esofitec HTTPS Validación periódica
Servidor NTP UDP/123 Verificación de hora (licenciador)
Servidor de correo SMTP / Microsoft Graph Salida (notificaciones de error)

Hooks de plugins#

Los plugins reciben notificaciones en momentos clave del proceso de sincronización mediante métodos hook. Cada plugin hereda de PluginBase e implementa solo los hooks que necesita. Cada hook tiene acceso al contexto de ejecución (ICommonObject), que expone los datos de la tienda activa y la lista de errores acumulados.

Método hook Momento de invocación Plataforma
ExpOnDeterminarAlmacenesStockERP() Al calcular el stock a exportar desde el ERP Todas
WooAntesDeActualizarProduct() Antes de enviar un producto a WooCommerce WooCommerce
WooOnCargarFacturaDesdeTienda() Tras deserializar una factura de WooCommerce WooCommerce
WooOnCargarPedidoDesdeTienda() Tras deserializar un pedido de WooCommerce WooCommerce
SpfOnCargarPedidoDesdeTienda() Tras deserializar un pedido de Shopify Shopify
SpfOnCargarFacturaDesdeTienda() Tras deserializar una factura de Shopify Shopify
SpfOnEstablecerStocksVarianteProducto() Al establecer stock de una variante en Shopify Shopify
PshOnCargarFacturaDesdeTienda() Tras deserializar una factura de Prestashop Prestashop
PshOnCargarFacturaRectificativaDesdeTienda() Tras deserializar una nota de crédito de Prestashop Prestashop

Seguridad#

  • Las credenciales de conexión a las tiendas se cifran con RSA en Configuracion.xml.
  • Todos los ensamblados están firmados con clave fuerte (key.snk).
  • Los binarios de Release se distribuyen ofuscados (ConfuserEx). No distribuir los binarios sin ofuscar del directorio Release; utilizar siempre los de ReleaseConfused.