Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Image RemovedImage Added
MANUAL DE INSTALACIÓNPROMO

PROMO - Manual de Instalación 7.0

...



Painel
borderColor#E4E3E3
titleColor#ffffff
borderWidth1
titleBGColor#704581
titleCONTENIDO


Expandir
titleExpandir contenido
Índice




Âncora
_Toc513638194
_Toc513638194
Introducción

...

A continuación se detallan los requisitos mínimos para la instalación de la Consola de Administración de PROMO que operara con una (1) compañía.
Los requerimientos mínimos de hardware se proveen como una guía para el sizing de un ambiente no productivo. Para instalaciones en ambientes productivos con requerimientos específicos de performance y volumen de datos se requiere un sizing particular para estimar la configuración apropiada.

Considerar que la siguiente configuración sería la necesaria para utilizar un mapa no mayor a 1 MB y sin utilizar funciones de loyalty, de lo contrario debe analizar cuánta memoria debe utilizar.


Descripción

Requisito mínimo (10 Tiendas)

Servidor de Aplicaciones

Wildfly 12

Memoria RAM libre

16 GB

JVM (Java Virtual Machine)

jdk-8u25-windows-x64 o superior

Procesador

8 x 2.5 GHz

Capacidad del disco rígido (libres)

200 GB

Sistema Operativo

Windows Server 2008 R2, Windows 7 64-bit

Servidor de base de datos

MongoDB 4.2


Aviso
titleIMPORTANTE

Los requisitos dependen del uso de funciones y carga esperada.  Entonces se requiere una estimación y estudio de cada caso para realizar un ajuste en los recursos requeridos.


Informações
titleNOTA

El uso de máquinas virtuales agrega un overhead que puede afectar la performance o escalabilidad. 

...

Aviso
titleIMPORTANTE

Adicionalmente se deberá agregar el JDK a la variable de entorno %PATH%. (ver8 Apendice B: Variables de Entorno)

Documentación relacionada

PROMO - Manual de Usuario 7.0

PROMO - Manual de Integración 7.0 - Motor

PROMO - Manual de Integración 7.0 - Servicios

PROMO 7.0 - Manual de Integración - Colas de Mensajes

PROMO - Manual de Usuario Principal 7.0


Ejecución del Instalador (Windows)

...

  • Wildfly 9.
  • PromoSimEngine x.x (motor de simulación)
  • MongoDB 34.62



Los servicios de MongoDB, Wildfly y PromoSinEngine quedaran instalados y podrá optarse al momento de la instalación si se ejecutan al terminar el proceso de instalación o bien si se iniciaran a mano, en caso de ser necesario realizar configuraciones previas el inicio de los servicios. 
Respecto del servicio Wildfly, inicialmente vendrá configurado por defecto el directorio sugerido, ocupando el puerto 8080
Al finalizar el instalador se crearán todos los servicios y directorios correspondientes.

...

Se presentara la siguiente pantalla donde se deberá presionar "Next":

Image RemovedImage Added


Luego se solicitará la aceptación de los términos y condiciones de uso de la aplicación.

Image RemovedImage Added


Luego de aceptados los términos y condiciones, se solicitará que se identifique el nombre del usuario y el e-mail de quien (empresa o persona) está realizando la instalación.

Image RemovedImage Added


A continuación se deberá indicar la ruta de acceso a Java (JDK) y el directorio donde se realizara la instalación de Promo. Por default se propone "c:\synthesis\Promo". Tambien se deberá indicar el directorio donde se instalara la base de datos (MongoDb)

Image RemovedImage Added


Informações
titleNOTA

En caso de que PROMO trabaje integrado con BRIDGE, deberá tildarse la opcion "Install Bridge Integration" para una correcta configuracion de la aplicación.

...

Si no activó el check para instalar el motor como aplicación Tomee, se solicitará indicar el directorio donde se instalará Wildfly, para que el motor se instale como servicio.

Image RemovedImage Added


En caso de no existir el directorio, se solicitara autorización para la creación del mismo.

...

 Se solicitara se informe si se desea instalar o solo activar los servicios que se instalan con PROMO.

Image RemovedImage Added


Ya sea que haya instalado el motor como aplicación o como servicio continuará con los siguientes pasos:

En la siguiente pantalla que se presente, habrá que presionar el botón "Instalar" a fin de dar comienzo al proceso de instalación de PROMO y sus componentes.

Image Removed


Image RemovedImage Added


Finalizada la instalación se mostrara la siguiente ventana donde se informara la correcta instalación de la consola de PROMO y se solicitara dar Clic en "OK" para terminar con el proceso.

Image RemovedImage Added


Âncora
_Toc513638200
_Toc513638200
Estructura de directorios

...

  • synthesis\promo\images: directorio de las imágenes
  • \synthesis\promo\images\profile
  • \synthesis\promo\images\barcode: contiene las imágenes de códigos de barras asociados a cupones emitidos.
  • \synthesis\promo\images\promotion: contiene las imágenes que se asocien a las promociones
  • \synthesis\promo\logs: información sobre las trazas de ejecución de la aplicación, incluyendo información técnica ante cualquier falla.
  • \synthesis\promo\backup: backups de la base de datos MongoDB
  • \synthesis\promo\import: directorio donde deberán alojarse los mapas para la importación de promociones.
  • \synthesis\promo\mdb: aquí se encuentran las funciones utilizadas en la base de datos.
  • \synthesis\promo\engine: el motor de promociones que utiliza la consola para la simulación de las mismas.
  • \synthesis\promo\catalogs: directorio donde se alojaran los archivos de catálogo (.catalogs) que se importaran al iniciar la aplicación. Deberán generarse de manera manual las carpetas correspondientes a cada compañía, indicando en el nombre del directorio el ID de la compañía. (Ej.: \synthesis\promo\catalogs\22 donde 22 corresponde al ID de la nueva Ccia)
  • \synthesis\promo\export: (a partir de Promo v7.1 en adelante) en este directorio se van a bajar los archivos que se exportan con el botón "Exportación Masiva" que se encuentra en los informes. Este directorio se crea automáticamente al realizar la instalación de Promo. Pero debe tenerse en cuenta que si se hace una actualización en lugar de una instalación desde cero, debe crear a mano este directorio.


Âncora
_Toc472761279
_Toc472761279
Âncora
_Toc473099930
_Toc473099930
Âncora
_Toc513638201
_Toc513638201
Instalación Linux (CentOS 7)


Es requisito que antes de realizar la instalación de la consola estén instaladas los siguientes componentes:

  • MongoDB 34.62
  • JDK 1.8.0_25


Junto con la consola de PROMO, durante el proceso se instalarán el motor de simulación y Wildfly.

Âncora
_Toc441587758
_Toc441587758
Âncora
_Toc472761280
_Toc472761280
Âncora
_Toc473099931
_Toc473099931
Âncora
_Toc513638202
_Toc513638202
Instalación MongoDB

...

4.

...

2


Se pueden seguir los pasos en la documentación de instalación online de Mongo.

Linux: https://docs.mongodb.com/v3v4.42/tutorial/install-mongodb-on-red-hat/

...

Terminada la descompresión, se solicitara autorización para proceder con la instalación de la aplicación, dar clic en "Next"
Image RemovedImage Added



En la siguiente pantalla se deberán aceptar los términos y condiciones de uso, una vez leídos los mismos, de estar de acuerdo, dar clic en "Accept" para continuar.
Image RemovedImage Added


Se deberá proveer de un nombre (persona física u organización) y un mail para poder registrar la aplicación y proseguir con la instalación, así como también se solicita re confirmar la aceptación de los términos y condiciones.
Completados los campos, presionar "Next":
Image RemovedImage Added



A continuación se deberá indicar la ruta de acceso a Java (JDK) y el directorio donde se realizara la instalación de Promo. Por default se propone "/usr/local/promo/". También se deberá indicar el directorio donde se instalara la base de datos (MongoDb)
Image RemovedImage Added


Informações
titleNOTA

En caso de que PROMO trabaje integrado con BRIDGE, deberá tildarse la opción "Instalar Integración con Bridge" para una correcta configuracion de la aplicación.


De no existir los directorios se solicitara autorización para la creación de los directorios necesarios para la instalación de PROMO.

Image Removed Image Added
Image Removed

Presionar "Si"


En la siguiente ventana se solicitara indicar el directorio donde se instalara Wildfly.
Image Removed Image Added
En caso de no existir el directorio, se solicitara autorización para la creación del mismo. Dar clic en "Si"

...

Para iniciar la instalación, en la siguiente pantalla habrá que presionar el botón "Installar" a fin de dar comienzo al proceso de instalación de PROMO y sus componentes. Image Removed

Durante la instalación se presentara una ventana de progreso donde se podrá visualizar los componentes que se están instalando y su progreso.
Image Removed Image Added


Finalizado el proceso se presentara un pop-Up de proceso terminado, donde se deberá presionar "Aceptar" y luego "Salir" para terminar el proceso.
Image RemovedImage Added


Una vez instalada la consola, sera será requerido iniciar Wildfly, lo cual podrá hacerse manualmente ejecutando "sudo ./standalone.sh", o bien podrá configurarse Wildfly como servicio en linux siguiendo los pasos indicados en la Web para tal fin.

...


Para Instalar la consola integrada con Bridge, durante el proceso de instalación, ya sea sobre Windows o sobre Linux, deberá tildarse en la ventana de Opciones de Instalación, la opción "Instalar Integración con Bridge"
Image RemovedImage Added


Con lo cual, al presionar "Siguiente", en el siguiente popUp se mostrara como ruta para Wildfly, el directorio donde este instalado la App Server de Bridge.
También deberá tenerse en cuenta que el archivo de configuracion configuración para las conexiones con la base de Bridge, entre otras configuraciones, propias de PROMO sera será "promoconfig.properties".


En este archivo, aparte de encontrar las opciones de configuracion configuración de base de promo (mongoDB) y la estructura de directorio por defecto, también encontraran los valores de configuracion configuración para la integración con Bridge, ya sea se utilice una base SQL o una base Oracle.


Ejemplo:

De usarse un esquema de base de datos u otro habrá que descomenar y configurar la opción correspondiente.

...

Como se mencionó en el punto anterior, el motor de promociones es el componente de PROMO encargado de recibir tickets directamente desde el punto de venta, luego procesarlos, y, finalmente, informar las promociones que participaron y los artículos afectados.
La instalación del motor de promociones se realiza conjuntamente con la instalación de la consola de Promo, al ejecutarse el instalador de la aplicación. La comunicación se establece a través de mensajes XML enviados mediante TCP/IP, REST o Pipes (IBM 4690).

Âncora
_Toc513638213
_Toc513638213
Pre-Requisitos del sistema

...

Se provee un archivo promo-gengine-installer-X.X.X.jar donde X.X.X es la versión del motor que se está instalando (67.40.0x).
Se deberá ejecutar como administrador, en modo comando el instalador del Motor de PROMO ( java –jar promo-gengine-installer-X7.X0.Xx.jar)


