La fórmula Replace From Table
La fórmula REPLACE_FROM_TABLE permite recoger datos específicos de campos que residen en una tabla diferente a la que se encuentra la fórmula.
En Sales Layer, los datos del catálogo están organizados en:
- Categorías
- Productos
- Variantes
- Entidades personalizadas, por ejemplo: contenido de marketing (brochures, campañas), certificados técnicos o de calidad, manuales de usuario, regulaciones, información adicional de las variantes (como el color...)
Cuando los elementos se relacionan entre cualquiera de las tablas, usando el campo ítem relacionado, Sales Layer guarda esa relación usando la referencia (generalmente el ID interno).
Uso de la fórmula:
Cuando un campo hace referencia a otro ítem, por defecto, exportará su referencia o SKU.
Por otra parte, si el objetivo es extraer información específica del ítem relacionado, como su nombre, o atributos como un archivo PDF, una URL de imagen, etc. se necesitará el uso de REPLACE_FROM_TABLE.
Pseudocódigo:
REPLACE_FROM_TABLE({field}, “table”, “table field related”, “table field conversion”, “default value”, modifier, “separator”, “outseparator”,”outlang”)
- {field}: referencia al campo que se usará para buscar en otras tablas, generalmente será el campo de ítem relacionado.
- table: tabla de la que se recoge el contenido, si ese ítem relacionado está en categorías, por ejemplo, entonces habrá que colocar "categories". En caso de que el ítem relacionado sea una entidad personalizada, habrá que colocar el nombre de su tabla.
- table field related: campo de referencia en la tabla que hagamos referencia en el parámetro anterior.
- table field conversion: campo de la tabla dónde vamos a buscar la información.
- default value: en caso de no devolver nada, podemos añadir un mensaje de error o un mensaje por defecto como un guión: "-".
- modifier: opcional, modificador del dato a buscar, podrá ser CASE_SENSITIVE o UNCASE_SENSITIVE (por defecto).
- separator: opcional, el caracter que separa más de un valor del campo ítem relacionado, por defecto es una coma, ",".
- outseparator: opcional, caracter con el que se separan los diferentes resultados de la fórmula.
- outlang: opcional, exporta valores en un idioma específico, como "es" o "en", siguiendo el código ISO.
- La fórmula GET_LANG() se puede utilizar para recoger los idiomas de manera dinámica en caso de que el conector esté configurado como multi-idioma.
Es importante saber que la fórmula REPLACE_FROM_TABLE puede funcionar con diferentes elementos dentro del campo de ítem relacionado. Es por eso que los parámetros "default value", "modifier" y "separator" serán obligatorios en ese caso.
Ejemplos:
En el siguiente ejemplo se detallará cómo recoger el nombre de un ítem que pertenece a una tabla de Entidad Personalizada. Para ello el campo de ítem relacionado es necesario.
En otras palabras, para recoger el nombre de una entidad personalizada desde su tabla, usaremos la fórmula desde la tabla de productos del conector (o desde la tabla dónde se encuentre el campo de ítem relacionado hacia esa tabla de entidad personalizada).
La relación se basa en una entidad personalizada relacionada con un producto.
Aquí vemos nuestra entidad personalizada creada y el nombre de la tabla a la que nos referiremos:
Cuando lo relacionemos a través del campo de ítem relacionado, deberá parecerse a algo así:
REPLACE_FROM_TABLE({Custom Entity field}, “Test Table”, “reference”, “Name”, “-”, "", ",")
Este será el resultado de aplicar la fórmula, vemos que devuelve el nombre de la entidad personalizada:
Nota sobre el parámetro "-": se devolverá este carácter si la fórmula no encuentra qué devolver, por ejemplo, si el campo estuviese vacío.
Casos de uso:
- Uso de REPLACE_FROM_TABLE para recoger el nombre de imagen o su URL si se encuentra en una entidad personalizada.
REPLACE_FROM_TABLE({Custom Entity field}, "Test Table", "reference", "custom image", "-", "", ",")
En este caso, hemos añadido el campo {Custom image} al ítem de entidad personalizada:
El resultado sería:
- REPLACE_FROM_TABLE anidada: para recoger el valor específico de un ítem de entidad personalizada que se encuentra en la tabla de productos, pero estamos aplicando la fórmula en la tabla de variantes.
Habrá que tener en cuenta que ahora necesitaremos tener en cuenta 3 niveles: el primer nivel será la tabla de variantes, donde nos encontramos. El segundo nivel será la tabla de productos, que será la tabla intermedia que nos hará conectar con el tercer nivel, la tabla de entidad personalizada.
Para obtener el resultado correcto, es necesario construir una fórmula anidada que primero acceda a la tabla de productos y luego que acceda a la tabla de entidad personalizada, para ello seguiremos los siguientes pasos.
Paso 1: buscar el campo que hará la relación entre variante y producto, en el caso de la variante será el campo dónde se establece su padre. En este caso será {product_reference}.
Paso 2: crear la primera REPLACE_FROM_TABLE para obtener el producto, deberá ser similar a esto:
En este caso hemos utilizado el campo {product_reference} de las variantes para obtener los datos de la tabla de productos.
Paso 3: necesitaremos aplicar otra REPLACE_FROM_TABLE como si nos encontrásemos en la tabla de productos para acceder a la tabla de Entidad Personalizada.
La fórmula anidada tendrá este aspecto:
REPLACE_FROM_TABLE(REPLACE_FROM_TABLE({product_reference}, "Products", "sku", "Custom Entity Field", "-", "", ","), "Test Table", "Reference", "Name", "-", "", ",")
Nota: Si la fórmula no puede encontrar el valor específico, por defecto devolverá la referencia del ítem. Para obtener un valor vacío se deberá adaptar el valor por defecto a un espacio en blanco: " ". Ejemplo: REPLACE_FROM_TABLE({product_reference}, "products", "Reference", "Description", " ").
Aviso: Si estás intentando obtener las referencias de categoría de un producto, esta fórmula no las podrá devolver debido a que el campo de referencia de categoría tiene un comportamiento diferente al de otros campos.