Árvore de páginas

Versões comparadas

Chave

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

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   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. 

Image Added

...


  • Posteriormente  habilitar el puerto multiprotocolo mediante la siguiente clave en la sección de DRIVERS.


Image AddedEs 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:


Image RemovedImage Added


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.

Image RemovedImage RemovedImage Removed

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

Image Removed

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:


Image Added

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:

CampoEL_TIPO
Secuencia

001

Cnt. DominioEL_PREFIXO
Tipo1 -Primario
Regla"TF"
Posiciona2 - No
Alias
Orden0
Clave
CondiciónFWFldGet('EL_TIPO') == "TF" (Se utiliza en lugar de M->EL_TIPO).  


CampoEL_NUMERO
Secuencia

001

Cnt. DominioEL_SIRECER
Tipo1 -Primario
ReglaIIF(ALLTRIM(M->EL_TIPO)=="RS",U_Sire(FWFldGet('FJT_CLIENT'),FWFldGet('EL_TIPO')),M->EL_SIRECER).
Posiciona2 - No
Alias
Orden0
Clave
Condición
Aviso
titleImportante

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.

CampoEL_TIPO
Secuencia

003

Cnt. DominioEL_ENDOSSA
Tipo1 -Primario
Regla"2"  
Posiciona2 - No
Alias
Orden0
Clave
CondiciónALLTRIM (M->EL_TIPO) <> "CH"            


Aplica para Argentina.

CampoEL_TIPO
Secuencia

004