Al ejecutarse el instalador aparecerá la siguiente ventana:

Image Removed Image Added

Image Added
Presionar "Siguiente" para continuar.


Se deberán aceptar los términos y condiciones para continuar con la instalación del motor de PROMO.

Image Removed Image Added
Presionar en "Aceptar" para continuar.


Luego de aceptados los términos y condiciones, se solicitara que se identifique el nombre del usuario y el e-mail de quien (empresa o persona) está realizando la instalación.

Image Removed Image Added
Presionar "Siguiente" para continuar.


A continuación se deberá indicar la ruta de acceso a Java (JDK) y el directorio donde se realizara la instalación del motor de PROMO. Por default se propone "c:\synthesisnapse\gengine". 

Se podrá indicar aquí, por medio del check "Instalar Servidor REST (Default TCP/IP)", para que se instale el motor como SERVIDOR REST sino se instalara por default en modo TCP/IP.

...

Aviso
Importante: Verificar de No instalar el motor donde se instalo previamente el motor de simulacion de la consola  (el motor de simulación se instala por default en \synthesisnapse\promo\engine) de ocurrir eso no funcionará correctamente.



Image Removed Image Added
Presionar "Siguiente" para continuar.

Si se desea instalar el motor como aplicación, se debe tildar el cheeckbox

Image Added

Expandir
titleSeleccionar TomEE

Si se tildo el checkbox, se observará la pantalla siguiente; donde se deberá seleccionar el directorio donde estará alojado el servidor de aplicaciones de TomEE:

Image Added


En el siguiente Pop-UP se deberá indicar la URL de acceso a "Director" para futuras actualización y el código de tienda que tomara el motor A continuación se deberá indicarImage Removed
Presionar

Image Added

Luego de presionar "Siguiente", debe completar los parámetros solicitados:

Image Added

Si se presiona "Siguiente" para continuar.

Image Added

En la siguiente pantalla que se presente, habrá que presionar el botón "Instalar" a fin de dar comienzo al proceso de instalación del motor de PROMO y sus componentes.


Image RemovedImage Added


Finalizada la instalación se mostrara la siguiente ventana donde se informara la correcta instalación del motor de PROMO. Se solicitara dar Clic en "Aceptar" y luego en "Salir" para terminar con el proceso. 

Image Removed Image Added



Terminado el proceso de instalación del motor de promociones podrá chequearse en los servicios del sistema la existencia de dos nuevos servicios correspondientes al motor de promociones y al agente Director que ya estarán ejecutándose de manera atomística, hecho que marcara la correcta instalación y puesta en funcionamiento del nuevo motor de PROMO.

...


Los parámetros de configuración de la sección General son:

Tag/ParámetroDescripciónValor por defecto
simulationIndica si el motor opera para simulaciones desde la consola o no. Valor por defecto "False" (No simulación)false
compatibilityModeindica si el motor opera en modo compatible con el antiguo motor (Integraciones 4690) agrupando o no los beneficios en la respuestas dadas por el motor. Por default el parámetro viene definido en "False" (No compatble) por lo que en este modo agrupara los beneficios (motor nuevo). En caso de definir el beneficio en "True", no se agruparan los beneficios (compatibilidad con antiguo motor).false
mapIdentifiers identificaran las carpetas por las cuales el motor irá en búsqueda del mapa para evaluar la promoción. Deberán definirse en una lista separada por comas.companyId
ticketIdentifiersindicara por qué atributo se identificara al ticket cuando el motor opere como multiempresa.store, terminal
disableLoyaltyEl valor por default de este parámetro será "false" indicando que el motor mantiene una comunicación con PROMO central para la gestión de elementos de Fidelidad. En caso de configurar en "true" este parámetro, se deshabilitara la comunicación con PROMO central, por lo que un status de Finish, commit, rollback, etc etc se evaluara como un status "sales" (método de evaluación previo a Fidelidad).false
disablePricesEl valor por default de este parámetro será "false" indicando que el motor utiliza preciadores, esto habilitara la funcionalidad de precios (desde la consola se generan listas de precios y
seran distribuidos
serán distribuidos al motor) y se disponibilizara el status de prices y en caso de utlizar en los tickets
items
ítems con unitPrice=0 los buscara los precios de los preciadores (listas de precios). En caso de configurar en "true" este parámetro indica que NO esta habilitada esta funcionalidad.false
engineId identificador único del motor. Deberá configurarse cuando se desee que el motor reporte su mapa activo a la consola de PROMO.0
engineNameNombre único del motor.Junto con el "EnginerId" deberá configurarse cuando se desee que el motor reporte su mapa activo a la consola de PROMO.
promotionCacheMode(desde v7.EP2) Activa el modo de trabajo "Cache de Promociones" del motor.  Reservado para SOLO este modo de trabajo particular.false
useExactLimitValueOtorgamiento de beneficio con límites: true otorga el saldo(default), false no otorga beneficio si el apply supera el saldotrue
negativeDiscountPermite o no que los descuentos otorgados superen el valor del productotrue
adjustCalculatedCoupon

Limita (cuando esta en true) dentro de un mismo paso que un cupon no de mas del 100% de un producto, (descuentosMonetarios + valor del cupon > xprice) recorta el valor del cupon para que no supere el 100% (a partir de

7.1)

false


Configuración de la operatoria Prices (contingencia) del Motor:

...

Bloco de código
languagexml
themeRDark
    <promoCentral>
        <url>http://localhost:8080/promo</url>
        <user>sender</user>
        <password>mate</password>
        <!--Define el timeout en segundos de comunicacioncomunicación con la consola central si se especifica este aplica en general y anula a los otros dos.-->
        <!-- timeout></timeout -->
        <!--Define el timeout en segundos de conneccion con la consola Central.-->
        <!-- connectionTimeout></connectionTimeout -->
        <!--Define el timeout en segundos de comunicacion con la consola Central.-->
        <!-- communicationTimeout></communicationTimeout -->
        <!-- Descomentar en el caso que la mensajeria no lo implemente y se requiere el envio de un valor fijo -->
        <!-- companyId></companyId -->
    </promoCentral>

...

Bloco de código
languagexml
themeRDark
<!--Directorio de trabajo del cache de datos interno utilizado por el motor, en caso de no especificarse el motor usa "./data" -->
<cachedata>
 <directory>data</directory>
</cachedata>


Optimización de carga de mapas en motor

...

(a partir de Promo v7.1)

Esta mejora consiste en habilitar la utilización de mapas pre-compilados, significa que el motor, luego de procesar un mapa xml generado por consola, guardará archivos compilados de mapas, promociones e indices en el directorio indicado, para que en caso de reiniciar el motor, cargar los mapas compilados en vez de cargarlos desde el xml, lográndose con esto un mejora de tiempo sustancial en mapas grandes.

...

Para configurar esto se poseen 3 nuevos parametros en el archivo config.xml:

TagDescripción
useHttps true indica que el motor debe trabajar en este modo.
keyStoreEl nombre del archivo que contiene el almacén de claves, especificando su ruta absoluta
keyStorePasswordLa contraseña del almacén de claves en texto plano.


Un ejemplo de configuración sería:

...

  1. En este ejemplo vamos a generar un almacén de claves de nombre keystore para un alias de nombre Jettycon validez del certificado de 365 días y los algoritmos detallados.  Pedirá información que llevará el certificado, al final darle si para terminar. La clave que pide al inicio es una nueva clave y debe tenerse en cuenta ya que se configurará la misma en el motor.  Según la página esto funciona sólo para pruebas porque el certificado no es de confianza para el cliente (navegador por ej.).

    keytool -keystore keystore.dat -alias jetty -genkey -keyalg RSA -sigalg SHA256withRSA -validity 365   

  2. Se puede revisar el almacén de claves con;


    keytool -list -keystore keystore.dat -storetype jks -storepass THEPASSWORD -v

  3. Se genera el archivo csr (solicitud de firma del certificado / certificate signing request - CSR).



    keytool -certreq -alias jetty -keystore keystore -file jetty.csr

  4. En el config.xml del motor ingresar los siguientes valores:

     <useHttps>true</useHttps>

     <keyStore>C:\keystore.dat</keyStore>

     <keyStorePassword>THEPASSWORD</keyStorePassword>

...

Autenticación por usuarios y roles


Informações
titleAtención
  1. Desde v6.5.5
  2. Esta funcionalidad SOLO aplica a Motor como servidor REST.

...

Para configurar esto se poseen nuevos parametros en el archivo config.xml:

TagDescripción
useRoleAccessRestrictions true indica que el motor debe trabajar en este modo.
usersDefinitionEl nombre del archivo que contiene el almacén de usuarios y claves, especificando su ruta absoluta
configurationDirectoryLa ruta completa donde se encuentra el archivo web.xml de configuración de seguridad.  Si el archivo no existe se tomarán los valores por defecto con un unico usuario y rol.


Un ejemplo de configuración sería:

...

  • [promo.MIDDLEWARE.MESSAGING]- WARNING: INVALID TICKET: cvc-datatype-valid.1.2.1: 's250.0' is not a valid value for 'double'.
    Indica que se ha recibido una petición o ticket que posee un valor o tipo de dato inválido. En este caso, el motor dará un mensaje de respuesta con un código de error (ver "Manual de mensajería – Promo").

...

  • .

...


Âncora
_Toc513638226
_Toc513638226
Información de Configuración

...


Configuraciones disponibles para el Usuario Principal:

MóduloClaveValorDescripción
1
Promooperative.systemwindowsSistema operativo
2
Promosoap.urlhttp://10.4.13.108:8280/bridge/services/bridgeCoreSOAP?wsdlDirección de web service de bridge.
3
Negociolanges_AR (Argentina)General: idioma de la aplicación (etiquetas)
4
NegociobackupDirectoryC:/synthesis/promo/backupGeneral: de backup
5
NegociomongoDBDirectoryC:/synthesis/promo/mdb/binGeneral: directorio base de datos
6
NegociomongoDBHostnamelocalhost

Host de la base de datos

7NegociomongoDBPort27017Puerto de la base de datos8

.  En caso de poseer una configuracion en replicaset el formtao de configuracion es: "replicaName/node1:port1,node2:port2"

Se destaca que deberá de definirse el campo mongoDBPort vacío cuando se utilice la función de Backup en Clusters

