Auditoría · Proyecto 03614 · b2b.jmcpool.com

Falta el envío gratis desde el importe acordado, comprar sin stock en 522 productos, el presupuesto al ERP, el panel con los 4 indicadores, los documentos del ERP y la mitad de la lógica de almacenes

La tienda y el conector sostienen la operación diaria: catálogo, clientes, precios por cliente, stock cada 5 minutos, recogida por almacén, «Condiciones habituales», guardado de presupuestos y pedidos al ERP. Lo que no existe son las piezas de «Lo que falta». Aparte hay fallos de hoy: precios sin actualizar desde el 7-oct, pedidos sin sincronizar, facturas abiertas al público, registro abierto y cambios del conector hechos en producción sin pasar por git.

15 oct 2026PrestaShop 8.2.3 + conector AHORA ERPProducción consultada solo en lectura

Lo que falta

Según la toma de requerimientos de la tienda y el contrato del conector. Cada punto indica qué hay hoy.

En la web (tienda)4 puntos

Envío gratis a partir del importe acordado

R2.11 · R4.6c · R4.7c

HoyHay tarifas por peso y zona, pero ningún umbral: un pedido por encima del importe acordado paga portes.

Panel del cliente con los 4 indicadores acordados

R2.04 · R2.05 · R4.7e · R5.07

HoyFaltan presupuestos pendientes, pedidos servidos, histórico y evolución de facturación y productos más comprados. Hoy muestra gasto del mes, gasto total y pedidos recientes, solo de compras hechas en la web.

Almacenes: la mitad de la lógica acordada

R4.8.0b · R4.8.2 · R4.8.3 · R4.8.4 · R4.8.5 · R5.08

HoyFaltan: elegir desde la ficha el almacén de salida, pasar las líneas entre «Total» y «Almacén X» con validación de stock, las reglas y mensajes del carrito para evitar mezclas, forzar la combinación según Envío o Recogida, y recordar la elección entre carritos. Hoy se ve el stock de los 5 almacenes en la ficha y en el checkout se elige el almacén de recogida con botones de opción, que viaja al ERP.

Comprar sin stock en todos los productos

R2.08

HoyFunciona en 3.357 productos. En 522 productos activos sin stock se rechaza el pedido.

En el conector con el ERP3 puntos

Facturas del ERP en la zona de cliente

C1.09 · C3.3a · C3.3b · C3.3c · C3.4h

HoyPedidos de la web y presupuestos guardados ya se ven en Mi cuenta. Las facturas no: hay un único PDF subido a mano, sin sincronización con el ERP, y el enlace de descarga se abre sin iniciar sesión. No se ha encontrado la sincronización de pedidos y presupuestos de otros canales.

Envío del presupuesto al ERP, desde «Guardar presupuesto»

R4.7a · R5.07

HoyGuardar el carrito como presupuesto está hecho en la tienda. El conector solo envía pedidos: no tiene el procedimiento de presupuestos.

Datos del ERP para los indicadores del panel (la otra mitad del panel de la web)

R4.7e · R2.05

HoyLos indicadores actuales salen de los pedidos de la web, no del ERP.

Está hecho, pero falla o tiene riesgo hoy

Toma de requerimientos de la tienda

41 de 57 puntos cumplen
  • 41 Cumple
  • 7 Parcial
  • 9 No cumple
  • 0 No verificable

Contrato del conector con el ERP

42 de 47 puntos cumplen
  • 42 Cumple
  • 4 Parcial
  • 1 No cumple
  • 0 No verificable

Qué hacer primero

  1. 1
    Arreglar la sincronización nocturna de precios y poner alertas

    Los clientes ven precios de hace 8 días y el fallo es silencioso.

    Esfuerzo medio
  2. 2
    Bloquear el acceso directo a las facturas y servir los PDF solo por el controlador

    Hoy el PDF se abre sin iniciar sesión; con las facturas reales quedarían todas expuestas.

    Esfuerzo pequeño
  3. 3
    Dejar coherentes los 4 pedidos «no sincronizados» y avisar de futuros fallos

    Pedidos que el ERP puede no conocer; hoy nadie se entera.

    Esfuerzo pequeño
  4. 4
    Llevar al repositorio todo lo modificado en producción en el conector

    Un despliegue desde git hoy borraría el arreglo de imágenes y la traza de pedidos.

    Esfuerzo pequeño
  5. 5
    Activar el envío gratuito a partir del importe acordado

    Requisito explícito en 3 apartados de la toma; es configuración.

    Esfuerzo pequeño
  6. 6
    Permitir comprar sin stock en todos los productos (PS_ORDER_OUT_OF_STOCK=1)

    522 productos activos no se pueden pedir.

    Esfuerzo pequeño
  7. 7
    Cerrar el registro público

    Lo prohíben ambos documentos.

    Esfuerzo pequeño
  8. 8
    Sacar las credenciales del ERP del código, quitar dump() y usar un usuario de ERP con permisos mínimos

    Seguridad y estabilidad.

    Esfuerzo pequeño
  9. 9
    Diagnosticar y reimportar los 556 productos sin imagen

    16 % del catálogo activo sin foto.

    Esfuerzo medio
  10. 10
    Implantar documentos del ERP en la zona de cliente (facturas, pedidos y presupuestos)

    Partida sin entregar; también alimenta el panel de KPIs.

    Esfuerzo grande
  11. 11
    Presupuesto al ERP y panel con los 4 KPIs acordados

    Personalizaciones contratadas sin entregar (sin ningún commit al respecto).

    Esfuerzo grande
  12. 12
    Cerrar con JMC el alcance real de almacenes (selector de salida, migración de líneas, reglas, validación de stock del almacén)

    La mitad del diseño funcional de 4.8 no existe y puede que ya no sea lo que quieren.

    Esfuerzo medio