Cnt. DominioEL_TERCEIR
Tipo1 -Primario
Regla"1"  
Posiciona2 - No
Alias
Orden0
Clave
CondiciónALLTRIM (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

Secuencia001
Cnt. DominioEL_TPCRED 
Tipo1 -Primario
ReglaIIF(M->EL_TIPODOC$ IIf(FindFunction("FinCondTp"),FinCondTp("CredInm"),cCredInm),"1" ,M->EL_TPCRED)  
Posiciona2 - No
Alias
Orden0
Clave
Condición


Aplica para Argentina, México, Bolivia, Chile, Colombia, Republica Dominicana, Ecuador, Paraguay ,Perú, Uruguay.

Campo

EL_TIPODOC

Secuencia002
Cnt. DominioEL_TPCRED 
Tipo1 -Primario
Regla

IIF(M->EL_TIPODOC$ IIf(FindFunction("FinCondTp"),FinCondTp("CredMed"),cCredMed),"3",M->EL_TPCRED)   

Posiciona2 - No
Alias
Orden0
Clave
Condición


Aplica para México.

Campo

EL_TIPODOC

Secuencia005
Cnt. DominioEL_FORPGO
Tipo1 -Primario
ReglaIIF(M->EL_TIPODOC=="TF","03",IIF(M->EL_TIPODOC=="CH","02",IIF(M->EL_TIPODOC=="EF","01",IIF(M->EL_TIPODOC=="CC","04",""))))
Posiciona2 - No
Alias
Orden0
Clave
Condición



Informações
titleImportante

Image Added Image Added Image Added Image Added Image Added Image Added Image Added Image Added Image Added

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

Secuencia001
Cnt. DominioEL_MOEDA
Tipo1 -Primario
ReglaIif(FindFunction('Bcotrigger'),Bcotrigger(M->EL_BANCO+"|" +M->EL_AGENCIA+"|" +M->EL_CONTA),"1")     
Posiciona2 - No
Alias
Orden0
Clave
Condición
Aviso

Debe usar como separador de valores el pipe ("|") en vez de guion ("-") .


La configuración del multiprotocolo solo está disponible   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.

Image Added


  • Posteriormente  habilitar el puerto multiprotocolo mediante la siguiente clave en la sección de DRIVERS.


Image Added


Puede verificar si el puerto multiprotocolo fue habilitado correctamente mediante el console.log del ambiente como se muestra a continuación:


Image Added


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
defaultyes
referenciaPre-condiciones
Aviso
titleAviso

Esto solo es un ejemplo de como configurar correctamente las reglas de dependencia (XXA), Disparadores y/o modos de edición "When" (X3_WHEN)

CONFIGURACIÓN PARA PRUEBA DEL WHEN

  1. Por medio del Módulo Configurador (SIGACFG) :
    1. Crear el campo con las siguientes características:
      1. Sección campó 
        1. Campo = EL_WHEN
        2. Tipo = 1-Caracter
        3. Tamaño = 5
        4. Formato = @!
        5. Contexto = 1 - Si
        6. Propiedad = 1 - Modificar
      2. Sección informaciones
        1. Tit. Español = Campo when
        2. Desc. Español = Campos que se activa si se cumple el when
      3. Sección Opciones
        1. Inic. Estándar = ""
        2. Modo Edición = U_WHENRET()   

          Importante

          En el campo Modo Edición (X3_WHEN) puede ser ejecutada una función de usuario (Cómo se observa en el punto 2) o configurar directamente una condición lógica que retorne un valor booleano desde el Modo Edición del campo.

          Ejemplo de Función de usuario y condición lógica desde el módulo configurador: 

          1. Image Added b.Image Added

          Ambos ejemplos retornan un valor booleano, el cual indica (.T.) si se activa el campo, ya que la condición se cumple o de lo contrario el campo permanece bloqueado (.F.)

      4. Sección Uso
        1. Usado (x)
        2. Browse (x)
  2. Compilar la siguiente función de usuario:
    1. Esta función tiene la funcionalidad de determinar si se bloquea o no un campo dependiendo el valor del campo Tipo Documento (EL_TIPODOC).
    2. Image Added

CONFIGURACIÓN PARA PRUEBA DE REGLAS DE DEPENDENCIA

  1. Por medio del Módulo Configurador (SIGACFG):
    1. Crear el campo (Contra dominio) con las siguientes características:
      1. Sección campó 
        1. Campo = EL_DEPEN
        2. Tipo = 1-Caracter
        3. Tamaño = 5
        4. Formato = @!
        5. Contexto = 1 - Si
        6. Propiedad = 1 - Modificar
      2. Sección informaciones
        1. Tit. Español = DEPENDENCIA
        2. Desc. Español = Campos que se activa si se cumple la regla de dependencia
      3. Sección Opciones
        1. Inic. Estándar =""  
      4. Sección Uso
        1. Usado (x)
        2. Browse (x)
  2. Realizamos la configuración del campo (Dominio) Valor (EL_VALOR):
    1. Editamos la pestaña Reglas de dependencia (XXA):
      1. Secuencia = 501
      2. Contra dominio = EL_DEPEN
      3. Tipo = 3 - Pre y Post validación (Para más información, consulte el siguiente link: XXA - Reglas de Dependencia entre Campos)


Aviso
titleIMPORTANTE

Pueden ser mezcladas reglas de dependencia con when, por ejemplo:

  1. Se puede configurar un campo B (Contra dominio) que tenga una regla de dependencia de campo A (Dominio) pero a su vez el campo B tenga un WHEN (X3_WHEN) en donde indica que el campo Tipo Valor (EL_TIPODOC) retorne true solamente cuando se seleccione una forma de pago de tipo Efectivo. En este caso, el campo B solamente se activará cuando las combinaciones de estas dos condiciones sea verdadera (En caso de que él contra dominio tenga una validación (X3_VALID) está también tiene que ser validada y retornar un valor verdadero).

Pueden ser mezclados campos de diferentes tablas.

  1. Puede hacerse uso de validaciones, reglas de dependencia, disparadores y condiciones "when" en las formas de pago (SEL) utilizando campos de la tabla Encabezado de recibo (FJT), como se ilustra en el siguiente ejemplo:

    En el campo Prefijo (EL_PREFIXO), se configura la siguiente regla en el campo Modo Edición (X3_WHEN): IIF(!VAZIO(FwFldGet("FJT_COBRAD")),.T.,.F.). Esta regla indica que se activará solo si se ha informado el campo Cobrador (FJT_COBRAD) en el encabezado.


Aviso
titleWhen y campos con propiedad Visualizar

Anteriormente, en la rutina de Cobros Diversos (FINA087A), los campos del encabezado de recibo se bloqueaban colocando un WHEN en la tabla SEL - Cobros Diversos. Actualmente, para bloquear campos en el encabezado de recibo en el programa TOTVS Recibo (FINA998), los WHEN deben ser colocados en la nueva tabla FJT - Encabezado de Recibo.

NOTA: Cuando un campo es bloqueado mediante un WHEN, no se le puede asignar ningún valor. Si se desea que el campo no sea editable por parte del cliente, pero que aún se pueda asignar un valor, debe declararse el campo con la propiedad "Visualizar".

Ejemplo de un campo que se desea colocar como no editable, pero donde sí se pueden asignar valores por disparadores o inicializadores estándar:

Image Added

Aviso
titleAviso

Si hace uso de la tabla de Tipos de Títulos (SES), para la correcta función de los disparadores, validaciones y when de Totvs Recibo, es necesario informar el campo Gen.en RC/OP (ES_RCOPGER).


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) 