NegociomongoDBPort27017Puerto de la base de datos.  En caso de replicaset este parametro es ignorado.
GeneralauditDateCleaner30
Eliminar
Existe un proceso que elimina registros de las tablas de
importación.9
auditoría. Se puede configurar el valor que desee pero tener en cuenta que esos registros ocupan lugar en el disco.
GeneralimportReceiptDateCleaner30Eliminar registros de las tablas de importación.
10
GeneralticketGeneratorSeconds2DEMO: cantidad de segundos de generación de ticket para demos
11
NegociocharsMaximumAlphabetical 20Cantidad máxima de caracteres alfabéticos
12
NegociocharsMaximumNumerical 20Cantidad máxima de caracteres numéricos
13
NegociocharsMaximumQuantity 20Cantidad máxima de caracteres totales
14
NegociocharsMaximumSpecial 20Cantidad máxima de caracteres especiales
15
NegociocharsMinimumQuantity 7Cantidad mínima de caracteres totales
16
1NegociocharsMinimumUser 3Cantidad
minima
mínima de caracteres en el nombre de usuario
17
NegociomaximumLoginFailedCount 3Cantidad máxima de reintentos de login fallidos sucesivos
18
NegocionumberQuantity 1Cantidad mínima de caracteres numéricos
19
NegociopasswordExpirationDays 30Días de expiración de la contraseña del usuario
20
NegociospecialCharsQuantity 0Cantidad mínima de caracteres especiales
21
NegociostringQuantity 1Cantidad mínima de caracteres alfabéticos
22
NegociouserBlockDays 90Bloqueo de usuario - días de inactividad
23
NegociouserLockTime 30Periodo de bloqueo de la cuenta de usuario (en minutos)
24
PromoengineSalesPathC:/synthesis/promo/engine/sales/Directorio de Mapas del Motor



Configuraciones disponibles para el Usuario Admin. de cada compañía:

...

Desinstalación

...

1- Bajar servicios

    • PromoSImEngine
    • Wildfly
    • MongoDB
    • PromoEngine (si se instaló el motor)
    • PromoEngineDirector (si se instaló el motor)

2- Borrar directorio C:\Synthesis (ruta donde se instaló la consola)

3- Desinstalar MongoDB

4- Borrar los servicios de PromoSinEngine, Wilfly y MongoDB, y PromoEngine, PromoEngineDirector si se instaló el motor

Reverso de actualizaciones ante problemas en el proceso

Ante algun problema durante la actualizacion de una version de consola o motor, debera de bajarse los servicios involucrados y colocar el archivo .war o .jar anterior,  segun se trate de una actualizacion de consola o motor respectivamente y volver a subir los servicios.

...

ModuloClaveValorDescripción
1
CuponesbarcodePathC:/
synthesis
napse/
promo
promo70/images/barcode/Directorio
imagenes
imágenes de
codigos
códigos de barra
2
CuponesbarcodeUrlhttp://localhost:8080/promo/assets/barcode/Url
imagenes
imágenes de
codigos 8
códigos de barra
3PromofileDirectoryC:/synthesis/promo/catalogs/napse\Importación de catálogo: directorio donde estarán los archivos4NegociomoneySymbol$Símbolo de moneda5Tarjetas de fidelidadmax.qty999Cantidad máxima de tarjetas a generar por cada operación de alta masiva6Tarjetas de fidelidadisEditableAfterCardsGenerationfalsePermitir la edición del tipo de tarjeta luego de haber generado una tarjeta activa7Tarjetas de fidelidadprefix.activefalseUtilizar prefijo númerico incremental para tipos de tarjeta
CuponesrabbitMQ.couponHistory.endpointName
Nombre de la cola de RabbitMQ para el posteo de datos de tipo CouponHistory
CuponesCODE128PPPSSSTTTnnnnnnnnnnnnnnnnnnFormato de código de barras CODE128
9
. Más detalle ver en:  _Formato_de_Código
CuponesEAN13PPPSSSTTTnnncFormato de código de barras EAN13
10
. Más detalle ver en:  _Formato_de_Código
CuponesUPCAPPPSSSTTTnncFormato de código de barras UPCA
11Cuponesmax.
. Más detalle ver en: _Formato_de_Código
Cuponesmax.qty999Cantidad
maxima
máxima de generación Masiva de Cupones por transacción
12
Cuponesprefix.activetrueUtilizar prefijo
númerico
numérico incremental para tipos de cupón
13
CuponesisEditableCouponTypeDistributedfalseHabilita la edición de tipos de cupones en estado "Distribuidos"
CuponesvisibleDigits
Cantidad de dígitos visibles del código de cliente que se verán en los cupones
CuponesamountFormat%.02fFormato en el que se imprimen los montos de los cupones
14
Cupones
Promo
nameInfoPos0
applicationMethodresumePromociones: valor por defecto en el método de aplicación15PromodivisionMethodproportionalPromociones: valor por defecto en el método de división16PromodivisionPricebenefited-pricePromociones: valor por defecto el tipo de precio beneficiado17PromofileList.txt.Separator,Importación de catálogo: separador18PromofileList.xls.ColStart0Importación de catálogo: columna de comienzo de la importación de catálogo19PromofileList.xls.DirectionverticalImportación de catálogo: forma de importación20PromofileList.xls.RowStart0Importación de catálogo: fila de comienzo de la importación de catálogo21Promoseparator|Importación de catálogo: separador de columnas22PromoterminatedOnErrortrueTermina la importación de catalogo, si al menos uno fallo. Si es false, no termina e informa los catalogos fallidos23PromoupdateSize100Importación de catálogo: tamaño de subida24NegociocharsMaximumAlphabetical 20Cantidad máxima de caracteres alfabéticos25NegociocharsMaximumNumerical 20Cantidad máxima de caracteres numéricos26NegociocharsMaximumQuantity 20Cantidad máxima de caracteres totales27NegociocharsMaximumSpecial 20Cantidad máxima de caracteres especiales28NegociocharsMinimumQuantity 7Cantidad mínima de caracteres totales29NegociocharsMinimumUser 3Cantidad minima de caracteres en el nombre de usuario30NegociomaximumLoginFailedCount 3Cantidad máxima de reintentos de login fallidos sucesivos31NegocionumberQuantity 1Cantidad mínima de caracteres numéricos32NegociopasswordExpirationDays 30Días de expiración de la contraseña del usuario33NegociospecialCharsQuantity 0Cantidad mínima de caracteres especiales34NegociostringQuantity 1Cantidad mínima de caracteres alfabéticos35NegociouserBlockDays 90Bloqueo de usuario - días de inactividad36NegociouserLockTime 30Periodo de bloqueo de la cuenta de usuario (en minutos)37PromodistributionThreadPool10Cantidad de hilos creados para la distribución simultánea38PromopathC:/synthesis/promo/import/Directorio para la importacion de Mapas de Promociones.39Promobenefit.activefalseUtilizar campo numérico incremental para beneficios40Promopromotion.code.activefalseUtilizar campo numérico incremental para promociones41Cuponesdefault.from[email protected]Email por defecto con el que se enviaran los correos42Cuponesdefault.insertImagesfalseIndica si acepta o no barcodes43Cuponesdefault.subjectPromo Test MailAsunto por default44Cuponeshostsmtp.gmail.comHost del proveedor de email45Cuponespassword**************Contraseña de la cuenta de email46CuponesportPuerto de conexión47Cuponessmtp.authtrueHabilitar Auth SMTP48Cuponessmtp.port587Puerto SMTP49Cuponessmtp.socketFactory.classjavax.net.ssl.SSLSocketFactorynombre de la clase SSLSocketFactory50Cuponessmtp.socketFactory.fallbackfalseFallback de socketFactory51Cuponessmtp.socketFactory.port465Puerto SMTP de socketFactory52Cuponessmtp.starttls.enabletrueHabilitar Start TLS53Cuponesusername[email protected]Usuario o nombre de la cuenta de email54Promouse.item.catalog1Mapas: algoritmo de cálculo de colisiones55PromocleanEngineStatusHistory7Tiempo en días que la consola mantendrá el historial de estados del motor56PromodeployedEditable.enabledfalseHabilita la edición de promoción con el estado Deployed.57Promopromotion.enginestatus.communication600Tiempo que transcurre desde el último informe de estatus del motor o consola, para considerarlo offline. Si en ese tiempo no informó se lo considera offline.58Promopromotion.images.height250Promociones: alto default de las imagenes59Promopromotion.images.pathC:/synthesis/promo/images/promotion/Promociones: directorio para almacenamiento de imágenes60Promopromotion.images.width250Promociones: ancho default de las imagenes61PromoreportParticipantsfalsePromociones: valor global que determina si la promoción informa participantes62PromoreportParticipantsVisibletrueDetermina si se visualiza o no, la opción reportar participantes63Promomethod.of.paymentNOTHING=No calcular promociones por medio de pagoPromocion Codificada: NOTHING, ON_ITEMS_PAID, ON_PAYMENT_MADE64Promomethod.of.payment.onItemsPaid.classcom.synthesis.promo.engine.partialPayment.hardcoded.promotion.PartialPaymentsGSPromotionPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.65Promomethod.of.payment.onItemsPaid.namePromociones basadas en itemsPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.66Promomethod.of.payment.onItemsPaid.tenderMethodPropertyKeypromo.configuration.tenderMethod.itemMethodPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.67Promomethod.of.payment.onPaymentMade.classPartialPaymentsSSPromotionPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.68Promomethod.of.payment.onPaymentMade.namePromociones basadas en pagosPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.69Promomethod.of.payment.onPaymentMade.tenderMethodPropertyKeypromo.configuration.tenderMethod.paymentMethodPromocion Codificada: nombre de la promoción por medio de pago basada en ítems.70PromoldapAuthenticationfalseDetermina si se autentica contra un Directory Service71PromoldapAuthentication.autheticationModeDIGEST-MD5Es el modo de seguridad que se autentica, usar "DIGEST-MD5" como valor default dado que este modo encripta la información contra el Directory Service.72PromoldapAuthentication.urlServerURL del server contra el que se autentica.73PromotestEnginePORT3001Simulación: puerto en el que corre el motor para simulación74PromotestEngineRetries2Simulación: reintentos de conexión al motor75PromotestEngineSalesPathC:/synthesis/promo/engine/sales/Simulación: ruta del motor76PromotestEngineTimeout8000Simulación: timeout de conexión al motor77Redes socialesfacebook.appId1068803576479010Id de la aplicación de facebook78Redes socialesfacebook.permissions[publish_actions, manage_pages]Permisos de la aplicación de facebook79Redes socialesfacebook.secretdfa5ffe6aa6306fc49472dbcba3c16a9Clave secreta de la aplicación de facebook80Redes socialesfacebook.securehttpsProtocolo de conexión segura a la aplicación de facebook81Redes socialestwitter.accessToken2848331890-D2geAfGVL9u2bD6TrD1LxH5fUsXlBnHLa3FOziKToken de acceso a twitter82Redes socialestwitter.accessTokenSecretNHd6JbcoLaBK5QEfrKgmOaQwwxmbwlEtOYlQni3Fx6H3yToken secreto de acceso a twitter83Redes socialestwitter.consumerKeyHTPKOHdatasoDsm2Ud7ULnUapAKFXoCClave consumer key de twitter84Redes socialestwitter.consumerSecretX1plqdQWK0nRCGz6KFxm37IZTzp4O7w9BjLSspIr4mYWLZsrOyClave consumer secret de twitter85Tarjetas de fidelidadcontinueOnErrortruePermitir continuar la importación de catálogo de tarjetas ante un error86Tarjetas de fidelidadinsertionOptionINSERT_OR_UPDATEDescribe la opción de inserción para la importación del catálogo de tarjetas87TransaccionescleanTransactions90Cantidad de días que permanecerán los registros de transacciones en la base de datos88Lista de preciospriceList.distribution.items.batch.size1000Cantidad de Precios a enviar al motor desde la consola en la distribución de precios (por comunicacion).89Lista de preciospriceList.job.cleanPriceListSchedule.time30Cantidad de días a mantener los items de la lista de precios futuros procesados90Lista de preciospriceList.lockForUpate15Minutos para poder desbloquear Lista cero en el proceso rest91Lista de preciospriceList.mongo.bulk.insertOrUpdate200Cantidad de registros a insertar por lote en el proceso rest