Ver los 104 puntos, uno por uno

Toma de requerimientos de la tienda

2 Objetivos10 de 15 cumplen

R2.00Portal nuevo en PrestaShop 8.X orientado exclusivamente a clientes profesionales (B2B), adaptado al funcionamiento del ERP.Cumple

Qué se ha vistoProducción en PrestaShop 8.2.3 + PHP 8.1, tema hijo jmcpool; todo el portal exige sesión (lbllogin) y los datos vienen del ERP AHORA vía conector.

R2.01Acceso mediante login (sin registro automático).Prioridad altaParcial

Qué se ha vistoEl acceso exige login (lbllogin) y funciona, y la pantalla de login no ofrece ningún enlace para crear cuenta. Pero la dirección /registro sigue abierta: comprobado hoy dos veces, responde 200 con el formulario de alta completo, y lbllogin la permite a visitantes sin sesión (fichero sin tocar desde el 28 de mayo). Hay 9 clientes sin vínculo con el ERP, 4 de ellos activos. La cuenta nº 8115 se creó hoy (15-oct, 15:48), está activa y tiene una visita web registrada: se creó entrando directamente por esa dirección.

Qué falta o fallaNo hay enlace visible, pero cualquiera que conozca la dirección /registro puede crear una cuenta. Sin tarifa no ve precios ni puede comprar.

Qué hacerQuitar «registration» de la lista de lbllogin, ocultar el formulario y desactivar las cuentas sin ERP que no correspondan. Esfuerzo pequeño

R2.02Visualización de presupuestos.Cumple

Qué se ha vistoMi cuenta muestra los presupuestos guardados desde la tienda. Los presupuestos del ERP forman parte de la partida de documentos del contrato.

R2.03Visualización de pedidos.Cumple

Qué se ha vistoEl historial de pedidos de Mi cuenta muestra los pedidos hechos en la web con el estado actualizado desde el ERP cada 5 minutos. Los pedidos de otros canales (teléfono, comercial) forman parte de la partida de documentos del contrato.

R2.04Visualización de productos más comprados.Prioridad mediaNo cumple

Qué se ha vistoEl panel de Mi cuenta (lbljmccustom::hookDisplayMyAccountDashboard) no tiene ningún bloque de productos más comprados.

Qué falta o fallaNo existe.

Qué hacerAñadir bloque de productos más comprados (idealmente con datos del ERP, no solo web). Esfuerzo pequeño

R2.05Visualización de la evolución de facturación.Prioridad mediaNo cumple

Qué se ha vistoEl panel muestra «Gasto del mes», «Gasto total» y la variación respecto al mes anterior, calculados solo con pedidos web (ps_orders). No hay gráfico ni serie temporal, y no usa la facturación del ERP.

Qué falta o fallaNo hay evolución de facturación; las cifras actuales solo reflejan compras web.

Qué hacerAñadir gráfico mensual de facturación alimentado desde el ERP. Esfuerzo medio

R2.06Precios personalizados por cliente, gestionados desde el ERP.Cumple

Qué se ha vistoLa función está hecha: 417.634 tarifas importadas y un grupo de precios por cliente que llega del ERP. Que la importación esté fallando desde el 7-oct se trata aparte, como fallo de hoy.

R2.07Visualización de stock con sistema binario (disponible/no disponible).Cumple

Qué se ha vistoEl cliente ve el stock por almacén con un punto verde o rojo y «N de 5 almacenes», sin cantidades, en la ficha y en el listado. La cantidad exacta se oculta con CSS y sigue en el código de la página: es un detalle de limpieza, no cambia lo que ve el cliente.

R2.08Posibilidad de realizar compras incluso sin stock.Prioridad altaParcial

Qué se ha vistoProbado en la tienda (réplica local, mismo código): un producto con stock 0 y política «permitir» se añade al carrito sin problema; uno con stock 0 y política «por defecto» se rechaza («Solo puedes comprar 0…»). En producción 3.357 productos permiten pedir sin stock y 522 activos sin stock no.

Qué falta o fallaEn esos 522 productos no se puede comprar sin stock.

