(es) Rewards Loyalty

Este artículo presenta tres alcances que te permiten importar datos de la tabla de rewards:

  • masterreward – permite crear master rewards, que se utilizan después para la atribución de reward_ids (son los contenedores maestros de los rewards),
  • earnreward – permite asignar ids únicos de un reward a los miembros del programa loyalty correspondiente
  • burnreward – permite canjear ids únicos de un reward que los miembros han usado

Requisitos previos

  • Conocimiento del formato CSV y del proceso de importación
  • Un editor de texto UTF-8 o software de hoja de cálculo
  • Conocimiento básico de datos loyalty importados a Splio
  • Los alcances de importación enumerados anteriormente deben ser configurados por tu Project Manager de Splio.

Preparación de un fichero masterreward (rewards maestros)

Los ficheros del alcance "masterreward" te permiten añadir rewards maestros al catálogo. Cuando se utilizan los rewards maestros, los usuarios reciben recompensas que son copias exactas de los rewards maestros.

🚧

Por favor, limita el tamaño del archivo a 200K.

Las siguientes columnas se encuentran disponibles en el alcance “masterreward”:

ColumnaObligatorioFormatoDescripción
external_idTexto (máx. 128 caracteres)Identificador único del reward maestro. Las líneas que llevan external_id ya existentes en Splio se considerarán como actualizaciones.
nameTexto (máx. 128 caracteres)Nombre del reward maestro.
monetary0 ó 1Aparece “1” si el reward tiene un valor monetario, "0" si no lo tiene. Si es "1", debes añadir "monetary_type" y "monetary_value".
monetary_typeNoValor de la listaUn valor entre "value" ó "percentage".
monetary_valueNodoubleValor del reward en EUR.
nqp_valueEntero positivoValor en puntos del reward: cantidad de puntos no calificables (NQ) que se debitan en el momento de otorgar el reward al miembro.
descriptionNoTextoDescripción textual del reward.
rich_descriptionNoTextoDescripción del reward utilizando formato de texto enriquecido.
holding_daysEntero positivoNúmero de días que deben pasar para que el reward sea disponible para el miembro.
validity_interval_countEntero positivoNumero de días, semanas, meses o años de validez del reward.
validity_interval_typeValor de la listaValor temporal entre días, semanas, meses o años de validez del reward.
forced_validity0 o 1Si es "1", el reward tiene un periodo de validez absoluto (anulando el periodo de validez relativo de "validity_interval_count"). Deberás proporcionar las columnas "forced_validity_start" y "forced_validity_end" cuando utilices la validez absoluta.
forced_validity_startNoYYYY-MM-DD HH:MM:SSFecha en la que el reward se hace válido; la parte de la hora es opcional, pero será igual a 00:00:00 si se omite.
forced_validity_endNoYYYY-MM-DD HH:MM:SSFecha en la que la validez del reward finaliza. La parte de la hora es opcional, pero será igual a 00:00:00 si se omite.
is_limitedNo0 o 1Si es "0", la autogeneración de rewards es ilimitada.
max_attribution_countNoEntero positivoNúmero de unidades disponibles del reward. Debe ser 0 o mayor si "is_limited" se establece en 1. Mayor a 0 cuando "is_limited" es igual a 0.
is_auto_generatedNo0 o 1Si es "1", permite a Splio generar los reward_id ("max_attribution_count" debería ser igual a 0).
image_urlNoTextoRuta del archivo con la imagen del reward.
c0NoCampo personalizado creado en la tabla de Rewards. Puedes incluir hasta 32 columnas denominadas como "c0" a "c31".

🚧

  • Recuerda que Splio no importará ficheros si faltan columnas obligatorias o si existen columnas que no reconoce. Las líneas con valores vacíos en las columnas obligatorias se saltarán.
  • Además, ten en cuenta que los valores de los campos "validity_period" y "validity_interval_type" se pueden anular (forzados) en el momento de la atribución.

Ejemplo 1: un fichero "masterreward"

El siguiente ejemplo muestra un fichero de importación que utiliza columnas estándar. Las columnas que están vacías, como ";;", son importadas como valores NULL.

external_id;name;monetary;monetary_type;monetary_value;nqp_value;description;rich_description;holding_days;validity_interval_count;validity_interval_type;forced_validity;is_limited;max_attribution_count
"mastertest_missing_price";"mastertest";;;"2";;;;"0";"1";"day";"0";;
"master_missing_auto_generation";"mastertest";;;"9";"10";;;"0";"1";"day";"0";;"0"
"master_bad_stock";"mastertest";;;"9";"10";;;"0";"1";"week";"0";"1";"0"
"masterlight";"salad";;;"9";"10";;;"0";"1";"month";"0";"1";"100"
"Masteritem_0_stock";"mastertest_item";;;;"10";;;"0";"1";"week";"0";;"0"
"masteritem_bad_stock";"mastertest_item";;;;"10";;;"0";"1";"week";"0";;