...

  • actualización de la consola de administración (de existir alguna actualización se entregará la correspondiente documentación y la forma de instalarla),
  • depuración de backups de BD.
Informações
titleNOTA

Tener en cuenta que para realizar el mantenimiento se deberá detener la aplicación, realizar los cambios y luego volver a iniciarla.

...

La aplicación registra un backup automático diario de la base de datos MongoDB. Es por ello que es necesario realizar un cierto mantenimiento, consistente en la depuración de los mismos periódicamente a fin de que la carpeta de backup no ocupe demasiado en disco.

Alta de cliente durante la transacción

...

Para que el alta de clientes pueda efectuarse al momento de procesarse una transacción, deberá de habilitarse en el archivo de configuraciones de la Consola de Promo (“promoplus.properties”) el siguiente atributo:

...

 # Habilita el alta de clientes on the fly

promo.allowNonExistingCustomers = true

Una vez actualizado, deberá de reiniciarse el Wildfly para que los cambios sean tomados correctamente.

Los clientes serán creados utilizando el estado "loyaltyValidation" en el caso de enviarse los datos mínimos y al mismo tiempo Promo detecte que el cliente no existe.  Los datos mínimos mencionados son (marcados en Rojo): 

<customer-add seq="1" id="10090504" identifier="10090504" type="test" name="pepe" lastName="rodrigues" identifierType="cpf" email="mimail@test.com" />

Bloco de código
themeEmacs
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="napse" store="1" terminal="1" date-time="2020-11-03 11:11:22" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" map-version="2" tckpath="Y" suggest="true">
<customer-add seq="1" id="47001517" identifier="47001517" type="test" name="bruno" lastName="Lopez" identifierType="cpf" email="[email protected]" />
</message>

Nota: Para mas informacion ver "Manual de Integracion 7.0 - Motor" - LoyaltyValidation.

Enmascarar Contraseña de DB

La clave enmascarada de base de datos se genera mediante la promo-crypto-tool que sera provista.

El programa toma como ingreso a la clave a encriptar y devuelve la clave encriptada que se debe situar en el archivo promoplus.properties en una entrada llamada grails.mongodb.encryptedPassword (por ej. grails.mongodb.encriptedPassword=lYYBAfxLR40=).

En caso de utilizar grails.mongodb.encryptedPassword se debe considerar comentar o eliminar la anterior grails.mongodb.password ya que en caso de existir ambas siempre utilizará grails.mongodb.password. En caso de que el archivo promoplus.properties no exista, se tomará, como valor por defecto, a v9vbhV.

Para encriptar una clave se debe utilizar promo-crypto-tool de la siguiente forma en una consola: 

Bloco de código
languagec#
themeEmacs
java -jar <nombre del jar> <contraseña a encriptar>, por ej java -jar promo-crypto-tool-1.0.0.jar abcdefg

o bien

Bloco de código
languagec#
themeEmacs
java -jar <nombre del jar> y al ejecutarlo, de modo interactivo, solicitará el ingreso de la contraseña.

En ambos casos la contraseña encriptada se obtendrá por pantalla.

Al momento de levantar el servidor, se hará uso de Datasource.groovy que mantiene el llamado a assignMongodbPassword() el cual a su vez llama al desencriptador para obtener la contraseña para asignársela a grails.mongodb.password.

Informações
titleNOTA

Se debe considerar la limitación del algoritmo tripledes, el cual acepta sólo caracteres us-ascii como entrada del encriptador. Utilizar caracteres diferentes genera contraseñas encriptadas inválidas.

Informações
titleNOTA 2

Se asume que si existe, en el archivo promoplus/promoconfig.properties, una contraseña no encriptada (grails.mongodb.password) no debe existir la entrada de contraseña encriptada (grails.mongodb.encryptedPassword) y viceversa. La entrada no deseada se puede eliminar o comentar.

...

Para trabajar con redes sociales PROMO posee una serie de opciones de configuración que se describen a continuación. También es importante aclarar que los servicios de redes sociales están en constante evolución y cambio por lo cual aquí se hace referencia al sitio del servicio en cuestión para obtener la información actualizada al respecto.

...

Desde la consola de cada compañía, accediendo con el usuario administrador, y accediendo a Administración Información de configuración se encontraran las siguientes configuraciones que serán necesarias completar para la correcta publicación en la red social.

Image Removed

Los datos presentes en esta imagen son solo de carácter ilustrativo y deberán ser reemplazados por las credenciales adquiridas con los usuarios de desarrollo de cada aplicación.

  • Generación de Aplicación en Facebook

Para poder utilizar la publicación en Facebook se deberá ingresar a https://developers.facebook.com/, darse de alta como desarrollador de Aplicaciones Facebook y agregar una nueva aplicación siguiendo los pasos indicados en la página.
Esto aplica a la versión de App Facebbok 2.9, pero es importante notar que al crear una aplicación para Facebook, se comienza en estado de desarrollo y para poder realizar publicaciones hay que dar los permisos de Administrador al usuario de FB que realizara las publicaciones. Por otra parte, si se quiere compartir o que otro usuario pueda realizar publicaciones, es necesario ser amigos entre los usuarios y darle permisos de administrador. Al acceder a la URL indicada más arriba, se accederá a la sección de "Facebook for Developers" de Facebook.

...

Identificador de la aplicación >> grails.plugin.facebooksdk.app.id
Clave secreta de la aplicación >> grails.plugin.facebooksdk.app.secret

Sera necesario tener una pagina de Facebook dada de alta y asociada a la cuenta de usuario de facebook para poder realizar las publicaciones en esta pagina.
Desde el perfil de usuario con el que se haya generado la app de Facebbok, se deberá dar clic en el menú desplegable de la cual se tendrá acceso a las configuraciones y paginas.
En este menú dar clic en "Crear pagina", y generarla en base al perfil del negocio siguiendo los pasos indicados por facebok
Una vez generada la pagina y configurados los datos en el archivo de configuracion aportados por la aplicación generada, se podrá reiniciar la consola y proceder a la publicación de las promociones en la red social.

Informações
titleNOTA

Se deberá ser administrador tanto de la pagina como de la aplicación generada en Facebook para poder realizar las publicaciones desde PROMO. 

...

Desde la consola de cada compañía, accediendo con el usuario administrador, y accediendo a Administración Información de configuración se encontraran las siguientes configuraciones que serán necesarias completar para la correcta publicación en la red social.

Image Removed

Los datos presentes en esta imagen son solo de carácter ilustrativo y deberán ser reemplazados por las credenciales adquiridas con los usuarios de desarrollo de cada aplicación.

...

Deberá accederse a la URL https://developer.twitter.com/ y presentara la siguiente pantalla:
Image Removed

Deberá darse clic en el botón correspondiente al usuario logueado en Twitter,  se desplegara un menú y se dará clic en "Apps"

Se presentara la siguiente pantalla y debera darse clic en "Create an app"
Image Removed

...

Para obtener los Ids y Tokens deberá darse clic en la solapa "Keys and Tokens" donde se visualizaran los datos necesarios para configurar correctamente los permisos de acceso desde Promo.

Image Removed

Aviso
titleIMPORTANTE

No podrán subirse a las redes sociales imágenes con tamaños motor a 1 MB.

Integración con Syslog/QRADAR

La implementación del envío de eventos a QRadar se apoya en el sistema de logueo log4j utilizado por Promo, agregando un appender específico para syslog "SysLogAppender" disponible en el paquete log4j, y el desarrollo de un clase que presta servicio a tal fin denominada "SysLogService" la cual formatea los mensages en otra clase "SysLogMessageFactory".

Para habilitar el envío a QRadar, se debe editar el archivo de configuracion de logueo "log4j.xml" insertando las siguientes entradas antes del final:

Bloco de código
languagexml
themeEmacs
<appender name="syslogappender" class="org.apache.log4j.net.SyslogAppender">
    <param name="syslogHost" value="myserver:myport"/>
    <param name="facilityPrinting" value="false"/>
    <param name="facility" value="AUTHPRIV"/>
    <param name="header" value="false"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SXXX} %m%n"/>
    </layout>
 </appender>
 
 <logger name="sts.console.audit.SysLogService" additivity="false">
    <level value="info"/>
    <appender-ref ref="syslogappender"/>
 </logger>

</log4j:configuration>

Cambiar en el parámetro "syslogHost" , el valor "myserver:myport", por el correspondiente a la dirección ip y port del syslog server QRadar.  Ejemplo: localhost:514

Luego re-deployar la consola de Promo para que tome la configuración.

Tipos de eventos :

Los eventos que serán enviados a QRadar en una primera instancia son los correspondientes a usuario: login, logout, login failed, nuevo usuario, modificación de usuario.

...

IndistintoDescripción de las opciones para el POS
CuponesnameInfoPos1Campo 1Descripción de las opciones para el POS
CuponesnameInfoPos2Campo 2Descripción de las opciones para el POS
CuponesexternalAmountAttributeCodeOfitemAddcalCouponValAtributo que se utilizará en la etiqueta item-add para indicar el monto externo del cupón
Cuponesdefault.from[email protected]Email por defecto con el que se enviaran los correos
Cuponesdefault.insertImagesfalseIndica si acepta o no barcodes
Cuponesdefault.subjectPromo Test MailAsunto por default
Cuponeshostsmtp.gmail.comHost del proveedor de email
Cuponespassword**************Contraseña de la cuenta de email
Cuponesport
Puerto de conexión
Cuponessmtp.authtrueHabilitar Auth SMTP
Cuponessmtp.port587Puerto SMTP
Cuponessmtp.socketFactory.classjavax.net.ssl.SSLSocketFactorynombre de la clase SSLSocketFactory
Cuponessmtp.socketFactory.fallbackfalseFallback de socketFactory
Cuponessmtp.socketFactory.port465Puerto SMTP de socketFactory
Cuponessmtp.starttls.enabletrueHabilitar Start TLS
Cuponessmtp.ssl.trust*Nombre de host de certif de confianza (* todos)
Cuponesusername[email protected]Usuario o nombre de la cuenta de email
Lista de preciospriceList.distribution.force.offlinefalse

Habilita la acción descargar contingencia en todo momento