Qué hacerPoner PS_ORDER_OUT_OF_STOCK=1 (o forzar out_of_stock=1 desde el conector en todos los productos). Esfuerzo pequeño

R2.09Mostrar stock por almacenes para que el cliente pueda recoger en tienda (5 almacenes).Cumple

Qué se ha vistoSe ve el stock de los 5 almacenes (punto verde o rojo) en la ficha y el listado, con actualización cada 5 minutos. La recogida en tienda está hecha: en el checkout, con «Click and collect», el cliente elige uno de los 4 almacenes con recogida activa; 13 pedidos la han usado y 9 guardaron almacén, que viaja al ERP en cada línea. Meco no admite recogida por petición de JMC.

R2.10Carrito de compra con opción de conversión a presupuesto.Cumple

Qué se ha vistoExiste la opción de guardar el carrito como presupuesto («Guardar presupuesto» en el carrito y sección «Presupuestos» en Mi cuenta). Que no llegue al ERP se trata en R4.7a.

R2.11Envío gratuito a partir del importe acordado, con cálculo automático de gastos por debajo de ese umbral.Prioridad altaNo cumple

Qué se ha vistoEl cálculo por peso y zona sí existe (tarifas en los 4 transportistas de pago). Pero no hay envío gratis: PS_SHIPPING_FREE_PRICE=0, ningún transportista con tramos por precio y ninguna regla de carrito con envío gratis; no hay código propio que lo haga.

Qué falta o fallaUn pedido por encima del importe acordado paga portes.

Qué hacerConfigurar el envío gratuito a partir del importe acordado (PS_SHIPPING_FREE_PRICE o regla de carrito) y comprobar que no afecta a Click and collect. Esfuerzo pequeño

R2.12Métodos de pago predefinidos según ERP: «mis condiciones habituales» y transferencia bancaria.Cumple

Qué se ha visto«Condiciones habituales» está hecha: es el grupo «Forma de pago habitual» (clave HABITUAL del ERP, 581 clientes). Solo la ve quien tiene esa forma de pago en el ERP; 24 pedidos reales de 12 clientes la han usado. La transferencia la ven todos los clientes activos. Redsys (tarjeta) está activo aunque no se pidió: se anota aparte.

R2.13Selección de dirección de entrega y dirección de facturación fija.Cumple

Qué se ha vistolblfixaddress bloquea la primera dirección como de facturación; las direcciones de entrega vienen del ERP (4.295 activas, sincronización horaria) y se eligen en el checkout.

R2.14Personalizaciones específicas para mostrar KPIs en el dashboard del cliente.Cumple

Qué se ha vistoHay un panel propio en Mi cuenta con indicadores (gasto del mes, gasto total, variación, pedidos del mes, pedidos recientes). Los 4 indicadores concretos acordados se evalúan en R4.7e.

4.1 Gestión del proyecto1 de 1 cumplen

R4.1KAM asignado, reunión de kickoff, coordinación y seguimiento en la plataforma Genius.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado (KAM, reunión de kickoff y seguimiento en la plataforma Genius). No se puede comprobar desde el código ni los datos de la tienda.

4.2 Entorno de desarrollo1 de 1 cumplen

R4.2Entorno de preproducción PrestaShop 8.X, repositorio Git, control de versiones y mecanismo de despliegue.Cumple

Qué se ha vistoHay preproducción, repositorio Git (123 commits, ramas main y develop, pull requests), control de versiones y un flujo de despliegue documentado: preproducción desde develop, producción desde main. La preproducción (jmcpool.enpreproduccion.com) responde. Excepción: el conector se modificó directamente en producción sin commit (va en «Está hecho, pero falla hoy»).

4.3 Diseño web (numerado 4.4 en el documento)1 de 1 cumplen

R4.3Diseño personalizado en Adobe XD (home, catálogo, ficha, carrito, zona cliente, CMS), versiones desktop y mobile.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

4.4 Maquetación3 de 3 cumplen

R4.4aMaquetación sobre la plantilla Warehouse con tema hijo editable.Cumple

Qué se ha vistoTema hijo themes/jmcpool sobre Warehouse/IQIT con plantillas propias.

R4.4bMaquetación en versión desktop y mobile, con principios de UX/UI.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R4.4cSEO técnico básico.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

4.5 Métodos de pago3 de 3 cumplen

R4.5aForma de pago «Mis condiciones habituales» en el checkout.Cumple

Qué se ha visto«Condiciones habituales» está hecha: es el grupo «Forma de pago habitual» (clave HABITUAL del ERP, 581 clientes). Solo la ve quien tiene esa forma de pago en el ERP; 24 pedidos reales de 12 clientes la han usado. La transferencia la ven todos los clientes activos.

R4.5bForma de pago «Transferencia bancaria» en el checkout.Cumple

Qué se ha vistops_wirepayment activo (2 pedidos), mapeado al ERP.

R4.5cAdaptar el entorno para mostrar correctamente ambas opciones en el flujo de compra.Cumple

