Histórico da Página
Para el correcto funcionamiento del Totvs Recibo, tiene que debe ser configurado el puerto multiprotocoloy la configuración del servicio HTTP manualmente:
Índice |
---|
2.1 - Configuración
...
del puerto Multiprotocolo
La configuración del multiprotocolo solo está disponible a partir de la versión 20200214 de LIB y Appserver versión 7.00.191205P .
...
- En su appserver.ini, en la sección GENERAL, inicialmente debe incluir la clave App_Environment, cuyo valor debe ser el nombre del entorno donde se ejecutarán los servicios.
...
- Posteriormente habilitar el puerto multiprotocolo mediante la siguiente clave en la sección de DRIVERS.
Es importante señalar que el puerto multiprotocolo crea un servidor de reposo diferente al configurado previamente , cuando se crearon las secciones HTTP y HTTPREST, de esta forma es posible utilizar ambos servidores al mismo tiempo. El servidor rest creado por el puerto multiprotocolo se ejecuta en la capa AppServer, por lo que es más rápido y posiblemente será el modelo más utilizado en el futuro, mientras que el Rest anterior se realiza en Advpl .
Puede verificar si el servidor HTTPREST puerto multiprotocolo fue habilitado correctamente por mediante el console.log del ambiente como se muestra a continuación:
Aviso |
---|
Con la configuración del puerto multiprotocolo, los parámetros MV_GCTPURL y MV_BACKEND ya no son necesarios . |
2.2 -
...
La función HTTP_START prepara el servidor de aplicaciones como HTTP para REST, debe configurarse en la sección ONSTART:
Aviso |
---|
La clave MAXSTRINGSIZE es obligatoria en la sección GENERAL con un valor mínimo de 10 para que REST admite solicitudes con más de 1 Mb. |
Ejemplo de la sección de General:
Sem Formato |
---|
[GENERAL]
MAXSTRINGSIZE=10
[ONSTART]
JOBS=HTTPJOB
REFRESHRATE=120
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=environment |
Configuración en el ini del app server:
- En la sección de General se configura MAXSTRINGSIZE = 10 para aceptar solicitudes con más de 1 Mb.
- En la sección ONSTART se configura la etiqueta JOBS en el cual se indica los nombres de las secciones para realizar unas funciones específicas y en la etiqueta REFRESHRATE el cual determina el intervalo de tiempo en segundos, para que los JOBS especificados en la tecla [ONSTART] se ejecuten de nuevo.
Sección HTTPV11
Para habilitar el HTTP para REST debe crear una sección HTTPV11 en el appserver ini .
Ejemplo de la sección HTTPV11:
Sem Formato |
---|
[HTTPV11]
Enable=1
Sockets=HTTPREST |
...
La clave de Sockets hace referencia a las secciones con el puerto y la configuración de URL que servirá, lo que permite que el servidor de aplicaciones se configure con más de un puerto HTTP REST.
Configuración en el ini del app server:
- Se habilita el protocolo HTTP
- Se configura el socket llamado HTTPREST
Sección de Sockets
Ejemplo de configuración de la sección de sockets
Sem Formato |
---|
[HTTPREST]
Port=8080
IPsBind=
URIs=HTTPURI
Security=1 |
...
Habilitación de la rutina FINA998 en el menú de Financiero desde el módulo Configurador.
Ejemplo de configuración del menú de Financiero para habilitar la funcionalidad de la rutina Totvs Recibo:
Aviso |
---|
Para Argentina . si el parámetro MV_FINA846 contiene .T., al ingresar a la rutina fina998, ingresará directamente a la antigua rutina que corresponde a Cobros Diversos modelo II (FINA840). Para los demás países de Mercado internacional, si el parámetro MV_FINA087 contiene .T., al ingresar a la rutina fina998, ingresará directamente a la antigua rutina que corresponde a Cobros Diversos modelo I (FINA087A). La funcionalidad de estos parámetros sólo se mantendrá para en la versión 12.1.2210, después de esta versión ignorará dicha funcionalidad. |
2.3 - Configuración de Disparadores de campo desde módulo Configurador.
Al momento de configurar un disparador, es importante tener en cuanta el uso de la nueva función FWFldGet para poder acceder a los valores que ya se tiene informados en la forma de pago(Variables de memoria).
Para configurar un disparador utilizando la función FWFldGet se tienen los siguientes ejemplos:
Campo | EL_TIPO |
Secuencia | 001 |
Cnt. Dominio | EL_PREFIXO |
Tipo | 1 -Primario |
Regla | "TF" |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición | FWFldGet('EL_TIPO') == "TF" (Se utiliza en lugar de M->EL_TIPO). |
Campo | EL_NUMERO |
Secuencia | 001 |
Cnt. Dominio | EL_SIRECER |
Tipo | 1 -Primario |
Regla | IIF(ALLTRIM(M->EL_TIPO)=="RS",U_Sire(FWFldGet('FJT_CLIENT'),FWFldGet('EL_TIPO')),M->EL_SIRECER). |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Aviso | ||
---|---|---|
| ||
Para poder acceder a los valores del encabezado solo se podrá utilizar la función FWFldGet, por ejemplo FWFldGet ('FJT_CLIENT'). Si se intenta acceder de la formar anterior "M→FJT_CLIENT" no será posible recuperar los valores. Para los valores de la forma de pago se recomienda solo utilizar la función FWFldGet, por ejemplo FWFldGet ('EL_TIPO'). No será posible utilizar variables privadas dentro de la Regla, Clave o Condición del disparador. |
Es importante contar con la siguiente actualización de disparador para ya no utilizar variables privadas en los disparadores:
Actualizaciones al Diccionario de datos
Tabla SEL - Recibos de Cobranza
Disparador para el campo EL_TIPO
Aplica para Argentina.
Campo | EL_TIPO |
Secuencia | 003 |
Cnt. Dominio | EL_ENDOSSA |
Tipo | 1 -Primario |
Regla | "2" |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición | ALLTRIM (M->EL_TIPO) <> "CH" |
Aplica para Argentina.
Campo | EL_TIPO |
Secuencia | 004 |
Cnt. Dominio | EL_TERCEIR |
Tipo | 1 -Primario |
Regla | "1" |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición | ALLTRIM (M->EL_TIPO) <> "CH" |
Disparador para el campo EL_TIPODOC
Aplica para Argentina, México, Bolivia, Chile, Colombia, Republica Dominicana, Ecuador, Paraguay ,Perú, Uruguay.
Campo | EL_TIPODOC |
Secuencia | 001 |
Cnt. Dominio | EL_TPCRED |
Tipo | 1 -Primario |
Regla | IIF(M->EL_TIPODOC$ IIf(FindFunction("FinCondTp"),FinCondTp("CredInm"),cCredInm),"1" ,M->EL_TPCRED) |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Aplica para Argentina, México, Bolivia, Chile, Colombia, Republica Dominicana, Ecuador, Paraguay ,Perú, Uruguay.
Campo | EL_TIPODOC |
Secuencia | 002 |
Cnt. Dominio | EL_TPCRED |
Tipo | 1 -Primario |
Regla | IIF(M->EL_TIPODOC$ IIf(FindFunction("FinCondTp"),FinCondTp("CredMed"),cCredMed),"3",M->EL_TPCRED) |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Aplica para México.
Campo | EL_TIPODOC |
Secuencia | 005 |
Cnt. Dominio | EL_FORPGO |
Tipo | 1 -Primario |
Regla | IIF(M->EL_TIPODOC=="TF","03",IIF(M->EL_TIPODOC=="CH","02",IIF(M->EL_TIPODOC=="EF","01",IIF(M->EL_TIPODOC=="CC","04","")))) |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Informações | ||
---|---|---|
| ||
El disparador del campo EL_TIPODOC compara el Tipo Valor con el retorno de la función FinCondTp, la cual valida como primera opción, los tipos de títulos registados en la tabla de Tipos de Titulo (SES). Si la tabla no cuenta con registros, por default los comparará con "TF /EF /CC /CD" y "CH|CC". Si la tabla ya cuenta con registros, es necesario agregar el tipo de titulo "CH" para que el disparador funcione correctamente. |
Disparador para el campo EL_BANCO
Aplica para Argentina.
Campo | EL_BANCO |
Secuencia | 001 |
Cnt. Dominio | EL_MOEDA |
Tipo | 1 -Primario |
Regla | Iif(FindFunction('Bcotrigger'),Bcotrigger(M->EL_BANCO+"|" +M->EL_AGENCIA+"|" +M->EL_CONTA),"1") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Aviso |
---|
Debe usar como separador de valores el pipe ("|") en vez de guion ("-") . |
La configuración del multiprotocolo solo está disponible a partir de la versión 20200214 de LIB y Appserver versión 7.00.191205P .
A continuación se muestran los pasos para configurar:
- En su appserver.ini, en la sección GENERAL, inicialmente debe incluir la clave App_Environment, cuyo valor debe ser el nombre del entorno donde se ejecutarán los servicios.
- Posteriormente habilitar el puerto multiprotocolo mediante la siguiente clave en la sección de DRIVERS.
Puede verificar si el puerto multiprotocolo fue habilitado correctamente mediante el console.log del ambiente como se muestra a continuación:
Aviso |
---|
Con la configuración del puerto multiprotocolo, los parámetros MV_GCTPURL y MV_BACKEND ya no son necesarios . |
2.4 - Consideraciones para el uso de funciones en el campo Edición (X3_WHEN), reglas de dependencia (XXA) y Disparadores (SX7) en campos de la tabla Encabezado de recibo (FJT) y Recibos de cobranza (SEL)
Totvs custom tabs box items | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
CONFIGURACIÓN PARA PRUEBA DEL WHEN
CONFIGURACIÓN PARA PRUEBA DE REGLAS DE DEPENDENCIA
|
2.5 - Configuración de validaciones de Campos de la Tabla FJT
Con la actualización de mostrar las consultas estándar nativas de Protheus en el Totvs Recibo, se tienen que tener en cuenta las siguientes actualizaciones al diccionario de datos,
con la finalidad de no perder la integridad de datos ni la configuración que se tenía.
Modificar el campo Serie (FJT_SERIE)
Campo | FJT_SERIE |
When | SuperGetMv("MV_SERREC",.F.,.F.) |
F3 | RN2 |
Val. Sistema | ExistCpo("SX5","RN"+FwFldGet("FJT_SERIE")) |
Modificar el campo Recbibo (FJT_RECIBO)
Campo | FJT_RECIBO |
Val. Sistema | FA998Vld( FwFldGet("FJT_SERIE"), FwFldGet("FJT_RECIBO")) |
Modificar el campo Modalidad (FJT_NATURE)
Campo | FJT_NATURE |
Val. Sistema | ExistCpo("SED") |
Modificar el campo Cliente (FJT_CLIENT)
Campo | FJT_CLIENT |
Val. Sistema | ExistCpo("SA1") |
Modificar el campo FJT_LOJA
Campo | FJT_LOJA |
Val. Sistema | ExistCpo("SA1",FwFldGet("FJT_CLIENT")+ FwFldGet("FJT_LOJA"),1) |
Modificar el campo Cobrador (FJT_COBRAD)
Campo | FJT_COBRAD |
Val. Sistema | ExistCpo("SAQ") |
Modificar el campo Recbibo (FJT_EMISSA)
Campo | FJT_EMISSA |
Inicializador Estandar | ddatabase |
Consulta Estándar (SXB)
RN2
Actualización consulta estándar en el archivo SXB - Consulta Estándar:
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
RN2 | 1 | 01 | DB | RN2 | SX5 |
RN2 | 2 | 01 | 01 | Tabla + Clave | |
RN2 | 4 | 01 | 01 | Clave | X5_CHAVE |
RN2 | 4 | 01 | 02 | Descripcion | X5_DESCRI |
RN2 | 5 | 01 | SX5->X5_CHAVE | ||
RN2 | 5 | 02 | SX5->X5_DESCRI | ||
RN2 | 6 | 01 | RN |
2.6 - Restricciones importantes
Totvs custom tabs box items | |||||
---|---|---|---|---|---|
| |||||
En caso de que se requiera el uso de consultas estándar o consultas específicas, se recomienda utilizar la versión Grid de formas de pago que será liberada en el primer semestre de 2024. |
...
Configuración en el ini del app server:
- Se configura el puerto 8080, puerto que será utilizado como punto de acceso.
- Se configura la etiqueta URIs con una sección llamada HTTPURI.
- Se deshabilita la seguridad en el puerto para pruebas y desarrollo.
Sección de URI
Ejemplo de configuración de una sección de Uri:
Sem Formato |
---|
[HTTPURI]
URI=/REST
PrepareIn =
Instances = 1.1 |
...
Configuración en el ini del app server:
- Se habilita esta sección con la etiqueta Enable = 1.
- Se indica en la etiqueta URL la dirección en donde será escuchado.
- Se configura en la etiqueta INSTANCES el tiempo y la secuencia de inicialización de subprocesos.
Etiqueta Instances
Define cuántos subprocesos internos pueden estar disponibles para establecer conexiones simultáneas y atender solicitudes a través de HTTP para páginas dinámicas, estáticas, archivos, imágenes y etc.
La composición de la clave se compone de las definiciones de los valores mínimo, máximo, mínimo libre y incremento. Dónde:
- mínimo: indica el número inicial de subprocesos que estarán disponibles.
- máximo: indica el número máximo de subprocesos que estarán disponibles.
- mínimo libre: indica la cantidad mínima de hilos libres.
- incremento: indica el número de nuevos hilos que estarán disponibles cuando el número de hilos libres esté por debajo del valor definido previamente.
2.3 - Configuración de TL++ (TLPP) en el ini del App Server
La configuración para habilitar el lenguaje TLPP es el siguiente:
Sem Formato |
---|
[HTTPSERVER]
Enable=1
Servers=HTTP_REST
[HTTP_REST]
hostname=localhost
port=9995
locations=HTTP_ROOT
[HTTP_ROOT]
Path=/
RootPath=root/web
ThreadPool=THREAD_POOL
[THREAD_POOL]
Environment=ENV
MinThreads=1 |
Sección de HTTPSERVER
Aquí se definen las configuraciones básicas para el funcionamiento del Rest Server.
...
Configuración en el ini del app server:
Sección de Servidores
Define las configuraciones de cada servidor HTTP/ HTTPS
...
Sección de Locaciones
Define el puerto de los datos de cada servidor
...
Sección de THREADPOOL
Define las configuraciones del grupo de proceso, el entorno y las características del subproceso
...
Configuración en el ini del app server:
Si las configuraciones pasadas son correctas el app server consola deberá mostrar lo siguiente:
- Configuración de los puertos correctamente a la sección HTTP
- Servicios REST habilitados y configuración correcta del la sección HTTPV11
2.4 - Habilitación de la rutina FINA998 en el menú de Financiero desde el módulo Configurador.
Ejemplo de configuración del menú de Financiero para habilitar la funcionalidad de la rutina Totvs Recibo:
...