Lista de preciospriceList.job.cleanPriceListSchedule.time90Cantidad de días a mantener los ítems en la lista de precios pendientes de impresión
Lista de preciospriceList.lockForUpate15Minutos para poder desbloquear Lista cero en el proceso rest
Lista de preciospriceList.mongo.bulk.insertOrUpdate200Cantidad de registros a insertar por lote en el proceso rest
Lista de preciospriceList.distribution.print.beforetrue

Requiere Impresión previa para poder distribuir Precios.

Lista de preciospriceList.requiresActivationfalseParámetro para configurar si requiere activación de listas de precios
NegociomoneySymbol$Símbolo de moneda
NegociocharsMaximumAlphabetical 20Cantidad máxima de caracteres alfabéticos
NegociocharsMaximumNumerical 20Cantidad máxima de caracteres numéricos
NegociocharsMaximumQuantity 20Cantidad máxima de caracteres totales
NegociocharsMaximumSpecial 20Cantidad máxima de caracteres especiales
NegociocharsMinimumQuantity 7Cantidad mínima de caracteres totales
NegociocharsMinimumUser 3Cantidad mínima de caracteres en el nombre de usuario
NegociomaximumLoginFailedCount 3Cantidad máxima de reintentos de login fallidos sucesivos
NegocionumberQuantity 1Cantidad mínima de caracteres numéricos
NegociopasswordExpirationDays 30Días de expiración de la contraseña del usuario
NegociopublishedDays 7Cantidad de días de antigüedad de precios publicados de competidores
NegociospecialCharsQuantity 0Cantidad mínima de caracteres especiales
NegociostringQuantity 1Cantidad mínima de caracteres alfabéticos
NegociouserBlockDays 90Bloqueo de usuario - días de inactividad
NegociouserLockTime 30Periodo de bloqueo de la cuenta de usuario (en minutos)
Negociocompetitors.images.pathC:\synthesis\promo\images\custom\competitors\

Directorio para almacenamiento de imágenes de competidores

NegociocompetitorsPricesItems.images.pathC:\synthesis\promo\images\custom\competitorsPricesItems\

Directorio para almacenamiento de imágenes de precios publicados de competidores

PromofileDirectoryC:/napse/promo70/catalogs/2\Importación de catálogo: directorio donde estarán los archivos
PromodecimalSeparator.Separador de decimales, solo para Lista de precios y para PromoLite. Para el resto lo toma de la configuración de la máquina.

Promo


groupingSeparator

,

Separador de miles, solo para Lista de precios y para PromoLite. Para el resto lo toma de la configuración de la máquina.

Promo

additionalProvider1FieldName


Sobreescribe el nombre del campo del proveedor adicional 1 del beneficio

Promo

additionalProvider2FieldName


Sobreescribe el nombre del campo del proveedor adicional 2 del beneficio.
PromoapplicationMethodresumePromociones: valor por defecto en el método de aplicación
PromodivisionMethodproportionalPromociones: valor por defecto en el método de división
PromodivisionPricebenefited-pricePromociones: valor por defecto el tipo de precio beneficiado
PromorequiredBothSupplierstruePromociones: valor por defecto si requiere ambos proveedores del beneficio
PromofileList.txt.Separator,Importación de catálogo: separador
PromofileList.xls.ColStart0Importación de catálogo: columna de comienzo de la importación de catálogo
PromofileList.xls.DirectionverticalImportación de catálogo: forma de importación
PromofileList.xls.RowStart0Importación de catálogo: fila de comienzo de la importación de catálogo
Promoseparator|Importación de catálogo: separador de columnas
PromoupdateSize100Importación de catálogo: tamaño de subida
Promovalidate.autocomplete.existing falseValida que los campos autocomplete de catálogos SOLO permita valores existentes
PromovalidateRelatedEntitiestrueValidar catálogos relacionados al catálogo de clientes
Promoattribute.relationship.validation.requiredfalseRequiere validación de datos de atributos de ítem en la condición de promociones
Promocustomer.requiredfalse

La promoción requiere condición de Cliente para considerarse completa

PromodateTime.requiredfalse

La promoción requiere condición de Fecha con hora para considerarse completa

Promotransaction.requiredfalseLa promoción requiere condición de Transacción para considerarse completa
Promovalid.date.couponTypetrueValida si la vigencia de la promoción esta contemplada dentro de la vigencia del cupón
PromodistributionThreadPool

10

Cantidad de hilos creados para la distribución simultánea
Promopromocache.enabled

false

Habilita la generación de cache de ítems participantes en promociones
Promopromocache.engineHost

localhost

Servidor en el que corre el motor de cache de promociones
Promopromocache.enginePort

3002

Puerto en el que corre el motor de cache de promociones
Promopromocache.engineRetries

2

Reintentos de conexión al motor de cache de promociones
Promopromocache.engineTimeout8000Timeout de conexión al motor de cache de promociones
Promopromocache.imagesURL

http://localhost:8080/promo/assets/images/

PromoCache: URL Imágenes Promociones.
Promopromocache.salesPath

C:\synthesis\promo\cache\sales

Directorio de mapas del motor de cache de promociones
Promopromocache.tasksQuantity

10

Cantidad de hilos de ejecución del cache de promociones.
Promoscheduled.enabledfalseGeneración y distribución programada de mapas.
Promoscheduled.filter.enablefalse

Filtrar promociones por tienda para la distribución programada.

Promoscheduled.mapVersiontrue

Incrementar la versión del mapa para la distribución programada.

Promomicrosoft.crm.clientId
Identificador del cliente de Microsoft Dynamics CRM
Promomicrosoft.crm.clientSecret
Client Secret de Microsoft Dynamics CRM
Promomicrosoft.crm.coupon.batch.size1000Cantidad de Cupones a enviar por lote a Microsoft Dynamics CRM (Máximo 1000)
Promomicrosoft.crm.coupon.endpoint
Endpoint de cupones de Microsoft Dynamics CRM
Promomicrosoft.crm.enabledfalseHabilita la funcionalidad de exportación a Microsoft Dynamics CRM
Promomicrosoft.crm.host
Url de host de Microsoft Dynamics CRM
Promomicrosoft.crm.tentantId
TenantId de Microsoft Dynamics CRM
Promomicrosoft.crm.urlAuth
Url de autenticación de Microsoft Dynamics CRM
PromopathC:/napse/promo70/import/Directorio para la importación de Mapas de Promociones.
Promobenefit.activefalseUtilizar campo numérico incremental para beneficios
Promopromotion.code.activefalseUtilizar campo numérico incremental para promociones
PromoredeemedPoints0

Determina el mínimo de puntos para beneficios de redención

Promouse.item.catalog1Mapas: algoritmo de cálculo de colisiones
PromocleanEngineStatusHistory7Tiempo en días que la consola mantendrá el historial de estados del motor
PromodateEditableIfActivetrueHabilita la edición de la fecha de inicio de vigencia de la promoción
PromodefeatedEditable.enabled
true

Habilita la edición de promociones vencidas

PromodeployedEditable.enabledfalseHabilita la edición de promoción con el estado Deployed.
PromoengineLog.FileDirectory C:\user\mxxxdxxxx\Desktop\ftpEngine Log: Directorio donde estarán los archivos.
Promofile.xls.header.rowStart1Alta masiva de promociones: número de fila donde se va a ubicar la cabecera de la plantilla de promoción.
Promomessage.printer.maxLength
Recortar mensaje para la impresora.
Promopromotion.name.codefalseIndica si el código de una promoción, debe ser concatenado al nombre de la misma.
Promopromotion.codeKeyfalseCampo código de promoción clave.
Promopromotion.enginestatus.communication600Tiempo que transcurre desde el último informe de estatus del motor o consola, para considerarlo offline. Si en ese tiempo no informó se lo considera offline.
Promopromotion.images.height250Promociones: alto default de las imágenes
Promopromotion.images.pathC:/napse/promo70/images/promotion/Promociones: directorio para almacenamiento de imágenes
Promopromotion.images.width250Promociones: ancho default de las imágenes
PromorabbitMQ.SSL.enabledfalseActivar SSL
PromorabbitMQ.cardhistory.endpointName
Nombre de la cola de RabbitMQ para el posteo de datos de tipo CardHistory
PromorabbitMQ.enabledfalsePropiedad que indica si está habilitado rabbitMQ
PromorabbitMQ.endpointName
Nombre de la cola de rabbitMQ
PromorabbitMQ.enginestatus.endpointName
Nombre de la cola de RabbitMQ para el posteo de datos de tipo EngineStatus
PromorabbitMQ.host
Dirección (host) del RabbitMQ server
PromorabbitMQ.limitstatus.endpointName

Nombre de la cola de RabbitMQ para el posteo de datos de tipo LimitStatus

PromorabbitMQ.loyaltyType.endpointName
Nombre de la cola de RabbitMQ para el posteo de datos para el tipo de cupones/Elementos de Fidelidad
PromorabbitMQ.password

Password para acceder al rabbitMQ

PromorabbitMQ.port

Puerto del server rabbitMQ

PromorabbitMQ.producer.SSL.enabledtrue

Activar SSL para el posteo de datos

PromorabbitMQ.producer.enabledfalse

Propiedad que indica si esta habilitado rabbitMQ para el posteo de datos.

PromorabbitMQ.producer.host
Dirección (host) de RabbitMQ server para el posteo de datos.
PromorabbitMQ.producer.password
Password para acceder al RabbitMQ server para el posteo de datos.
PromorabbitMQ.producer.port
Puerto del RabbitMQ server para el posteo de datos
PromorabbitMQ.producer.uri

URI de conexión completa RabbitMQ server para el posteo de datos

PromorabbitMQ.producer.username

Usuario para acceder a RabbitMQ server para el posteo de datos

PromorabbitMQ.producer.virtualHost

Virtual Host RabbitMQ server para el posteo de datos

PromorabbitMQ.promotion.endpointName

Nombre de la cola de RabbitMQ para el posteo de datos de tipo Promotion

PromorabbitMQ.promotionsCache.endpointName
Nombre de la cola de RabbitMQ para el posteo de datos de tipo PromotionsCache
PromorabbitMQ.uri

URI de conexión completa rabbitMQ

PromorabbitMQ.username

Usuario para acceder al rabbitMQ

PromorabbitMQ.virtualHost

virtual Host al rabbitMQ

PromoreportParticipantsfalsePromociones: valor global que determina si la promoción informa participantes
PromoreportParticipantsVisibletrueDetermina si se visualiza o no, la opción reportar participantes
Promovtol.url
Url para obtener los planes de pago de Vtol
PromobankRefundBenefit.method.of.payment

NOTHING= No calcular promociones por medio de pagos.

ON_ITEMS_PAID= Calcular promociones sobre ítems pagados

ON_PAYMENT_MADE=Calcular promociones sobre pago realizado

Reintegro bancario: Opciones de cálculo de reintegro
PromobankRefundBenefit.method.of.payment.onItemsPaid.class

com.synthesis.promo.engine.partialPayment.hardcoded.promotion.

BankRefundPartialPaymentGSPromotion

Reintegro bancario: Clase de la promoción basada en ítems.