Qué se ha vistoEl checkout muestra «Condiciones habituales» y transferencia según el cliente. Redsys (tarjeta) está activo aunque no se pidió: se anota aparte.

4.6 Transportistas2 de 3 cumplen

R4.6aTransportistas asignados automáticamente desde el ERP.Cumple

Qué se ha vistoLos 5 transportistas activos están dados de alta y cada uno tiene su equivalencia con el ERP; el pedido viaja al ERP con el identificador de transportista del ERP. El cliente elige el transportista en el checkout.

R4.6bCálculo de gastos de envío según peso y zona.Cumple

Qué se ha vistoTodos los transportistas de pago calculan por peso con tarifas por zona.

R4.6cUmbral mínimo de envío gratuito (importe acordado); por debajo, tarifa automática.Prioridad altaNo cumple

Qué se ha vistoVer R2.11: no hay envío gratis configurado ni programado.

Qué falta o fallaFalta el umbral.

Qué hacerVer R2.11. Esfuerzo pequeño

4.7 Personalizaciones a medida2 de 5 cumplen

R4.7aa) Conversión de carrito a presupuesto con envío automático al ERP sin intervención manual.Prioridad altaParcial

Qué se ha vistoLa conversión existe: «Guardar presupuesto» en el carrito y sección «Presupuestos» en Mi cuenta. El conector solo sabe enviar pedidos al ERP, no presupuestos.

Qué falta o fallaFalta el envío automático del presupuesto al ERP, sin intervención manual.

Qué hacerCrear en el conector el envío de presupuestos al ERP y llamarlo al guardar el presupuesto. Esfuerzo medio

R4.7bb) Stock «disponible/no disponible» (✓/✗) sin indicar cantidades exactas.Cumple

Qué se ha vistoEl cliente ve el stock por almacén con un punto verde o rojo y «N de 5 almacenes», sin cantidades, en la ficha y en el listado. La cantidad exacta se oculta con CSS y sigue en el código de la página: es un detalle de limpieza, no cambia lo que ve el cliente.

R4.7cc) Lógica condicional de envío gratuito a partir del importe acordado de subtotal.Prioridad altaNo cumple

Qué se ha vistoVer R2.11.

Qué falta o fallaNo existe.

Qué hacerVer R2.11. Esfuerzo pequeño

R4.7dd) Precios personalizados por cliente según datos del ERP.Cumple

Qué se ha vistoLa función está hecha: tarifas por cliente del ERP en la tienda (417.634 filas, un grupo por cliente). La importación nocturna falla desde el 7-oct: va aparte, como fallo de hoy.

R4.7ee) Dashboard con KPIs: presupuestos pendientes, pedidos servidos, histórico de facturación y productos más comprados.Prioridad mediaNo cumple

Qué se ha vistoEl panel existe pero ninguno de los 4 indicadores pedidos está: no hay presupuestos pendientes, ni pedidos servidos, ni histórico de facturación (solo gasto web del mes y total), ni más comprados.

Qué falta o falla0 de 4 indicadores acordados.

Qué hacerRehacer el panel con los 4 indicadores, con datos del ERP. Esfuerzo medio

4.8 Diferentes almacenes2 de 3 cumplen

R4.8.0aMostrar en la ficha de producto la disponibilidad en cada almacén y el stock total.Cumple

Qué se ha vistoBloque lblwarehouse en ficha y listados: punto verde/rojo por cada uno de los 5 almacenes y «N de 5 almacenes»; comprobación por combinación y cantidad (stockcheck). Interpretado en modo binario (sin cifras), coherente con 4.7 b.

R4.8.0bEl cliente podrá seleccionar el almacén del que saldrá el producto.Prioridad altaNo cumple

Qué se ha vistoNo hay selector de almacén de salida en ficha, carrito ni checkout. El conector sí envía un almacén al ERP en cada línea, pero es el de recogida (si se eligió Click and collect) o Meco (id 7) por defecto; el cliente no elige el almacén de salida de un envío.

Qué falta o fallaNo existe.

Qué hacerDecidir con JMC si sigue siendo necesario; si sí, implementar selector y enviarlo al ERP. Esfuerzo grande

R4.8.0cEl cliente podrá seleccionar recogida en ese almacén.Cumple

Qué se ha vistoCon el transportista «Click and collect» se elige uno de los 4 almacenes con recogida; se guarda en el pedido, el correo y el back office (9 pedidos con recogida) y se envía al ERP como @IdAlmacen en cada línea del pedido (override de LblSyncAhora.php, getIdAlmacenByOrder). Nota: no está ligado a un «almacén de salida» elegido antes (eso no existe, R4.8.0b) ni se valida el stock del almacén (R4.8.4). En la cabecera se escribe Pers_IdAlmacen=NULL en conf_pedidos_cli; su efecto en el ERP no se ha determinado.

4.8 Diseño funcional preciso3 de 7 cumplen

R4.8.1FO ficha de producto: selector de almacén + disponibilidad (AJAX).Cumple

