Aplicativo de TOTVS Recibo (FINA998.PRW Y FINA998A.TLPP) habilitando el endpoint para obtener las configuraciones determinadas en el PE "Descuento por pronto pago" (F998VALBX) y aplicar la lógica matemática para realizar los descuentos.
Servicio para configuraciones iniciales (GETCONTENTINI.SERVICE.TLPP) se habilita una bandera para habilitar o deshabilitar la opción "Descuento por pronto pago" cuando se desea realizar la "Edición de cobro" a un título.
Controlador y servicio para obtener los títulos financieros (FINANCIAL-TITLES.CONTROLLER.TLPP y FINANCIAL-TITLES.SERVICE.TLPP) se realiza la ejecución del PE "Descuento por pronto pago"
Servicio para guardar un recibo (SAVE-RECEIPT.SERVICE.TLPP) se habilita el llamado del PE para el guardado del valor ingresado en el campo "Descuento por pronto pago" y se habilita el parametro mandado al PE F998NRG2.
Aviso
title
Importante
Importante
La solución estará presente en el patch deexpedición continua(fin_recibo_mi)con fecha superior al 0131/0807/2024, para un funcionamiento correcto de la solución compilar de la siguiente manera:
Patch de la issue
Patch de expedición continua superior a la fecha 0131/0807/2024.
Totvs custom tabs box
tabs
Conf. Previas, Flujo de Pruebas
ids
paso1,paso2
Totvs custom tabs box items
default
yes
referencia
paso1
Por medio del módulo configurador (SIGACFG) damos de alta los siguientes campos
Aviso
title
Campos de ejemplo para el PE (No son estándar)
E1_XPERDES - En el cual se guardara el descuento aplicado al título.
Campo = E1_XPERDES.
Tipo = Numerico.
Tamaño = 5
Decimal = 2
Formato = @99.99
Contexto = Real
Propiedad = Modificar
Nombre = Desc. PP
E1_XCONDPP - En donde se indica la condición de pago.
Campo = E1_XCONDPP.
Tipo = Caracter.
Tamaño = 3
Decimal = 0
Formato = @!
Contexto = Real
Propiedad = Modificar
Nombre = Cond. PP
E4_XDESCON - En el cual se guardara el límite de descuento aplicado al título.
Campo = E4_XDESCON.
Tipo = Numerico.
Tamaño = 5
Decimal = 2
Formato = @99.99
Contexto = Real
Propiedad = Modificar
Nombre = Lim Desc. PP
Realizar un respaldo del repositorio (RPO).
Aplicar el paquete de expedición continua Financiero - Totvs Recibo MI con fecha del 0108 o posterior.
Aplicar el parche correspondiente al issue DMINA-23387.
Validar que las rutinas actualizadas en el repositorio, coincidan con las descritas en el encabezado del presente Documento Técnico, así como las fechas.
Crear la funcion de usuarioF998VALBX definiendo las propiedades para la vista , calculos matematicos para los campos descuento, multa, interes y total así como la funcion a ejecutar para guardar los datos.
Dentro del módulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
En la rutina deClientes(MATA030), ubicada en el móduloFinanciero (Actualizaciones | Archivos) registré un cliente.
En la rutina de Productos(MATA010), ubicada en el módulo Facturación (Actualizaciones | Archivos), incluir un nuevo producto.
En la rutinadeTipos de Entrada y Salida(MATA080), ubicada en el módulo Facturación(Actualizaciones | Archivos), incluir una TES de salida.
En la rutina de Facturaciones (MATA467N), ubicada en el módulo de Facturación (Actualizaciones | Facturaciones) generamos una factura que genere un título financiero al cliente configurado anteriormente.
Totvs custom tabs box items
default
no
referencia
paso2
Ingresar a la rutinaTOTVS Recibo;SIGAFIN - Actualizaciones | Cuentas por Cobrar | TOTVS Recibo.
Ingresar a la opción Nuevo Recibo.
Informe el encabezado del recibo con los datos configurados anteriormente y damos clic en "Extraer Títulos".
Localizamos el título generado anteriormente y damos clic en "Editar cobro".
Verificamos que se visualice el nuevo campo configurado "Descuento por pronto pago".
Verificamos que se realice la lógica matemática adecuadamente proporcionada al descuento.
Agregamos una forma de pago por el valor restante del título financiero.
Guardamos el recibo:
Verificamos que el valor se haya guardado correctamente en el campo configurado en el PE.
Actualización de la función de usuario U_TAFINE45() en el PE F998NRG2, para la generación de la NCC al momento de guardar el recibo.
Guardamos el recibo:
Verificamos que el valor se haya guardado correctamente en el campo configurado en el PE
Aviso
title
Importante
Hay que adaptar la manera de obtener la información del recibo y/o títulos en la función de usuario TAFINE45(), ya que en la nueva rutina de TOTVS Recibo no hay variables privadas como aCols.
El objeto Json obtiene los siguientes objetos:
Encabezado - Valores ingresados en el encabezado del recibo.
Títulos - Array de valores con los datos de cada título seleccionado.
Monedas - Array con los valores de cada moneda registrada.
Formas de pago - Array de valores por cada una de las formas de pago registradas en el recibo.
Params - Parámetros registrados en el sistema.
Ejemplo para obtener el descuento por pronto pago en el título seleccionado es de la siguiente manera:oJson['titulos'][1]['percentDiscount'], en donde se busca el descuento por pronto pago del título número uno del objeto títulos
.
Card documentos
Informacao
"La solución estará presente en el patch de expedición continua con fecha superior al 01/08/2024."
Titulo
¡IMPORTANTE!
...
Descripción
Actualizaciones
Punto de entrada:
F998VALBX
Nombre del programa fuente:
FINANCIAL-TITLES.SERVICE.TLPP
Parámetros recibidos
Nombre
Tipo
Descripción
PARAMIXB[1]
O
Definición de la vista del campo "Descuento por pronto pago"
Descripción del objeto PARAMIXB[1] cuando en el Json la bandera PARAMIXB[2] es Verdadera (.T.) y la bandera ["recalculate" ] este como falsa (.F.)
Expandir
title
Objeto Titulo
Nombre en Json
Equivalencia
Descripción
['recalculate´]
N/A
Si es True (.T.) realizará los calculos, si es False (.F.) realizara la vista
titulos[nX]['branch']
E1_FILIAL
Filial
titulos[nX]['billnumber']
E1_NUMERO
Numero de Titulo
titulos[nX]['type']
E1_TIPO
Tipo de Titulo
titulos[nX]['actualduedt']
E1_VENCREA
Vencimiento Real
titulos[nX]['currency']
E1_MOEDA
Moneda
titulos[nX]['unit']
E1_LOJA
Tienda
titulos[nX]['installment']
E1_PARCELA
Cuota
titulos[nX]['billvalue']
E1_VALOR
Valor
titulos[nX]['customer']
E1_CLIENTE
Cliente
titulos[nX]['class']
E1_NATUREZ
Modalidad
titulos[nX]['custname']
A1_NOME
Nombre del cliente
titulos[nX]['balance']
E1_SALDO
Saldo del titulo
titulos[nX]['prefix']
E1_PREFIXO
Prefijo del titulo
titulos[nX]['issuedt']
E1_EMISSAO
Fecha de emisión
titulos[nX]['writeoffne']
E1_VALLIQ
Valor neto de la baja
titulos[nX]['discount']
E1_DESCONT
Descuento
titulos[nX]['interest']
E1_JUROS
Intereses
titulos[nX]['fine']
E1_MULTA
Multas
titulos[nX]['series']
E1_SERIE
Serie
titulos[nX]['origin']
E1_ORIGEM
Ruta origen del titulo
titulos[nX]['recno']
R_E_C_N_O
titulos[nX]['client']
E1_CLIENTE
Cliente
titulos[nX]['originbranch']
E1_FILORIG
Filial Original
titulos[nX]['paycondf2']
F2_COND
Condicion SF2
titulos[nX]['paycondf1']
F1_COND
Condición SF1
titulos[nX]['serie2f2']
F2_SERIE2
Serie SF2
titulos[nX]['serie2f1']
F1_SERIE2
Serie SF1
titulos[nX]['paymentcondition']
Condición de pago
titulos[nX]['cobrar']
Monto a cobrar en Numeric
titulos[nX]['billvalueString']
Toyal o saldo (Dependiendo la pantalla)
titulos[nX]['balanceString']
Saldo en String
titulos[nX]['cobrarString']
Monto a cobrar en String
titulos[nX]['discountString']
Descuento del titulo en String
titulos[nX]['interestString']
Interes del titulo en String
titulos[nX]['fineString']
Multa del titulo en String
Definición de la lógica del campo "Descuento por pronto pago"
Descripción del objeto PARAMIXB[1] cuando en el Json la bandera PARAMIXB[2] es Verdadera (.T.) y la bandera ["recalculate" ] este como True (.T.)
Expandir
title
Objeto
Nombre en Json
Descripción
['recalculate´]
Si es True (.T.) realizará los calculos, si es False (.F.) realizara la vista
bind['discountInput']
Descuento ingresado en el campo Descuento Pronto Pago
bind['descuento']
Tipo de Titulo
bind['multa']
Interes del titulo en String
bind['interes']
Multa del titulo en String
bind['saldo']
Saldo total (Ya tomando en cuenta, descuento, multa e interes)
Definición de la grabación del campo "Descuento por pronto pago"
Descripción de los objetos (PARAMIXB[1]) mandados en el Json cuando la bandera PARAMIXB[2] es Falsa (.F.)
Expandir
title
Objeto Encabezado
Nombre en Json
Equivalencia
Descripción
encabezado['serie']
FJT_SERIE
Serie del recibo
encabezado['recibo']
FJT_RECIBO
Numero de recibo
encabezado['emissa']
FJT_EMISSA
Emisión
encabezado['nature']
FJT_NATURE
Cobrador
encabezado['client']
FJT_CLIENT
Cliente
encabezado['loja']
FJT_LOJA
Tienda
encabezado['cobrad']
FJT_COBRAD
Cobrador
encabezado['recprov']
FJT_RECPRV
Recibo Provisorio
Expandir
title
Objeto Titulos
Nombre en Json
Equivalencia
Descripción
titulos[nX]['branch']
E1_FILIAL
Filial
titulos[nX]['billnumber']
E1_NUMERO
Numero de Titulo
titulos[nX]['type']
E1_TIPO
Tipo de Titulo
titulos[nX]['actualduedt']
E1_VENCREA
Vencimiento Real
titulos[nX]['currency']
E1_MOEDA
Moneda
titulos[nX]['unit']
E1_LOJA
Tienda
titulos[nX]['installment']
E1_PARCELA
Cuota
titulos[nX]['billvalue']
E1_VALOR
Valor
titulos[nX]['customer']
E1_CLIENTE
Cliente
titulos[nX]['class']
E1_NATUREZ
Modalidad
titulos[nX]['custname']
A1_NOME
Nombre del cliente
titulos[nX]['balance']
E1_SALDO
Saldo del titulo
titulos[nX]['prefix']
E1_PREFIXO
Prefijo del titulo
titulos[nX]['issuedt']
E1_EMISSAO
Fecha de emisión
titulos[nX]['writeoffne']
E1_VALLIQ
Valor neto de la baja
titulos[nX]['discount']
E1_DESCONT
Descuento
titulos[nX]['interest']
E1_JUROS
Intereses
titulos[nX]['fine']
E1_MULTA
Multas
titulos[nX]['series']
E1_SERIE
Serie
titulos[nX]['origin']
E1_ORIGEM
Ruta origen del titulo
titulos[nX]['recno']
R_E_C_N_O
titulos[nX]['client']
E1_CLIENTE
Cliente
titulos[nX]['originbranch']
E1_FILORIG
Filial Original
titulos[nX]['paycondf2']
F2_COND
Condicion SF2
titulos[nX]['paycondf1']
F1_COND
Condición SF1
titulos[nX]['serie2f2']
F2_SERIE2
Serie SF2
titulos[nX]['serie2f1']
F1_SERIE2
Serie SF1
titulos[nX]['paymentcondition']
Condición de pago
titulos[nX]['cobrar']
Monto a cobrar en Numeric
titulos[nX]['billvalueString']
Toyal o saldo (Dependiendo la pantalla)
titulos[nX]['balanceString']
Saldo en String
titulos[nX]['cobrarString']
Monto a cobrar en String
titulos[nX]['discountString']
Descuento del titulo en String
titulos[nX]['interestString']
Interes del titulo en String
titulos[nX]['fineString']
Multa del titulo en String
titulos[nX]['quickSelected']
Titulo seleccionado en el GRID
titulos[nX]['reasonBx']
Motivos de baja
titulos[nX]['peso']
Total en moneda
Expandir
title
Objeto monedas
Nombre en Json
Descripción
monedas[nX]['coin']
Nombre Moneda
monedas[nX]['tasa']
Tasa
monedas[nX]['received']
Cantidad recibida en esta moenda
monedas[nX]['balance']
Saldo en Numeric
monedas[nX]['type']
Nombre de Moneda
monedas[nX]['moneda']
Numero de Moneda
monedas[nX]['stringTasa']
Tasa de moneda
monedas[nX]['balanceString']
Saldo en String
monedas[nX]['receivedString']
Cantidad recibida en esta moenda
Expandir
title
Objeto formas de pago
Nombre en Json
Descripción
formaspago[nX]['property']
Nombre de la propiedad (Trae el mismo nombre registrado en la SX3)
formaspago[nX]['value']
Valor de la propiedad
Expandir
title
Objeto parametros
Nombre en Json
Descripción
params[nX]['mv_par01']
Valor del parametro 01
params[nX]['mv_par01']
.
.
.
params[nX]['mv_parxx']
PARAMIXB[2]
L
True (.T.) si es momento del guardado y False (.F.) si es configuración de la vista
Punto de entrada:
F998VALBX
Respuesta:
Descripción del objeto de respuesta cuando en el Json la bandera PARAMIXB[2] es Verdadera (.T.) y la bandera ["recalculate" ] este como falsa (.F.)
Expandir
title
Objeto de respuesta
Nombre
Tipo
Descripción
Obligatorio
oJson['label']
L
Nombre del campo nuevo a mostrar.
Si
oJson['disabledDiscount']
L
Deshabilitar o habilitar el campo de descuento.
Si
oJson['disabledInterest']
L
Deshabilitar o habilitar el campo de Intereses.
Si
oJson['disabledFine']
L
Deshabilitar o habilitar el campo de Multa.
Si
oJson['disabledInput']
L
Deshabilitar o habilitar el input nuevo
Si
oJson['maxDiscount']
N
Se informa el descuento permitido debe tener un rango mayor a 0 y menor a 100
Si
oJson['warningMaxDiscount']
C
Mensaje personalizado por si se excede el descuento permitido, si no se informa el front mandará uno por default
No
Descripción del objeto de respuesta cuando en el Json la bandera PARAMIXB[2] es Verdadera (.T.) y la bandera ["recalculate" ] este como True (.T.)
Expandir
title
Objeto de respuesta
Nombre en Json
Descripción
oJson['descuento']
Valor que sera mostrado en el campo descuento
oJson['residuo']
Valor que sera mostrado como total del titulo (Despues de descuentos, multa e intereses)
oJson['multa']
Valor que sera mostrado como multa del titulo
oJson['interes']
Valor que sera mostrado como interes del titulo
Descripción de los objetos de respues en el Json cuando la bandera PARAMIXB[2] sea Falsa (.F.)