Ten en cuenta que la mayoría de las filas de este ejemplo no se importarán con éxito. El valor "external_id" indica el problema, como un precio que falta, un valor de stock que falta o que es incorrecto. Por ejemplo, la segunda línea no funcionará porque falta el precio.

Preparación de un fichero earnreward (rewards otorgados)

Puedes utilizar ficheros "earnreward" para importar la asignación de rewards a titulares de tarjetas loyalty (miembros del programa de Loyalty). Técnicamente hablando, ganar un reward crea un vínculo entre un reward master y un card_code.

Las siguientes columnas se encuentran disponibles en los ficheros "earnreward":

ColumnaObligatorioFormatoDescripción
reward_idTextoIdentificador interno de Splio del reward maestro (lo puedes ver en la url del navegador).
card_codeTextoIdentificador del titular de la tarjeta de Loyalty a quién se asigna el reward.
attribution_idTexto (máx. 128 caracteres)Identificador único del reward asignado a un miembro (se llama atribución porque el reward se atribuye a un cardcode).
quantityNoEntero positivoNúmero de ids de reward asignados. Si no está presente, se asume 1 por defecto.
earn_dateYYYY-MM-DD HH:MM:SSFecha en la que se obtendrá el reward. Esta fecha debe ser el día del import o posterior. Si está vacío, se asume la fecha y hora actual del servidor (GMT+1).
contextNoTextoDescripción de la razón de asignación del reward.
validity_start_dateYYYY-MM-DD HH:MM:SSFecha en la que el attribution_id se hace válido.
validity_end_dateYYYY-MM-DD HH:MM:SSFecha en la que el attribution_id caduca.
burn_dateNoYYYY-MM-DD HH:MM:SSFecha en la que se ha canjeado el attribution_id, p. ej.; 2021-02-12 08:30:00. Si no aparece, se asume la fecha y hora actual del servidor.
store_idNoTextoIdentificador de la tienda donde ha sido otorgado el attribution_id.

🚧

  • Utiliza siempre fechas como 2021-02-12 08:30:22 (con horas, minutos y segundos) para "earn_date", "validity_end_date", "validity_start_date", y "burn_date". Cuando se asume la fecha y hora del servidor, es GMT+1 para clientes de fuera de China y GMT +8 para clientes chinos. Véase la sección "Explicación: Fechas" a continuación para más información.
  • Los imports de “earnreward” no utilizan columnas personalizadas.

Ejemplo 2: un fichero "earnreward"

"reward_id";"card_code";"attribution_id";"quantity";"context";"earn_date";"validity_start_date";"validity_end_date"
"1066";"CC0001";"oc_0002750875";"1";"web";"2012-06-19 23:25:00";"2012-06-20 00:00:00";"2012-06-26 00:00:00"
"1086";"CC0003";"oc_0002750876";"1";"web";"2012-06-19 06:55:00";"2012-06-20 00:00:00";"2012-06-26 00:00:00"
"1455";"CC0002";"oc_0043302300";"1";"web";"2014-12-23 12:04:00";"2014-12-24 00:00:00";"2015-01-06 00:00:00"
"1455";"CC0004";"oc_0043243103";"1";"web";"2014-12-20 21:54:00";"2014-12-21 00:00:00";"2015-01-06 00:00:00"
"1455";"DD0001";"oc_0043244548";"1";"web";"2014-12-20 11:32:00";"2014-12-21 00:00:00";"2015-01-06 00:00:00"
"1455";"EE0001";"oc_0039303830";"1";"web";"2014-12-13 14:28:00";"2014-12-14 00:00:00";"2015-01-06 00:00:00"
"1455";"XXX00000";"oc_0043243488";"1";"web";"2014-12-20 09:10:00";"2014-12-21 00:00:00";"2015-01-06 00:00:00"
"1455";"abcde";"oc_0043302697";"1";"web";"2014-12-23 08:42:00";"2014-12-24 00:00:00";"2015-01-06 00:00:00"
"1455";"CC111";"oc_0043303913";"1";"web";"2014-12-23 12:54:00";"2014-12-24 00:00:00";"2015-01-06 00:00:00"
"1455";"SM123";"oc_0043286685";"1";"web";"2014-12-22 15:33:00";"2014-12-23 00:00:00";"2015-01-06 00:00:00"

Preparación de un fichero burnreward (rewards canjeados)


Un fichero "burnreward" contiene información sobre los rewards canjeados por los miembros del programa Loyalty. Hablando más técnicamente, no cambia el estado de los datos "masterreward", sino la información sobre el status del attribution_id anteriormente otorgado a un card_code.

