Saltearse al contenido

Merchandising

Merchandising es la lista curada de productos que se venden juntos. Su clave es merchandising, no es núcleo y viene en Pro y en A medida. No tiene carpeta propia en el backend: el código vive dentro de Catalog, en la ficha del producto.

  • Pares producto → recomendado, guardados en product_recommendations con una position. La pareja es única.
  • Se cargan desde la ficha del producto, en la pestaña «Recomendaciones», que solo aparece si el módulo está encendido. Buscas por nombre (mínimo dos letras), añades y quitas.
  • Salen en la ficha pública. GET /api/catalog/products/{slug} añade la clave recommendations con las ofertas recomendadas activas, en el orden de position y, a igualdad, del id.
  • API propia: GET /recommendations (filtrable por product_id), POST /recommendations y DELETE /recommendations/{id}.
  • Del módulo merchandising y del permiso de trabajo del mismo nombre, que sí está en los perfiles Marketing, Gerente y Equipo del Partner. No es núcleo: se enciende en Ajustes → Apps y capacidades.
  • De que existan las fichas: los dos extremos del par tienen que ser ofertas del mismo sitio. Si no, 422 «El producto no pertenece al sitio.»
  • Del módulo portfolio, que es quien sirve el catálogo público; sin él la ficha no existe y esto no tiene dónde salir.
  • El catálogo público consulta el entitlement antes de armar la lista; no es middleware de ruta.

La ficha pública deja de traer recommendations —vacía, sin error— y las parejas siguen en la base. Listar devuelve lista vacía; escribir devuelve 403 con {"module":"merchandising"}. La ficha no se queda huérfana: el bloque automático related sigue saliendo, porque no depende de este módulo.

  • Hay dos listas y no son la misma. related es automática: hasta cuatro ofertas de la misma categoría, las de creación más reciente, y sale siempre. recommendations es la que curas tú. Si editas una y miras la otra, parecerá que no se guardó.
  • El panel no manda position. Todas las parejas nacen en cero y el orden real termina siendo el de creación. No hay pantalla para reordenar.
  • Añadir dos veces la misma pareja no la duplica: updateOrCreate la reescribe y le mueve la posición.
  • Apagar un producto recomendado lo saca de la lista sin borrar la pareja; al reactivarlo vuelve. Borrar el producto, en cambio, arrastra la pareja en cascada.
  • No puedes recomendarte a ti mismo: recommended_id distinto de product_id, o 422.
  • El buscador del panel corta en seis resultados; es un tope de pantalla, no del módulo.