Qué se ha vistoLa disponibilidad por almacén se ve en la ficha y se consulta por AJAX (por combinación y cantidad). La elección de almacén se hace con botones de opción (radio) en el checkout, con «Click and collect», no con un selector en la ficha.

R4.8.2Persistencia de la elección de almacén (cookie/sesión/cliente).Prioridad bajaParcial

Qué se ha vistoSolo se guarda el almacén de recogida por carrito (ps_lblwarehouse_cart_pickup); se preselecciona el primero por defecto. No hay memoria por cliente ni cookie.

Qué falta o fallaLa elección no se recuerda entre carritos; la preselección automática puede llevar a recoger en un almacén no elegido.

Qué hacerGuardar el almacén preferido por cliente y no preseleccionar sin confirmación. Esfuerzo pequeño

R4.8.3Checkout: selector de modalidad (Envío/Recogida) y forzar combinación según modalidad.Prioridad mediaParcial

Qué se ha vistoLa modalidad se elige indirectamente escogiendo transportista (Click and collect = recogida). No hay forzado de combinación según modalidad.

Qué falta o fallaFalta el forzado de combinación.

Qué hacerValorar si el modelo «combinación = almacén» sigue vigente (lblstocks está desactivado); si no, actualizar el requisito. Esfuerzo medio

R4.8.4Migración de líneas al cambiar de modalidad (Total ↔ Almacén X) + validaciones de stock.Prioridad mediaNo cumple

Qué se ha vistoNo existe código que mueva líneas entre «Total» y un almacén ni que valide el stock del almacén elegido.

Qué falta o fallaNo existe.

Qué hacerImplementar al menos la validación de stock del almacén de recogida. Esfuerzo grande

R4.8.5Reglas de carrito (evitar mezclas indebidas, mensajes).Prioridad mediaNo cumple

Qué se ha vistoNo hay reglas ni mensajes propios sobre mezcla de almacenes/modalidades en el carrito.

Qué falta o fallaNo existe.

Qué hacerDefinir reglas y mensajes con JMC e implementarlos. Esfuerzo medio

R4.8.6Back office: ajustes mínimos del módulo (textos, activar/desactivar, mapping simple).Cumple

Qué se ha vistoAdminLblWarehouseController: lista de almacenes con ID/referencia ERP (mapping), activar/desactivar y recogida sí/no; listado de stock por almacén; configuración del transportista de recogida y conexión al ERP.

R4.8.7Testing + UAT (casuística estándar).Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

4.9 Pruebas de funcionamiento4 de 4 cumplen

R4.9aPruebas de flujos completos (registro, navegación, carrito, pedidos).Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R4.9bSimulación de carga de usuarios y estrés del sistema.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R4.9cVerificación de indicadores y métricas del dashboard.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda. Ojo: el dashboard todavía no tiene los 4 indicadores acordados (R4.7e).

R4.9dRevisión de puntos de fallo.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

4.10 Formación1 de 1 cumplen

R4.10Jornada completa de formación en PrestaShop (productos, pedidos, clientes y presupuestos desde el back office).Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

5 Resumen de tareas8 de 10 cumplen

R5.01Gestión del proyecto con KAM y reuniones de seguimiento – 10 h.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R5.02Creación del entorno de desarrollo y preproducción – 10 h.Cumple

Qué se ha vistoEntorno de preproducción en marcha y repositorio Git con ramas y pull requests.

R5.03Diseño web personalizado desktop y mobile – 40 h.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R5.04Maquetación completa sobre plantilla Warehouse – 80 h.Cumple

Qué se ha vistoTema hijo jmcpool en producción. Versión móvil no revisada visualmente en esta auditoría.

R5.05Integración de formas de pago personalizadas desde ERP – 4 h.Cumple

Qué se ha visto«Condiciones habituales» está hecha: es el grupo «Forma de pago habitual» (clave HABITUAL del ERP, 581 clientes). Solo la ve quien tiene esa forma de pago en el ERP; 24 pedidos reales de 12 clientes la han usado. La transferencia la ven todos los clientes activos.

R5.06Configuración de transportistas con lógica de tarifas automáticas – 4 h.Cumple

Qué se ha vistoLos transportistas están configurados con tarifas automáticas por peso y zona, y cada uno tiene su equivalencia con el ERP. El umbral de envío gratis se evalúa en R2.11, R4.6c y R4.7c.

R5.07Personalizaciones a medida para stock, precios, presupuestos y dashboard – 40 h.Prioridad altaParcial

Qué se ha vistoStock binario (R4.7b) y precios por cliente (R4.7d): hechos. Conversión a presupuesto: hecha en la tienda, sin envío al ERP (R4.7a). Envío gratis (R4.7c) y panel con los 4 indicadores (R4.7e): no hechos.

Qué falta o fallaFaltan el envío gratis, el panel con los 4 indicadores y el envío del presupuesto al ERP.

Qué hacerVer R4.7a y R4.7e. Esfuerzo grande