PromobankRefundBenefit.method.of.payment.onItemsPaid.namePromociones basadas en ítems - Reintegro bancario

Reintegro bancario: Nombre de la promoción basada en ítems.

PromobankRefundBenefit.method.of.payment.onItemsPaid.tenderMethodPropertyKey

promo.configuration.tenderMethod.itemMethod

Reintegro bancario: Propiedad basada en ítems a utilizar.

PromobankRefundBenefit.method.of.payment.onPaymentMade.class

com.synthesis.promo.engine.partialPayment.hardcoded.promotion.

BankRefundPartialPaymentSSPromotion

Reintegro bancario: Clase de la promoción basada en pagos.

PromobankRefundBenefit.method.of.payment.onPaymentMade.namePromociones basadas en pagos - Reintegro bancario

Reintegro bancario: Nombre de la promoción basada en pagos.

PromobankRefundBenefit.method.of.payment.onPaymentMade.tenderMethodPropertyKeypromo.configuration.tenderMethod.paymentMethod

Reintegro bancario: Propiedad basada en pagos a utilizar.

Promomethod.of.payment

NOTHING= No calcular promociones por medios de pago.

ON_ITEMS_PAID = calcular promociones sobre ítems pagados.

ON_PAYMENT_MADE = Calcular promociones sobre pago realizado.

Promoción Codificada: NOTHING, ON_ITEMS_PAID, ON_PAYMENT_MADE.
Promomethod.of.payment.onItemsPaid.class

com.synthesis.promo.engine.partialPayment.hardcoded.promotion.

PartialPaymentsGSPromotion

Promoción Codificada: nombre de la promoción por medio de pago basada en ítems.
Promomethod.of.payment.onItemsPaid.namePromociones basadas en ítems

Promoción Codificada: nombre de la promoción por medio de pago basada en ítems.

Promomethod.of.payment.onItemsPaid.tenderMethodPropertyKeypromo.configuration.tenderMethod.itemMethod

Promoción Codificada: nombre de la promoción por medio de pago basada en ítems.

Promomethod.of.payment.onPaymentMade.class

com.synthesis.promo.engine.partialPayment.hardcoded.promotion.

PartialPaymentsSSPromotion

Promoción Codificada: nombre de la promoción por medio de pago basada en ítems.

Promomethod.of.payment.onPaymentMade.namePromociones basadas en pagos

Promoción Codificada: nombre de la promoción por medio de pago basada en ítems.

Promomethod.of.payment.onPaymentMade.tenderMethodPropertyKeypromo.configuration.tenderMethod.paymentMethod

Promocion Codificada: nombre de la promoción por medio de pago basada en ítems.

PromoldapAuthenticationfalse

Determina si se autentica contra un Directory Service.

PromoldapAuthentication.autheticationModeDIGEST-MD5Es el modo de seguridad que se autentica, usar "DIGEST-MD5" como valor default dado que este modo encripta la información contra el Directory Service.
PromoldapAuthentication.urlServer
URL del server contra el que se autentica.
PromotestEngineADDRlocalhost

Simulación: Dirección del motor para simulación.

PromotestEnginePORT3001Simulación: puerto en el que corre el motor para simulación
PromotestEngineRetries2

Simulación: reintentos de conexión al motor

PromotestEngineSalesPathC:/napse/promo70/engine/sales/

Simulación: ruta del motor.

PromotestEngineTimeout8000Simulación: timeout de conexión al motor.
PromocontinueOnErrortruePermitir continuar la importación de catálogo de marcas ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de categorías ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de canales ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de compañia crediticia ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de clientes ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tipos de clientes ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de transacciones ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tipos de transacción ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tipos de familia ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de formatos ante un error
PromocontinueOnErrortruePermitir continuar la importación del catálogo de información financiera de lista de precios ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de items ante un error
PromocontinueOnErrortruePermitir continuar la importación del catálogo de stock ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tipos de Departamento ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de bancos ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de pagos (Código) ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de prefijos ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tipos de pagos ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de códigos de barra ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de código de productos ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de perfil de cliente ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de Canje de Puntos por Catalogo ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de tiendas ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de cadenas ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de sub categorías ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de subzonas ante un error
PromocontinueOnErrortruePermitir continuar la importación de catálogo de proveedores ante un error.
PromocontinueOnErrortruePermitir continuar la importación de catálogo de zonas ante un error.
Redes socialesfacebook.appId Id de la aplicación de facebook
Redes socialesfacebook.permissions

[pages_show_list, pages_read_engagement,

pages_manage_posts]

Permisos de la aplicación de facebook
Redes socialesfacebook.secret
Clave secreta de la aplicación de facebook
Redes socialesfacebook.secure
Protocolo de conexión segura a la aplicación de facebook
Redes socialestwitter.accessToken
Token de acceso a twitter
Redes socialestwitter.accessTokenSecret
Token secreto de acceso a twitter
Redes socialestwitter.consumerKey
Clave consumer key de twitter
Redes socialestwitter.consumerSecret
Clave consumer secret de twitter
Tarjetas de fidelidadmax.qty999Cantidad máxima de tarjetas de fidelidad a generar por cada operación de alta masiva
Tarjetas de fidelidadisEditableAfterCardsGenerationfalsePermitir la edición del tipo de tarjeta luego de haber generado una tarjeta activa.
Tarjetas de fidelidadprefix.activefalseUtilizar prefijo numérico incremental para tipos de tarjeta
Tarjetas de fidelidadcode.activefalse

Utilizar código numérico incremental para tipos de tarjeta

Tarjetas de fidelidadcard.nominated.default.optionNo

Tipo de tarjetas de fidelidad: Crear por defecto nominadas (default: false = no)

Tarjetas de fidelidadcontinueOnErrortruePermitir continuar la importación del catálogo de tarjetas de fidelidad ante un error.
Tarjetas de fidelidadinsertionOptionINSERT_OR_UPDATEDescribe la opción de inserción para la importación del catálogo de tarjetas de fidelidad.
TransaccionescleanTransactions90Cantidad de días que permanecerán los registros de transacciones en la base de datos


Podrán existir cambios correspondientes a:

  • actualización de la consola de administración (de existir alguna actualización se entregará la correspondiente documentación y la forma de instalarla),
  • depuración de backups de BD.


Informações
titleNOTA

Tener en cuenta que para realizar el mantenimiento se deberá detener la aplicación, realizar los cambios y luego volver a iniciarla.


Âncora
_Cómo_cambiar_la
_Cómo_cambiar_la
Âncora
_Toc513638227
_Toc513638227
Depuración de archivos de backup de Base de datos

La aplicación registra un backup automático diario de la base de datos MongoDB. Es por ello que es necesario realizar un cierto mantenimiento, consistente en la depuración de los mismos periódicamente a fin de que la carpeta de backup no ocupe demasiado en disco.


Alta de cliente durante la transacción

A partir de Promo 7.0.2 -

Para que el alta de clientes pueda efectuarse al momento de procesarse una transacción, deberá de habilitarse en el archivo de configuraciones de la Consola de Promo (“promoplus.properties”) el siguiente atributo:

 # Habilita el alta de clientes on the fly

promo.allowNonExistingCustomers = true

Una vez actualizado, deberá de reiniciarse el Wildfly para que los cambios sean tomados correctamente.

Los clientes serán creados utilizando el estado "loyaltyValidation" en el caso de enviarse los datos mínimos y al mismo tiempo Promo detecte que el cliente no existe.  Los datos mínimos mencionados son (marcados en Rojo): 

<customer-add seq="1" id="10090504" identifier="10090504" type="test" name="pepe" lastName="rodrigues" identifierType="cpf" email="mimail@test.com" />

Bloco de código
themeEmacs
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="napse" store="1" terminal="1" date-time="2020-11-03 11:11:22" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" map-version="2" tckpath="Y" suggest="true">
<customer-add seq="1" id="47001517" identifier="47001517" type="test" name="bruno" lastName="Lopez" identifierType="cpf" email="[email protected]" />
</message>


Nota: Para mas informacion ver "Manual de Integracion 7.0 - Motor" - LoyaltyValidation.


Enmascarar Contraseña de DB

La clave enmascarada de base de datos se genera mediante la promo-crypto-tool que sera provista.

El programa toma como ingreso a la clave a encriptar y devuelve la clave encriptada que se debe situar en el archivo promoplus.properties en una entrada llamada grails.mongodb.encryptedPassword (por ej. grails.mongodb.encryptedPassword=lYYBAfxLR40=).

En caso de utilizar grails.mongodb.encryptedPassword se debe considerar comentar o eliminar la anterior grails.mongodb.password ya que en caso de existir ambas siempre utilizará grails.mongodb.password. En caso de que el archivo promoplus.properties no exista, se tomará, como valor por defecto, a v9vbhV.

Para encriptar una clave se debe utilizar promo-crypto-tool de la siguiente forma en una consola: 



Bloco de código
languagec#
themeEmacs
java -jar <nombre del jar> <contraseña a encriptar>, por ej java -jar promo-crypto-tool-1.0.0.jar abcdefg


o bien

Bloco de código
languagec#
themeEmacs
java -jar <nombre del jar> y al ejecutarlo, de modo interactivo, solicitará el ingreso de la contraseña.


En ambos casos la contraseña encriptada se obtendrá por pantalla.

Al momento de levantar el servidor, se hará uso de Datasource.groovy que mantiene el llamado a assignMongodbPassword() el cual a su vez llama al desencriptador para obtener la contraseña para asignársela a grails.mongodb.password.


Informações
titleNOTA

Se debe considerar la limitación del algoritmo tripledes, el cual acepta sólo caracteres us-ascii como entrada del encriptador. Utilizar caracteres diferentes genera contraseñas encriptadas inválidas.


Informações
titleNOTA 2

Se asume que si existe, en el archivo promoplus/promoconfig.properties, una contraseña no encriptada (grails.mongodb.password) no debe existir la entrada de contraseña encriptada (grails.mongodb.encryptedPassword) y viceversa. La entrada no deseada se puede eliminar o comentar.



Configuración Atributos con espacios en Condiciones Simples

En Promo 7 por default no se puede ingresar en Condiciones Simples atributos con espacios, al ingresar el espacio toma como completo el nombre del atributo ingresado, como cuando se presiona la barra espaciadora:

Image Added

Por configuración se puede cambiar y permitirá ingresar espacios en blanco en los atributos ingresados. Para eso debe editar el archivo promoplus.properties y agregar la siguiente línea:

promo.delimiters = no-space 

Con esta configuración para que interprete que se terminó de escribir el elemento debe presionar la tecla tab.

Image Added

Si ingresa el parámetro: promo.delimiters = space funciona como viene por default, que no permite ingresar espacios dentro del texto ingresado en los atributos.




Âncora
_Toc473121731
_Toc473121731
Âncora
_Toc513638228
_Toc513638228
Configuración de Redes Sociales

Para trabajar con redes sociales PROMO posee una serie de opciones de configuración que se describen a continuación. También es importante aclarar que los servicios de redes sociales están en constante evolución y cambio por lo cual aquí se hace referencia al sitio del servicio en cuestión para obtener la información actualizada al respecto.

