...
CONSIDERACIONES PARTICULARES A PROMO
Promo há ha incorporado de forma estândar estándar el uso de las colas mencionadas.
En la siguiente imagen se puede observar un diagrama de arquitectura simple:
Del diagrama se desprende que Promo como productor de la información que él administra (ej: Tarjetas de fidelidad), mientras que al mismo tiempo es un consumidor de la información provista por sistemas externos (ej. Catálogo de marcas).
...
clave | Tipo de Dato | Descripción |
---|---|---|
rabbitMQ.enabled | Booleano | Propiedad que indica si está habilitado RabbitMQ (true o false). Si se fija en TRUE Promo se conectará al servidor RabbitMQ y quedará en escucha del mismo. Si se fija en false se desconectará del mismo. |
rabbitMQ.endpointName | Alfanumérico | Nombre de la cola de RabbitMQ de la cual se consumiran consumirán los mensajes |
rabbitMQ.uri | Alfanumérico | URI de conexión completa RabbitMQ (amqp://<user>:<password>@<host>:<port>/<vhost>) vhost: Opcional en caso de estar definido dentro del server RabbitMQ Este parámetro contiene y excluye a los otros marcados con * |
rabbitMQ.username* | Alfanumérico | Usuario para acceder al RabbitMQ |
rabbitMQ.password* | Alfanumérico | Password para acceder al RabbitMQ |
rabbitMQ.host* | Alfanumérico | Dirección (host) del RabbitMQ server |
rabbitMQ.virtualHost* | Alfanumérico | Virtual Host al RabbitMQ |
rabbitMQ.port* | Numérico | Puerto del server RabbitMQ |
...
En la figura siguiente se observa la pantalla de Configuración:
Aviso | ||
---|---|---|
| ||
Promo Soporta solo un consumidor por compañía |
...
Propiedad | Tipo de dato | Descripción |
companyId | Alfanumérico | Código de la companíacompañía |
catalog | Alfanumérico | Código que identifica el catalogo (VER TIPOS VALIDOS) |
params | JSON | Opcional. Datos auxiliares a definir los cuales se usaran para utilizar en la importación del catalogo |
items | Array de Json | Son los items a importar del catalogo |
operation | Alfabético | Operación a realizar sobre el registro (I ,U, D) "I" indica que el registro debe insertarse "U" indica que el registro debe actualizarse "D" indica que el registro debe eliminarse "IU" indica que el registro será insertado en caso de no existir o bien actualizado si existe |
<fieldName> | Alfanumérico | campos específicos del catalogo a importar |
...
catalog | Descripción |
---|---|
catalogCard | Catálogo de Tarjetas de fidelidad |
catalogBrand | Catálogo de Marcas |
catalogCategory | Catálogo de Categorías |
catalogChannel | Catálogo de Canales |
catalogCreditCampaignCode | Catálogo de Campañas Crediticias |
catalogCustomer | Catálogo de Clientes |
catalogCustomerType | Catálogo de tipos de Clientes |
catalogIdType | Catalogo de tipo de identificador |
catalogDepartment | Catálogo de Departamentos |
catalogEventTransaction | Catálogo de eventos |
catalogEventTransactionType | Catálogo de tipo de eventos |
catalogExtendWarranty | Catálogo de Extensión de Garantías |
catalogFamily | Catálogo de Familia de productos |
catalogFormat | Catálogo de Formatos |
catalogInfoFinancial | Catálogo de información financiera |
catalogItem | Catálogo de productos |
catalogItemStock | Catálogo de Stock de productos |
catalogPaymentBank | Catálogo de pagos Bancarios |
catalogPaymentCode | Catálogo de código de pagos Bancarios |
catalogPaymentPrefix | Catálogo de Prefijos Bancarios |
catalogPaymentType | Catálogo de Tipo de pagos |
catalogProfileCode | Catálogo de Código de Perfil del cliente |
catalogStoreChain | Catálogo de cadena de valor |
catalogStore | Catálogo de tiendas |
catalogSubCategory | Catálogo de subcategoría |
catalogSubZone | Catálogo de subzona |
catalogSupplier | Catálogo de proovedorproveedor |
catalogZone | Catálogo de zonas |
catalog<CodeFieldDynamic> | Catálogo dinámico el nombre del mismo se forma con el String catalog concatenado con el código del campo dinámico generado en la consola |
...
Ejemplos de carga de
...
Catálogos
En el siguiente ejemplo se observa la inserción de 2 registros de tarjetas.
...
Informações |
---|
En versiones superiores a 6.5.14 y 7.0 se incopora incorpora la posibilidad de realizar actualizaciones sobre el campo cvv. En este caso dicho campo queda registrado como una actualización en el detalle de movimientos de tarjetas de fidelidad. |
...
La definición de los denominados cmapos campos dinámicos permite asociar los mismos con un catálogo. Este catálogo puede ser también administrado via vía colas.
Ejemplo de carga de catalogo DINÁMICO.
...
- Ir al menú Administración en la opción Atributo de elementos, allí se creara el campo dinámico el cual tendrá que definirse como tipo AUTOCOMPLETADO POR CATALOGO.
- Una vez creado el nuevo atributo, desde el Productor de RabbitMQ, ya se podrá enviar los datos asociados al nuevo catalogo
- Para poder acceder al resultado de la importación se tendrá que ver ir en el menú SOPORTE la opción Monitor de Importación.
4. En Administración, Importación de catálogos se podrán ver los datos ingresados.
5. En la promoción se podrá seleccionar los datos ingresados.
6 .Para que el motor pueda evaluar la promoción se deberá distribuir el atributo creado en el paso (Dicha distribución precisa que se reinicie el motor).
7. Distribuir el mapa con la promoción para poder evaluar la misma.
...
rabbitMQ.producer.enabled: (true o false)
rabbitMQ.producer.uri:amqp://<user>:<password>@<host>:<port>/<vhost(Opcional)>
rabbitMQ.promotion.endpointName:<nombreCola para posteo de promociones>
rabbitMQ.limitstatus.endpointName:<nombreCola para posteo del status de limites>
rabbitMQ.cardhistory.endpointName: <Nombre de la cola de RabbitMQ para el posteo de datos de tipo CardHistory>
Segunda o configuración por parámetros:
rabbitMQ.producer.enabled:(true o false)
rabbitMQ.producer.username:<user>
rabbitMQ.producer.password:<pass>
rabbitMQ.producer.host:<host>
rabbitMQ.producer.virtualHost:<vhost>
rabbitMQ.producer.port:<port>
rabbitMQ.promotion.endpointName:<nombreCola para posteo de promociones>
rabbitMQ.limitstatus.endpointName:<nombreCola para posteo del status de limites>
rabbitMQ.cardhistory.endpointName: <nombreCola para posteo del CardHistory>
RabbitMQ – Historial de Tarjetas
La cola de mensaje disponibles para el envío del historial de tarjetas:
- rabbitMQ.cardhistory.endpointName >> Nombre de la cola de RabbitMQ para el posteo de datos del historial de tarjetas.
Ejemplo del Json que se envía:
Bloco de código | ||
---|---|---|
| ||
{
"_id": "603d02251082e8369081744b",
"amount": "0",
"amountPrev": "0",
"card": {
"code": "9900000000000000",
"status": "ENABLED",
"type": "987"
},
"cardAction": "ACTIVATION",
"companyId": "exito",
"createdAt": "2021-03-01T15:03:01Z",
"customerCode": null,
"date": "2021-03-01T15:03:01Z",
"reason": null,
"reasonName": null,
"storeCode": null,
"terminalCode": null
} |
Detalle de los campos:
Campo | Descripción | ||||||
id | Id del registro de limite en Mongo. | ||||||
amount | Monto actual asociado a la tarjeta de fidelidad | ||||||
amountPrev | Monto previo de la tarjerta de fidelidad | ||||||
card {} | Datos asociados a la tarjeta informada
| ||||||
cardAction | Accion asociada al movimiento de tarjeta de fidelidad. | ||||||
companyId | Compañía desde la que se envia el movimiento de la tarjeta de fidelidad. | ||||||
createdAt | Fecha de creacion de la tarjeta de fidelidad. | ||||||
customerCode | Cliente asociado a la tarjeta de fidelidad. | ||||||
date | Fecha del movimiento que se informa de la tarjeta de fidelidad. | ||||||
reason | Código de la razón asociada al movimiento que se informa de la tarjeta de fidelidad. | ||||||
reasonName | Nombre de la razón asociada al movimiento que se informa de la tarjeta de fidelidad. | ||||||
storeCode | Código de la tienda asociada al movimiento que se informa de la tarjeta de fidelidad. | ||||||
terminalCode | Código de la terminal asociada al movimiento que se informa de la tarjeta de fidelidad. |
RabbitMQ – Estado de los limites
La cola de mensaje disponibles para el envío de estado de los limites es:
- rabbitMQ.limitstatus.endpointName >> Nombre de la cola de RabbitMQ para el posteo de datos de tipo LimitStatus (informara movimientos de todos los tipos de limites)
Ejemplo del Json que se envía:
Bloco de código | ||
---|---|---|
| ||
{
"_id": "603a36021082e83690816fe0",
"promotionId": "603a2fa81082e83690816f81",
"benefitId": "603a2fce1082e83690816f88",
"promotionCode": null,
"promotionName": "limite general",
"limitId": "603a2fca1082e83690816f87",
"scope": "RETAILER",
"period": "UNDEFINED",
"maxValue": 10.0,
"customerId": "-",
"storeId": "-",
"numberDays": 0,
"nextReset": "2021-02-27T03:00:00Z",
"lastReset": "2021-02-27T03:00:00Z",
"companyId": "exito",
"limitTypeCode": "benefiedProductCount",
"description": null,
"lastUpdate": "2021-02-27T12:07:30Z",
"active": true,
"currentValue": 1.0
} |
Detalle de los campos:
Campo | Descripción |
id | Id del registro de limite en Mongo. |
promotionId | Id de la promoción en Mongo. |
benefitId | Id del beneficio en Mongo. |
promotionCode | Código de la promoción. |
promotionName | Nombre de la promoción. |
limitId | Id del límite en Mongo. |
scope | Tipo de limite a contabilizar (CUSTOMER, STORE, RETAILER). |
period | Periodo a contabilizar. |
maxValue | Valor máximo al que podrá llegar el limite definido en la promoción. |
customerId | Cliente asociado al límite. |
storeId | Id de la tienda donde se realizó el movimiento del límite. |
numberDays | Cantidad de días definidos para el periodo a contabilizar. |
nextReset | Próximo reseteo del límite. |
lastReset | Ultimo reseteo realizado al límite. |
limitTypeCode | Código del tipo de limite (benefitAmount, benefiedProductCount, benefitApplicationCount). |
description | descripción ingresada en el límite. |
lastUpdate | Ultima actualización del limite (desde consola a promociones con limite definido). |
active | Indica si el limite está a activo (true) o consumido (false). |
currentValue | Valor actual del límite. |
...
Mensajes: Cache de Promociones
...
- Banner con detalle de la incidencia.
- Para conocer el detalle de la incidencia, presione Ver mas detalle. - Lista de procesos de exportación fallidos.
- En el campo Descripción: se podrá visualizar la causa del error
- Una vez corregido error que ocasiona el fallo en el posteo de los mensajes al server RabbitMQ, deberá presionar el botón Reprocesar - Si el procesamiento de los fallos relacionados al posteo de datos vía RabbitMQ es exitoso, la grilla deberá quedar sin registros por Reprocesar.