R5.08Funcionalidad diferentes almacenes – 50 h.Prioridad altaParcial

Qué se ha vistoVisualización por almacén, sincronización cada 5 min, recogida en checkout con envío del almacén al ERP y back office: hechos. Selector de almacén de salida, migración de líneas Total↔Almacén, validación de stock del almacén y reglas de carrito: no (R4.8.x).

Qué falta o fallaAproximadamente la mitad del diseño funcional sin implementar.

Qué hacerCerrar con JMC el alcance real y completar lo que siga vigente. Esfuerzo grande

R5.09Pruebas de funcionamiento completas y control de calidad – 20 h.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

R5.10Formación presencial en uso de PrestaShop – 8 h.Cumple

Qué se ha vistoEntregable de proceso: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

Contrato T25-326 del conector con el ERP

Resumen de requerimientos – ERP → PrestaShop8 de 9 cumplen

C1.01Conexión unidireccional AHORA → PrestaShop mediante vistas SQL directas.Cumple

Qué se ha vistoEl conector lee vistas pers_B2B_vTECommerceIntegracion_get*_ES (y pers_vTECommerce* para categorías, marcas y grupos) por cron. Matiz: al subir un pedido, el conector crea en el ERP las direcciones que no tienen id ERP y actualiza datos de entrega en la cabecera del pedido; no crea ni modifica clientes.

C1.02Sincronización de categorías manteniendo la estructura jerárquica.Cumple

Qué se ha vistoCron horario (:20), última ejecución hoy 14:20; 103 categorías activas. La fidelidad del árbol frente al ERP no se ha contrastado.

C1.03Catálogo de productos simples (sin combinaciones), filtrados por los checks de canal B2B de AHORA.Cumple

Qué se ha vistoCron horario de productos (hoy 14:30), 3.391 activos, leídos de vistas «B2B». En la práctica hay además 86 productos con 647 combinaciones sincronizadas (ver contradicciones): se ha hecho más de lo firmado. El filtro por check de canal está dentro de la vista del ERP y no se ha comprobado.

C1.04Asociación de imágenes (1–2 por producto) almacenadas en servidor vinculado al ERP.Cumple

Qué se ha vistoLas imágenes se importan desde el ERP dentro de la sincronización de productos. Los 556 productos activos sin imagen van aparte, en «Está hecho, pero falla hoy».

C1.05Stock multialmacén por delegación (5) con detalle por almacén.Cumple

Qué se ha vistolblwarehouse/updatestock cada 5 min; 5 almacenes, 12.009 filas de stock por almacén; visible en ficha.

C1.06Precios finales por cliente desde la lista de precios de AHORA (sin recálculo en PrestaShop).Cumple

Qué se ha vistoLos precios finales por cliente llegan del ERP: 417.634 tarifas y un grupo de precios por cliente. Que la importación falle desde el 7-oct va en «Está hecho, pero falla hoy».

C1.07Sincronización de direcciones de entrega habituales.Cumple

Qué se ha vistoObjeto Direcciones horario (hoy 14:10), 4.295 direcciones activas.

C1.08Sincronización de clientes activos ya dados de alta y autorizados en AHORA; sin auto-altas desde PrestaShop.Cumple

Qué se ha vistoLa sincronización ERP→tienda de clientes y direcciones funciona cada hora (8.117 de 8.125 clientes vinculados al ERP) y el conector no crea clientes en el ERP. El formulario de registro de la tienda se trata aparte, en R2.01.

C1.09Documentos en el área de cliente: histórico completo de facturas, pedidos y presupuestos de cualquier canal.Prioridad altaParcial

Qué se ha vistoEn Mi cuenta se ven los pedidos hechos en la web y los presupuestos guardados. Lo que falta son las facturas del ERP: solo existe el módulo antiguo de facturas, que lista PDFs de una carpeta, y en producción hay uno subido a mano. No se ha encontrado en el conector ninguna sincronización de pedidos o presupuestos de otros canales (teléfono, comercial).

Qué falta o fallaFaltan las facturas del ERP en la zona de cliente (y, por confirmar, pedidos y presupuestos de otros canales).

Qué hacerImplantar la sincronización de documentos del ERP con enlace seguro y filtrado por cliente. Esfuerzo grande

Resumen de requerimientos – PrestaShop → ERP2 de 2 cumplen

C1.10Descarga de pedidos web B2B con asignación a serie diferenciada en el ERP.Cumple

Qué se ha vistoLos pedidos web se descargan al ERP de forma automática: 61 de 62 envíos constan como enviados y el último es de hoy. Según el responsable del proyecto, la serie diferenciada la asigna el conector en el ERP. No se ha comprobado desde la tienda: la tienda no envía la serie.

C1.11Pedidos validados en AHORA sin permitir el alta de nuevos clientes desde PrestaShop.Cumple