Âncora
_Toc473121732
_Toc473121732
Âncora
_Toc513638229
_Toc513638229
Configurar Facebook

Desde la consola de cada compañía, accediendo con el usuario administrador, y accediendo a "Administración Información de configuración" se encontraran las siguientes configuraciones que serán necesarias completar para la correcta publicación en la red social.

Image Added


  • Generación de Aplicación en Facebook

Para poder utilizar la publicación en Facebook se deberá ingresar a https://developers.facebook.com/, darse de alta como desarrollador de Aplicaciones Facebook y agregar una nueva aplicación siguiendo los pasos indicados en la página.
Al crear una aplicación para Facebook, se comienza en estado de desarrollo y para poder realizar publicaciones hay que dar los permisos de "Administrador" al usuario de FB que realizara las publicaciones.

Por otra parte, si se quiere compartir o que otro usuario pueda realizar publicaciones, es necesario agregarlo al grupo de contactos (amigos) y darle permisos de "Administrador".

Al acceder a la URL indicada más arriba, se accederá a la sección de "Facebook for Developers" de Facebook.

Image Added

Debe iniciar sesión, desde el botón correspondiente:

Image Added


Al ingresar, se deberá dar clic en "Mis Apps".

Image Added


Una vez allí, habrá que dar clic en el botón verde de "Crear app".
Image Added

Se presentara el siguiente popUp donde se deberá seleccionar el tipo de app que se desea crear. En este caso, seleccionaremos "Negocio", y se deberá presionar "Continuar".
Image Added



En el siguiente popUp se deberán ingresar los datos solicitados para dar nombre a la app que se esta creando y presionar el botón "Crear app"
Image Added


Una vez creada la app se mostrara la siguiente pantalla, desde donde podrá accederse, desde la opción "Configuración" >> "Básica", a los datos de identificación de la aplicación recientemente creada.

Image Added


Aviso
titleNota

Los datos presentes en esta imagen son solo de carácter ilustrativo y deberán ser reemplazados por las credenciales adquiridas con los usuarios de desarrollo de cada aplicación.

Los datos a considerar y completar en esta sección serán:

  • Identificador de la app: Sera requerido en Promo para poder configurar los datos de conexión a la app de Facebook (Los datos mostrados en las imágenes son de carácter ilustrativo y no son validos para la configuracion de ninguna app)
  • Clave secreta de la app: Sera requerido en Promo para poder configurar los datos de conexión a la app de Facebook. La clave se mostrará enmascarada y se solicitara la clave de usuario de FB para mostrarla.
  • Nombre para mostrar: Sera el nombre de al app que se mostrara a los usuarios de FB.
  • Dominio de la app: Deberá indicarse el dominio donde se encuentra Promo.
  • Correo electrónico de contacto: Deberá indicarse el mail de contacto para la app.
  • URL de la Política de privacidad: Deberá indicarse la política de privacidad de la compañía que desea publicar en FB desde Promo.


Sera necesario tener una pagina de Facebook dada de alta y asociada a la cuenta de usuario de Facebook para poder realizar las publicaciones en esta pagina.

Desde el perfil de usuario con el que se haya generado la app de Facebook, se deberá dar clic "Paginas" que se encuentra a la izquierda de la pagina.

Image Added


Se presentara la siguiente pagina, donde se deberá dar clic en "Crear nueva pagina"

Image Added


Al presionar en "Crear nueva pagina", se mostrará la siguiente pantalla, donde deberá de completarse la información solicitada en el margen izquierdo.

Image Added


Una vez generada la pagina e ingresados los datos de configuracion aportados por la aplicación generada, se podrá proceder a la publicación de las promociones en la red social. (ver Manual de usuario Promo 7 - "Distribución">> "Redes Sociales")

Informações
titleNOTA

Se deberá ser administrador tanto de la pagina como de la aplicación generada en Facebook para poder realizar las publicaciones desde PROMO. 



Aviso
titleIMPORTANTE

Https obligatorio para la publicacion en Facebook

Facebook sólo se integra con sistemas que funcionen con https. Promo tendrá que tener configurado su wildfly con https


Para la cunfiguracion de wildfly con https sera necesario editar el archivo "standalone.xml" ubicado en ...\synthesis\promo\appserver\standalone\configuration


Alli sera requerido agregar los siguientes tags en:


<security-realm name="ApplicationRealm"/>

Bloco de código
languagexml
themeEmacs
titlePara Promo sobre Wildfly 9
<security-realm name="ApplicationRealm">
   <server-identities>
      <ssl>
         <keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="Promo2020" alias="jbossWildFly" key-password="Promo2020" />
      </ssl>
...
</server-identities>

Image Added


Bloco de código
languagexml
themeEmacs
titlePara Promo sobre Wildfly 12
<security-realm name="ApplicationRealm">
   <server-identities>
      <ssl>
         <keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="Promo2020" alias="jbossWildFly" key-password="Promo2020" generate-self-signed-certificate-host="localhost"/>
      </ssl>
...
</server-identities>



<server name="default-server"/>


Bloco de código
languagexml
themeEmacs
    
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>

Image Added


También sera necesario generar y colocar el archivo "server.keystore" en el directorio ...\synthesis\promo\appserver\standalone\configuration. ( Como son claves de encriptación, tienen que ser generadas dentro del ambiente de instalación. Desde Napse se utilizó la herramienta de pruebas "keytool" de Java para la generación del mismo)


Una vez guardados los cambios en el standalone.xml y colocado el archivo "server.keystore.txt" en el directorio indicado, deberá de reiniciarse el wildfly para que los cambios sean tomados correctamente.





Âncora
_Toc473121733
_Toc473121733
Âncora
_Toc513638230
_Toc513638230
Configurar Twitter

Desde la consola de cada compañía, accediendo con el usuario administrador, y accediendo a Administración >> Información de configuración se encontraran las configuraciones que serán necesarias completar para la correcta publicación en la red social.

Image Added


  • Generación de perfil en Twitter

Deberá accederse a la URL https://developer.twitter.com/ y presentara la siguiente pantalla:
Image Added

Deberá darse clic en el botón correspondiente al usuario logueado en Twitter,  se desplegara un menú y se dará clic en "Apps"


Se presentara la siguiente pantalla y debera darse clic en "Create an app"
Image Added


Sera necesario completar los campos con los datos solicitados para poder crear la aplicación en base a las políticas de seguridad de Twitter.

Completos todos los campos, dar clic en "Create" y se mostraran las configuraciones disponibles para la nueva aplicación recientemente generada:
Image Added

Para obtener los Ids y Tokens deberá darse clic en la solapa "Keys and Tokens" donde se visualizaran los datos necesarios para configurar correctamente los permisos de acceso desde Promo.

Image Added

Una vez ingresados los datos de configuracion aportados por la aplicación generada, se podrá proceder a la publicación de las promociones en la red social. (ver Manual de usuario Promo 7 - "Distribución">> "Redes Sociales")

Aviso
titleIMPORTANTE

No podrán subirse a las redes sociales imágenes con tamaños motor a 1 MB.


Validar CVV solo cuando se realiza un consumo en una Tarjeta de Fidelidad

(a partir de Promo 6.5)

Se disponibiliza la posibilidad de poder indicar por configuracion que el CVV de una tarjeta de Fidelidad solo sea validado cuando se realiza un consumo de saldos en ella.

La tarjeta debe de tener activa la opción de CVV requerido en su tipo de tarjeta.

Para habilitar esta opción deberá definirse en el archivo "promoconfig.properties" el parametro promo.general.cvvOnlyForConsume = true

Image Added


Integración con Syslog/QRADAR

La implementación del envío de eventos a QRadar se apoya en el sistema de logueo log4j utilizado por Promo, agregando un appender específico para syslog "SysLogAppender" disponible en el paquete log4j, y el desarrollo de un clase que presta servicio a tal fin denominada "SysLogService" la cual formatea los mensages en otra clase "SysLogMessageFactory".


Para habilitar el envío a QRadar, se debe editar el archivo de configuracion de logueo "log4j.xml" insertando las siguientes entradas antes del final:

Bloco de código
languagexml
themeEmacs
<appender name="syslogappender" class="org.apache.log4j.net.SyslogAppender">
    <param name="syslogHost" value="myserver:myport"/>
    <param name="facilityPrinting" value="false"/>
    <param name="facility" value="AUTHPRIV"/>
    <param name="header" value="false"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SXXX} %m%n"/>
    </layout>
 </appender>
 
 <logger name="sts.console.audit.SysLogService" additivity="false">
    <level value="info"/>
    <appender-ref ref="syslogappender"/>
 </logger>

</log4j:configuration>


Cambiar en el parámetro "syslogHost" , el valor "myserver:myport", por el correspondiente a la dirección ip y port del syslog server QRadar.  Ejemplo: localhost:514

Luego re-deployar la consola de Promo para que tome la configuración.


Tipos de eventos :

Los eventos que serán enviados a QRadar en una primera instancia son los correspondientes a usuario: login, logout, login failed, nuevo usuario, modificación de usuario.

Configuración de Ambiente

Opción de configuración que afecta al funcionamiento del ambiente en su totalidad y se realiza desde el archivo promoplus.properties.

promo.backupOptions--gzipindica que el backup va a ser comprimido a nivel colección. Si tiene un valor diferente la base no va a comprimir a nivel colección.
promo.card.customersNonNominatedtruePermite que al validar que se considere al CPF como si fuera una tarjeta nominada.
promo.transaction.flatten.batch.size250Indica la cantidad de transacciones a aplanar por cada corrida del job aplanado


Âncora
_Toc513638231
_Toc513638231
Resolución de problemas

Durante su funcionamiento, la Consola de administración podrá informar errores inesperados. Los errores que puedan a llegar a ocurrir utilizando la aplicación serán informados mediante un pop-up en rojo indicando la causa del mismo. Asimismo, el log de la aplicación que se encuentra en \synthesis\promo\log indicará más detalle acerca del mismo.
Si el error es por un tema de permisos o página no encontrada, se informará mediante una pantalla aclaratoria con el problema ocurrido.

Âncora
_Como_crear_una
_Como_crear_una
Âncora
_Cómo_crear_una_base de datos en SQL
_Cómo_crear_una_base de datos en SQL

Desinstalación


Para proceder con la des-instalación de la consola y motor de PROMO se deberá:

1- Bajar servicios

    • PromoSImEngine
    • Wildfly
    • MongoDB
    • PromoEngine (si se instaló el motor)
    • PromoEngineDirector (si se instaló el motor)


2- Borrar directorio C:\Synthesis (ruta donde se instaló la consola)

3- Desinstalar MongoDB

4- Borrar los servicios de PromoSinEngine, Wilfly y MongoDB, y PromoEngine, PromoEngineDirector si se instaló el motor


Reverso de actualizaciones ante problemas en el proceso

