Histórico da Página
...
Producto |
| ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: |
| ||||||||||||||||||||||||
Segmento: |
| ||||||||||||||||||||||||
Módulo: | SIGAFIN - FINANCIERO | ||||||||||||||||||||||||
Función: |
| ||||||||||||||||||||||||
País: | Todos | ||||||||||||||||||||||||
Ticket: | N/A | ||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23387 |
...
- 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 | ||
---|---|---|
| ||
Importante La solución estará presente en el patch de expedició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:
|
Totvs custom tabs box | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
|
Card documentos Informacao "La solución estará presente en el patch de expedición continua con fecha superior al 01/08/2024." Titulo ¡IMPORTANTE!
...
Si el parámetro PARAMIXB[2] == .T. trae un objeto json con la información del título seleccionado.
Si el parámetro PARAMIXB[2] == .F. trae un objeto json con toda la información del recibo.
...
title | Objeto Encabezado |
---|
...
title | Objeto Titulos |
---|
...
title | Descripción del objeto Json |
---|
Objeto Titulos
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Parámetros recibidos |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.)
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.)
Descripción de los objetos de respues en el Json cuando la bandera PARAMIXB[2] sea Falsa (.F.) N/A |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#Include 'Protheus.ch'
User Function F998VALBX()
Local oResponse := JsonObject():New() as Object
IF PARAMIXB[2] //Vista
IF PARAMIXB[1]['recalculate']
oResponse:=setValues(PARAMIXB[1])
ELSE
oResponse['label'] := "% Descuento por pronto pago" //Nombre del campo nuevo a mostrar.
oResponse['readonlyDiscount'] := .T. //Deshabilitar o habilitar el campo de descuento.
oResponse['readonlyInterest'] := .T. //Deshabilitar o habilitar el campo de Intereses.
oResponse['readonlyFine'] := .T. //Deshabilitar o habilitar el campo de Multa.
oResponse['disabledInput'] := .F.//isDisable(PARAMIXB[1]) //Deshabilitar o habilitar el input nuevo
|
...
Objeto json con las siguientes opciones:
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 |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#Include 'Protheus.ch' User Function F998VALBX() Local oResponse := JsonObject():New() as Object IF PARAMIXB[2] //Vista oResponse['label'] := "% Descuento por pronto pago" //Nombre del campo nuevo a mostrar. oResponse['readonlyDiscountmaxDiscount'] := .T. := 50//GetLimite(PARAMIXB[1]) //Se informa el descuento permitido debe tener un rango mayor a 0 y //Deshabilitarmenor oa habilitar100 el campo de descuento. oResponse['readonlyInterestwarningMaxDiscount'] := .T."Descuento por //Deshabilitar o habilitar el campo de Intereses. oResponse['readonlyFine'] := .T. //Deshabilitar o habilitar el campo de Multa. oResponse['disabledInput'] := .T.//Deshabilitar o habilitar el input nuevo oResponse['maxDiscount'] := 50 //Se informa el descuento permitido debe tener un rango mayor a 0 y menor a 100 oResponse['warningMaxDiscount'] := "Descuento por Pronto Pago mayor al permitido. En esta condición el tope es:"+ALLTRIM(STR(oResponse['maxDiscount'])) //Mensaje personalizado por si se excede el descuento permitido, si no se informa el front mandara uno por default ELSE SaveData(PARAMIXB[1]) //Grabación ENDIF Return oResponsePronto Pago mayor al permitido. En esta condición el tope es:"+ALLTRIM(STR(oResponse['maxDiscount'])) //Mensaje personalizado por si se excede el descuento permitido, si no se informa el front mandara uno por default ENDIF ELSE SaveData(PARAMIXB[1]) //Grabación ENDIF Return oResponse /*/{Protheus.doc} setValues Esta funcion determina los valores a mostrar en los campos de descuento, residuo,multa e interes @type function @version @author luis.aboytes @since 25/7/2024 @param oJson, object, param_description @return variant, return_description /*/ Static Function setValues(oJson) Local oRes := JsonObject():New() oRes['descuento'] := Round(PARAMIXB[1]['bind']['discountInput']/100*PARAMIXB[1]['bind']['saldo'],2) oRes['residuo'] := Round(PARAMIXB[1]['bind']['saldo']-oRes['descuento'],MsDecimais(SE1->E1_MOEDA)) oRes['multa'] := 0 oRes['interes'] := 0 Return oRes /*/{Protheus.doc} SaveData Guardamos el dato en un campo en especifico @type function @author luis.aboytes @since 18/7/2024 /*/ Static Function SaveData(oJsonData) Local nCont as Numeric For nCont := 1 to LEN(oJsonData['titulos']) SE1->(dbSetOrder(1)) SE1->(dbSeek(xFilial("SE1")+PADR(oJsonData['titulos'][nCont]['prefix'],GetSx3Cache("E1_PREFIXO","X3_TAMANHO"))+PADR(oJsonData['titulos'][nCont]['billnumber'],GetSx3Cache("E1_NUM","X3_TAMANHO"))+PADR(oJsonData['titulos'][nCont]['installment'],GetSx3Cache("E1_PARCELA","X3_TAMANHO")))) RecLock("SE1",.F.) SE1->E1_XPERDES := oJsonData['titulos'][nCont]['percentDiscount'] MsUnLock() Next Return /*/{Protheus.doc} GetLimite Se retorna el limite de descuento @type function @author luis.aboytes @since 18/7/2024 /*/ Static Function GetLimite(oJsonData) Local nTope := 0 SE1->(dbSetOrder(1)) SE1->(dbSeek(xFilial("SE1")+PADR(oJsonData['prefix'],GetSx3Cache("E1_PREFIXO","X3_TAMANHO"))+PADR(oJsonData['billnumber'],GetSx3Cache("E1_NUM","X3_TAMANHO"))+PADR(oJsonData['installment'],GetSx3Cache("E1_PARCELA","X3_TAMANHO")))) nTope:=IIF(VAZIO(Posicione("SE4", 1,xFilial("SE4")+SE1->E1_XCONDPP,"E4_XDESCON")),0,Posicione("SE4", 1,xFilial("SE4")+SE1->E1_XCONDPP,"E4_XDESCON")) Return nTope /*/{Protheus.doc} isDisable Funcion que retorna si es editable o no el valor del input @type function @author luis.aboytes @since 18/7/2024 /*/ Static Function isDisable(oJsonData) Local lRet := .t. SE1->(dbSetOrder(1)) SE1->(dbSeek(xFilial("SE1")+PADR(oJsonData['prefix'],GetSx3Cache("E1_PREFIXO","X3_TAMANHO"))+PADR(oJsonData['billnumber'],GetSx3Cache("E1_NUM","X3_TAMANHO"))+PADR(oJsonData['installment'],GetSx3Cache("E1_PARCELA","X3_TAMANHO")))) IF SE1->E1_XCONDPP == '999' lRet := .f. ENDIF Return lRet |
04. ASUNTOS RELACIONADOS
- TOTVS Recibo
- 5.2 Puntos de entrada disponibles
Templatedocumentos