Qué se ha vistoEl código que se ejecuta (override/modules/lblconectorerp/syncModules/LblSyncAhora.php) usa el id ERP del cliente; si no lo tiene, no envía la cabecera y el pedido no se crea en el ERP. Las funciones de alta/actualización de clientes existen pero no se llaman. Matices: sí crea en el ERP direcciones sin id ERP, y el pedido rechazado queda «no sincronizado» sin aviso (ver C1.10).

Qué hacerAñadir aviso cuando un pedido no se crea por falta de cliente ERP. Esfuerzo pequeño

Resumen de requerimientos – Otros3 de 3 cumplen

C1.12El cliente cuenta con soporte técnico interno para validaciones y pruebas.Cumple

Qué se ha vistoEntregable de proceso o coordinación: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

C1.13Coordinación con el desarrollo del B2B para coherencia en transporte y visualización de stock.Cumple

Qué se ha vistoEntregable de proceso o coordinación: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

C1.14Sin multilenguaje (solo español).Cumple

Qué se ha vistoSolo el idioma es activo.

Resumen de requerimientos – Datos estimados3 de 3 cumplen

C1.15Catálogo estimado de 4.000–5.000 referencias.Cumple

Qué se ha visto3.479 productos (3.391 activos): dentro de lo previsto (algo por debajo).

C1.16Menos de 500 clientes activos.Cumple

Qué se ha visto92 clientes activos (de 8.125 importados); 14 han comprado.

C1.17Hasta 100 pedidos B2B al mes en fase inicial.Cumple

Qué se ha visto33 pedidos en total, 11 en los últimos 30 días.

Frecuencia de sincronización4 de 4 cumplen

C2.01Stock cada 5 minutos.Cumple

Qué se ha vistoCron de stock y de stock por almacén cada 5 min; última ejecución hoy 14:40.

C2.02Pedidos cada 30 minutos.Cumple

Qué se ha vistoCron de pedidos e histórico cada 5 min (más frecuente de lo pedido).

C2.03Productos, clientes y precios 1–2 veces al día.Cumple

Qué se ha vistoProductos y clientes se sincronizan cada hora y los precios una vez al día a las 00:00: la programación es la acordada. Que la importación de precios falle desde el 7-oct va en «Está hecho, pero falla hoy».

C2.04Posibilidad de sincronización manual bajo demanda.Cumple

Qué se ha vistoCada entidad del conector tiene un botón SINCRO en el back office para lanzarla a mano, además de la URL del cron.

Partida 1 – Conector base4 de 4 cumplen

C3.1aInstalación del módulo LabelConect 2.0 y alta de usuario administrador.Cumple

Qué se ha vistolblconectorerp instalado y en uso. El alta de usuario administrador para JMC no se ha comprobado.

C3.1bSetup de filtros, parámetros y tiempos de sincronización.Cumple

Qué se ha vistoCrons configurados en Plesk para todos los objetos (ver C2.x). Parámetros de troceo de precios sin configurar (a NULL), lo que agrava el fallo nocturno.

C3.1cPreparación del entorno del conector para las transacciones personalizadas vía vistas a BBDD.Cumple

Qué se ha vistoConexión a la BBDD de AHORA y vistas en uso.

C3.1dFormación básica de uso del conector a los responsables de JMC.Cumple

Qué se ha vistoEntregable de proceso o coordinación: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

Partida 2 – Imágenes4 de 4 cumplen

C3.2aLectura de rutas de imagen desde AHORA.Cumple

Qué se ha vistoLas rutas/URLs de imagen llegan del ERP con el producto y se descargan en el sync de productos (LblTools::setImagenes). No se usa el objeto 21 específico.

C3.2bSincronización incremental (solo nuevas o modificadas).Cumple

Qué se ha vistoLa importación de imágenes va dentro de la sincronización de productos y no se repite de forma constante: en producción solo se han escrito 35 ficheros de imagen en las últimas 24 horas y ninguno en la última hora, con la sincronización de productos corriendo cada hora.

C3.2cControl de sustitución y eliminación de imágenes obsoletas.Cumple

Qué se ha vistoAl reimportar se borran las imágenes anteriores del producto (deleteImages) y se sustituyen por las del ERP, así que las obsoletas desaparecen (según el código del repositorio; la versión de producción no se ha revisado).

C3.2dValidación de formatos y tamaños.Cumple

Qué se ha vistoAntes de importar se comprueba que la URL es una imagen válida (getimagesize) y PrestaShop la redimensiona a los tamaños del tema. Pega: ante una excepción el código hace dump() y die(), lo que corta el resto del sync.

Partida 3 – Documentos en zona de cliente1 de 4 cumplen

C3.3aSincronización de facturas, pedidos y presupuestos mediante vistas SQL de documentos PDF.Prioridad altaNo cumple

Qué se ha vistoNo existe objeto, vista ni cron de documentos. La carpeta de facturas de producción tiene 1 PDF.

Qué falta o fallaNo implantado.

Qué hacerImplantar la sincronización de documentos desde AHORA. Esfuerzo grande

C3.3bGeneración de enlaces seguros para descarga en PDF.Prioridad altaParcial