Ante algun problema durante la actualizacion de una version de consola o motor, debera de bajarse los servicios involucrados y colocar el archivo .war o .jar anterior,  segun se trate de una actualizacion de consola o motor respectivamente y volver a subir los servicios.

Luego de reesablecido el sistema contactar a Sericios de Atencion al Cliente para poner en conocimiento de lo sucedido con el proceso de actualizacion.




Herramienta para métricas de fidelidad

(A partir de Promo 7.2) Con el objetivo de medir los tiempos de proceso de elementos de fidelidad, se han incorporado métricas en el log de aplicación.

Se implementa la actualización en el log a nivel INFO tanto del lado consola como del motor, de las siguientes operaciones:

  • LoyaltyValidation
  • LoyaltyActivation
  • LoyaltyTransfer
  • LoyaltyVoid
  • LoyaltyAssign
  • FINISH
  • COMMIT
  • ROLLBACK
  • TransactionRequest
  • ReturnFinish
  • CatalogRedeemValidation
  • LOYALTYVALIDATIONEX

  • FINISHEX
  • Prices
  • voidTotal
  • blackList

Para habilitar los cambios realizados se agregaron las siguiente propiedades en los archivos correspondientes al logging tanto del lado consola como del motor:

Habilitar logueo en consola, ir a : ..\synthesis\promo\appserver\modules\system\layers\base\com\synthesis\configuration\main\log4j.xml

Valor por defecto ERROR, pasar a INFO para habilitar la funcionalidad.


Bloco de código
languagexml
themeDJango
titlelog4j.xml (consola)
<category name="grails.app.services.sts.console.api.ApiService">
<priority value="ERROR" />
</category>


Habilitar logueo en motor, ir a: ...\synthesis\promo\engine\conf\logging.properties

Valor por defecto SEVERE, pasar a INFO para habilitar la funcionalidad.


Bloco de código
languagexml
themeDJango
titlelogging.properties (engine)
engine.operation.level = INFO


Adicionalmente, una vez actualizado el valor de la propiedad engine.operation.level,  se cambia el nivel de logging de SEVERE a INFO de las siguientes propiedades:

  • java.util.logging.FileHandler.level = INFO
  • java.util.logging.ConsoleHandler.level = INFO


Resultado del cambio:

Bloco de código
languagexml
themeDJango
titleserver.log
15,52,20,949 INFO [sts.console.api.ApiService@http-nio-8080-exec-2] -->loyaltyTransfer
15,52,20,974 INFO [sts.console.api.ApiService@http-nio-8080-exec-2] <--loyaltyTransfer 0.025 seconds
15,52,23,334 INFO [sts.console.api.ApiService@Actor Thread 5] ApiService.status.mapActives Starting processing at Fri Jul 23 15:52:23 ART 2021
15,52,23,335 INFO [sts.console.api.ApiService@Actor Thread 3] ApiService.status.mapActives processed Finish at Fri Jul 23 15:52:23 ART 2021
15,52,23,357 INFO [sts.console.api.ApiService@http-nio-8080-exec-8] -->processEngineRequest: checking on console type:DYNAMIC_ATTRIBUTES ...
15,52,23,380 INFO [sts.console.api.ApiService@http-nio-8080-exec-1] -->processEngineRequest: checking if console has any pending to be process on engine...
15,52,29,749 INFO [sts.console.api.ApiService@http-nio-8080-exec-2] -->commit
15,52,29,752 INFO [sts.console.api.ApiService@http-nio-8080-exec-2] <--commit 0.003 seconds


Bloco de código
languagexml
themeDJango
titlegengine.log
INFORMACIÓN: -->OperationFinish:remoteEvaluation
jul 23, 2021 3:54:52 PM engine.operation.Operation loggerTimeStop
INFORMACIÓN: <--OperationFinish:remoteEvaluation 0.913 seconds -><?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.1.4-SNAPSHOT" mapversion="44" messageId="1" store="napse" terminal="1" transaction="napse_napse_1_20210723100025">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="1800.00" id="550003" seq="1" type="tdf_001"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>
 
jul 23, 2021 3:55:04 PM engine.operation.Operation loggerTimeStart
INFORMACIÓN: -->OperationCommit:remoteEvaluation
jul 23, 2021 3:55:04 PM engine.operation.Operation loggerTimeStop
INFORMACIÓN: <--OperationCommit:remoteEvaluation 0.053 seconds
jul 23, 2021 4:13:57 PM engine.operation.Operation loggerTimeStart
INFORMACIÓN: -->OperationLoyaltyValidation:remoteEvaluation
jul 23, 2021 4:13:57 PM engine.operation.OperationLoyaltyvalidation validation
INFORMACIÓN: Se valida que el cuerpo del mensaje no este vacio en LoyaltyValidation
jul 23, 2021 4:13:57 PM engine.operation.Operation loggerTimeStop
INFORMACIÓN: <--OperationLoyaltyValidation:remoteEvaluation 0.373 seconds




...

Apéndice A: Autenticación de Usuarios Externos (SAML2)

...

Aviso
titleIMPORTANTE

Al utilizar un sistema de autenticacion externos los usuarios dados de alta en la consola no deberán poseer ningún tipo de configuracion de políticas de seguridad de PROMO.


Para que promo utilice saml2, se deberá agregar, en el directorio donde permanecen los .properties\appserver\modules\system\layers\base\com\synthesis\configuration\main\ , los archivos properties correspondientes. Éstos Estos son:

  1. saml.properties - Archivo principal de configuraciones.
  2. saml-keymanager-passwords.properties
  3. saml-metadata-providers.properties - Archivo correspondiente a la configuración del proveedor de identidad.
  4. saml-metadata-sp-defaults.properties - Archivo correspondiente a la configuración que utilizará PROMO para generar su archivo xml de metadatos.

...

Consideraciones de la pruebas de Integración

Para realizar pruebas se utilizó https://capriza.github.io/samling/samling.html 



  1. Alta de usuarios en la consola de PROMO por medio del servicio rest correspondiente (createOrUpdateUsers), También podrán darse de alta manualmente desde la consola. En ambos casos deberá de tenerse en cuenta que los usuarios no deberán tener asignadas ninguna restricción en cuanto a políticas de seguridad propias de PROMO.Obtener su xml de metadatos en el menú idp metadata (https://capriza.github.io/samling/samling.html#) y guardarlos en un archivo xml (preferiblemente idp.xml). Debe apuntarse al mismo desde la configuración por properties.ninguna restricción en cuanto a políticas de seguridad propias de PROMO.
  2. Obtener el xml de metadatos del sistema saml proveedor de identidad, del cliente. La ruta donde estará este archivo deberá tener especificada en la configuración properties. Para simplificar se puede renombrar como idp.xml.

  3. Guardar el archivo idp.xml en C:\synthesis\promo\idp.xml
  4. Editar el archivo saml-metadata-providers.properties especificando allí la ruta absoluta donde se colocó el archivo idp.xml
  5. Iniciar PROMO (Wildfly) con los cuatro properties correspondientes a saml.
  6. Generar el xml de PROMO accediendo a http://localhost:8080/promo/saml/metadata, guardarlo en un xml (preferiblemente sp.xml).
  7. Se guardó

    Guardar sp.xml

    en 

    en C:\synthesis\promo\sp.xml.

  8. Editar el archivo saml.properties especificando allí la ruta absoluta donde se colocó el archivo sp.xml
  9. Editar el archivo saml-metadata-sp-defaults.properties especificando la ruta de promo (por ej. http://localhost:8080/promo).

  10. Detener PROMO (wildfly)
  11. Borrar los directorios \temp y \data que se encuentran en el directorio \standalone de la instalacion de PROMO.
  12. Iniciar PROMO(wildfy)
  13. Al acceder a la consola de PROMO en lugar de la pantalla de inicio de sesión aparecerá la pantalla de samling. Esta pantalla permite configurar qué se desea enviar al proveedor de servicios, que en este caso es PROMO. Sólo modificar, dentro de "Saml Response Properties" el campo "Name Identifier" con el nombre de usuario con el que se desea acceder a PROMO.Presionar "NEXT"
    Image Removed
    En la siguiente pantalla que se presenta presionar "Post Response"
    Image Removed
    Se presentara acceder a la consola de PROMO en lugar de la pantalla de inicio de sesión aparecerá la pantalla de inicio de sesión del proveedor de identidad.
  14. Luego de ingresar usuario y clave en el proveedor de identidad, se presentará la consola de PROMO, logueada con el usuario ingresado:, en la página de inicio correspondiente al rol que tiene asignado.    


Si el usuario no corresponde a ningún usuario dado de alta en PROMO el login fallará, y se volverá a la pantalla del punto 13 para volver a intentar a ingresar un usuario valido y poder iniciar sesión en PROMO.

Si el usuario es uno existente iniciará sesión en PROMO sin problemas, presentándose la pantalla de Gestión de Promociones.



Aviso
titleIMPORTANTE

Saml2 funciona con la primer empresa existente y no principal. Todo usuario se verificará con dicha empresa. Para el caso del acceso con la empresa Synthesis, se reservó el usuario synthesis, es decir, si se necesita acceder a la compañía principal se debe utilizar el usuario synthesis. El cliente deberá dar de alta en su proveedor de identidad a este usuario previamentecrea promoAdmin. Este war sólo tiene la finalidad de acceder con synthesis para entornos test/productivos con saml activo.



Propertis:

  • saml.properties, debe mantener la ruta absoluta al archivo de metadatos del proveedor de servicios.

    Bloco de código
    languagexml
    themeRDark
    #
    # Configuraciones para la utilización de SAML2
    # Más info en https://sphoortia.github.io/grails-spring-security-saml/docs/guide/configuration.html
    #
    grails.plugin.springsecurity.saml.userGroupAttribute = memberOf
    grails.plugin.springsecurity.saml.metadata.sp.file = C:\\synthesis\\promo\\sp.xml
    grails.plugin.springsecurity.saml.metadata.sp.alias = promo_saml
    grails.plugin.springsecurity.saml.responseSkew = 60
    grails.plugin.springsecurity.saml.idpSelectionPath = /
    grails.plugin.springsecurity.saml.loginFormUrl = /saml/login



  • saml-metadata-providers.properties, clave ping, debe mantener la ruta absoluta al archivo de metadatos del proveedor de identidad.

    Bloco de código
    languagexml
    themeRDark
    ping=C:\\synthesis\\promo\\idp.xml



  • saml-metadata-sp-defaults.properties, clave entityBaseURL, debe mantener la ruta de promo.

    Bloco de código
    languagexml
    themeRDark
    local=true
    alias=promo_saml
    entityBaseURL=http://localhost:8080/promo
    securityProfile=metaiop
    signingKey=ping
    encryptionKey=ping
    tlsKey=ping
    requireArtifactResolveSigned=false
    requireLogoutRequestSigned=false
    requireLogoutResponseSigned=false
    idpDiscoveryEnabled=false



  • saml-keymanager-passwords.properties


    Bloco de código
    languagexml
    themeRDark
    #apollo = nalle123


...