CampoFJT_SERIE 
WhenSuperGetMv("MV_SERREC",.F.,.F.)     
F3RN2
Val. SistemaExistCpo("SX5","RN"+FwFldGet("FJT_SERIE"))


Modificar el campo Recbibo (FJT_RECIBO)

CampoFJT_RECIBO
Val. SistemaFA998Vld( FwFldGet("FJT_SERIE"), FwFldGet("FJT_RECIBO")) 


Modificar el campo Modalidad (FJT_NATURE)

CampoFJT_NATURE
Val. SistemaExistCpo("SED")


Modificar el campo Cliente (FJT_CLIENT)

CampoFJT_CLIENT
Val. SistemaExistCpo("SA1")


Modificar el campo FJT_LOJA  

CampoFJT_LOJA  
Val. SistemaExistCpo("SA1",FwFldGet("FJT_CLIENT")+ FwFldGet("FJT_LOJA"),1)   


Modificar el campo Cobrador (FJT_COBRAD)

CampoFJT_COBRAD
Val. SistemaExistCpo("SAQ")


Modificar el campo Recbibo (FJT_EMISSA)

CampoFJT_EMISSA
Inicializador Estandarddatabase

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

01DBRN2SX5                                                                                                
RN2 20101Tabla + Clave
RN2 40101Clave X5_CHAVE      
RN2 40102Descripcion X5_DESCRI               
RN2 501

SX5->X5_CHAVE         
RN2 502

SX5->X5_DESCRI 
RN2 601

RN


2.6 - Restricciones importantes


Totvs custom tabs box items
defaultyes
referenciaRestricciones
Aviso
titleCampos LookUp

Los campos con formato tipo LookUp no permiten el uso de consultas estándar o consultas específicas, esto se debe a que estos campos cuentan con una configuración especifica de mejora de performance cuando existen muchos registros de bancos en una base de datos, proporciona el uso de una pantalla con paginación y filtros avanzados para la búsqueda de un registro en específico, pero estos campos no están preparados para el consumo de consultas estándar o consultas específicas.


El formato de los campos es el siguiente:

Image Added


Algunos de estos campos en Totvs Recibo son:

Busca Banco (EL_BANCOS), Busca Banco Cheque (EL_BCOCHQS).




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.

Image Removed

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.

Image Removed

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:

Image Removed

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:

Image Removed

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

Image Removed

  • Servicios REST habilitados y configuración correcta del la  sección HTTPV11

Image Removed

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:

...