Qué se ha vistoLa descarga por controlador comprueba al cliente, pero el listado enlaza el PDF directo en /modules/lbl_facturas/facturasERP/ y en producción ese PDF responde 200 sin iniciar sesión (comprobado el 15-oct).

Qué falta o fallaEnlace directo sin protección.

Qué hacerBloquear el acceso directo a la carpeta y servir siempre por el controlador. Esfuerzo pequeño

C3.3cFiltrado por cliente autenticado.Prioridad mediaParcial

Qué se ha vistolbl_facturas filtra los ficheros por el cliente con sesión (por su código ERP), pero solo sobre la carpeta local, que está prácticamente vacía; ver también C3.3b.

Qué falta o fallaFiltrado sobre un repositorio sin documentos.

Qué hacerVer C3.3a. Esfuerzo medio

C3.3dPosibilidad de ampliar a otros documentos (ofertas, modelos fiscales…) bajo presupuesto.Cumple

Qué se ha vistoEs una opción comercial (ampliar a otros documentos bajo presupuesto), no un entregable técnico: se da por cumplida según el responsable del proyecto.

Partida 4 – Transacciones a medida8 de 9 cumplen

C3.4aSincronización de categorías.Cumple

Qué se ha vistoVer C1.02.

C3.4bCatálogo de productos simples por checks de canal B2B.Cumple

Qué se ha vistoVer C1.03 (además se sincronizan combinaciones, fuera de lo firmado).

C3.4cAsociación de imágenes desde carpeta vinculada al ERP (1–2 por producto).Cumple

Qué se ha vistoLas imágenes se importan desde el ERP dentro de la sincronización de productos. Los 556 productos activos sin imagen van aparte, en «Está hecho, pero falla hoy».

C3.4dStock multialmacén en las 5 delegaciones con visualización en la ficha.Cumple

Qué se ha vistoVer C1.05 y R4.8.0a.

C3.4ePrecios finales por cliente desde la lista del ERP.Cumple

Qué se ha vistoLos precios finales por cliente llegan del ERP: 417.634 tarifas y un grupo de precios por cliente. Que la importación falle desde el 7-oct va en «Está hecho, pero falla hoy».

C3.4fClientes activos y direcciones habituales, solo los autorizados en AHORA.Cumple

Qué se ha vistoLa sincronización ERP→tienda de clientes y direcciones funciona cada hora (8.117 de 8.125 clientes vinculados al ERP) y el conector no crea clientes en el ERP. El formulario de registro de la tienda se trata aparte, en R2.01.

C3.4gDescarga automatizada de pedidos B2B a serie diferenciada, cada 30 min configurable, con posibilidad de forzar sincronización manual.Cumple

Qué se ha vistoLos pedidos bajan cada 5 minutos (más rápido que los 30 del contrato, configurable) y el conector tiene botón SINCRO para lanzarlo a mano. La serie diferenciada depende del ERP y está pendiente de confirmar (ver C1.10).

C3.4hÁrea privada de cliente con histórico de facturas (de cualquier canal), pedidos y presupuestos.Prioridad altaParcial

Qué se ha vistoEn Mi cuenta se ven los pedidos hechos en la web y los presupuestos guardados. Lo que falta son las facturas del ERP: solo existe el módulo antiguo de facturas, que lista PDFs de una carpeta, y en producción hay uno subido a mano. No se ha encontrado en el conector ninguna sincronización de pedidos o presupuestos de otros canales (teléfono, comercial).

Qué falta o fallaFaltan las facturas del ERP en la zona de cliente (y, por confirmar, pedidos y presupuestos de otros canales).

Qué hacerImplantar la sincronización de documentos del ERP con enlace seguro y filtrado por cliente. Esfuerzo grande

C3.4iValidación de estructuras y formatos conforme a AHORA.Cumple

Qué se ha vistoEntregable de proceso o coordinación: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.

Partida 5 – Stock multialmacén5 de 5 cumplen

C3.5aVistas SQL específicas para extraer stock por almacén.Cumple

Qué se ha vistolblwarehouse lee el stock por almacén del ERP (LblWarehouseStockSyncer, endpoint updatestock con token) y lo guarda en ps_lblwarehouse_stock (12.009 filas).

C3.5bEquivalencias entre almacenes del ERP y delegaciones B2B.Cumple

Qué se ha vistoCada almacén tiene ID y referencia del ERP en el back office (AdminLblWarehouseController).

C3.5cActualización de stock por delegación, sin consolidación global.Cumple

Qué se ha vistoEl stock por almacén se guarda por separado del stock general de PrestaShop (que llega por otro objeto del conector).

C3.5dControl de sincronización cada 5 minutos.Cumple

Qué se ha vistoCron updatestock cada 5 min.

C3.5eValidación de datos y pruebas funcionales conjuntas con el equipo de JMC.Cumple

Qué se ha vistoEntregable de proceso o coordinación: según el responsable del proyecto, realizado. No se puede comprobar desde el código ni los datos de la tienda.