Las siguientes columnas se encuentran disponibles en los ficheros "burnreward":

ColumnaObligatorioFormatoDescripción
card_codeTextoIdentificador del titular de la tarjeta de Loyalty a quién se asigna el reward.
contextNoTextoDescripción del contexto de canjeo del attribution_id.
attribution_idTextoIdentificador único del reward asignado a un miembro (se llama atribución porque el reward se atribuye a un cardcode).
burn_dateNoYYYY-MM-DD HH:MM:SSattribution_id, p. ej.; 19/02/2021 18:10:03. Si está vacío, se asume la fecha y hora actual del servidor (GMT+1).
store_idNoTextoIdentificador de la tienda donde ha sido canjeado el attribution_id.

🚧

  • Utiliza siempre fechas como 2021-02-12 08:30:22 (con horas, minutos y segundos) para "burn_date".
  • Las importaciones de rewards canjeadas no utilizan columnas personalizadas.

Ejemplo 3: un archivo "burnreward"

card_code;context;burn_date;attribution_id
CC0001;An incredible corgi designed bowl (empty unique_key);2018-08-09 11:03:05;NULL
invalidcardcode;An incredible corgi designed bowl;2018-08-09 11:03:05;test
CC0001;Welcome reward (valid burn);2018-08-09 10:00:05;EG2563
CC0003;Chocolate bone;2018-09-09 12:43:05;invalidattrid
CC0003;Chocolate bone(invalid date: future);2018-09-09 08:12:10;DE-0009-3981
CC0003;Chocolate bone(invalid date bis);2018-09-09;DE-0009-3981
CC0002;already_burned;2018-08-09 11:03:05;DE-0009-3981
CC0004;An incredible corgi designed bowl(valid burn);2018-08-09 08:12:10;BB-0001

Nomenclatura de los ficheros

Splio requiere que designes tus ficheros de importación de una forma específica. Cada nombre de archivo debe contener el nombre del universo, alcance ("masterreward", "earnreward", o "burnreward"), subsecuencia (deberías haberlo obtenido de tu Project Manager), y fecha. El orden en que los archivos se procesan depende de los alcances y fechas.

El esquema de designación es siempre universo_alcance_subsecuencia_YYYYMMDD.csv. Esto quiere decir que los ficheros de importación que contienen los tres alcances de este artículo, en un universo "mycompany" y apartado "silver", con fecha de 14 de febrero de 2019, podría designarse de la siguiente forma:

mycompany_masterreward_silver_20190214.csv mycompany_earnreward_silver_20190214.csv mycompany_burnreward_silver_20190214.csv

Explicación: Fechas

Todas las fechas utilizadas en los ficheros de importación de rewards deben tener el siguiente formato: 4 dígitos para el año, 2 para el mes, y 2 para el día, seguido de las horas, minutos y segundos, 2 dígitos cada uno. Una fecha correcta para el 9 de marzo de 2021, 10:00:05 tiene el siguiente formato: 09/03/2021 10:00:05

El día y hora están separados por un espacio en blanco. Tanto la parte de fecha como de hora debe ser completada – las líneas que, por ejemplo, contengan solo horas y minutos, no se importarán.

Si se omite la parte de la hora, Splio asumirá la hora más temprana posible del día (00:00:00). Por lo tanto,2018-09-09 es igual a 2018-09-09 00:00:00.

🚧

  • No es nada recomendable poner como hora por defecto 00:00:00. Splio intentará procesar la fecha como tal. Esto puede causar errores y algunos triggers relacionados con las fechas fallarán. Además todos los datos loyalty son siempre considerados como información financiera. Esto quiere decir que tú y tu empresa sois responsables de estos datos y no os podéis permitir dejar detalles al azar.
    Un beneficio adicional de utilizar fechas completas es que podrás buscar y filtrar por fecha con una precisión mucho mayor.
  • Al importar fechas con hora, asegúrate de que siempre utilizas la misma franja horaria (es decir, GMT+1).

Explicación: NULL y valores de borrado

NULL es un valor especial que informa a la base de datos de que el campo que lo contiene está vacío.

Tu universo Splio puede configurarse para interpretar los valores NULL como instrucciones para vaciar campos. Puedes utilizarlo para borrar valores almacenados en la base de datos. Para ello, asegúrate de que el valor importado es exactamente NULL. Debes evitar espacios delante o detrás: “ NULL” o “NULL ” se reconocerán como valores string.

Si esta opción no está configurada, Splio retendrá los valores para los campos en los que el valor importado sea NULL.

Diferencia entre NULL y campo vacío

“” es un string vacío. En la mayoría de los casos, tanto NULL como “” serán importados como un valor vacío.

Ten presente que el string vacío “” no es considerado como un valor NULL, por lo que no provocará el borrado del valor existente en un campo.