Histórico da Página
...
Nombre del Punto de Entrada | Descripción | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F998BRFLT | Tiene el objetivo de que el usuario pueda agregar más filtros a la consulta (Query) de selección de recibos al momento de dar clic en "Aplicar filtros" en el programa TOTVS Recibos. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F088FLT" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998BRFLT Agregar más filtros al momento de buscar recibos TOTVS Recibo MEX
Parámetros recibidos:
Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de recibos.
Este punto de entrada sustituye al "F088NP2K" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998BRMCOL Incluir columnas a visualizar en el GRID de buscar recibos
Âncora | F998NRDCOB | F998NRDCOB | F998NRDCOB
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F887ROT | Tiene el objetivo de habilitar una nueva opción en la ventana de Buscar Recibo, esta opción ejecutara una función de usuario el cual tiene la finalidad de realizar acciones sobre el recibo seleccionado. Retorno: Arreglo con el nombre de esta nueva opción asi como la función que se efectuara al dar clic en esta misma.
Más información: PE F887ROT Agregar opción personalizada en lista opciones en Buscar Recibo
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998BRMCOL | Tiene el objetivo de que el usuario pueda indicar columnas que se desean incluir en el GRID de visualización de los recibos desde la opción de "Buscar recibos". Parámetros recibidos: Tiene el objetivo de llenar el campo del Cobrador cuando se seleccione el código del cliente. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F087ACOB" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRDCOB Llenar el campo del Cobrador cuando seleccione el código del cliente en Nuevo Recibo
Âncora | F998NRMCOL | F998NRMCOL | F998NRMCOL
Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de recibos.
Este punto de entrada sustituye al "F088NP2K" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998BRMCOL Incluir columnas a visualizar en el GRID de buscar recibos
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998NRDCOB | Tiene el objetivo de llenar el campo del Cobrador cuando se seleccione el código del cliente. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F087ACOB" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRDCOB Llenar el campo del Cobrador cuando seleccione el código del cliente en Nuevo Recibo | Tiene el objetivo de agregar más columnas a visualizar en los títulos financieros en la pantalla de Nuevo Recibo y Otros Títulos. Parámetros recibidos:
Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de títulos.
Este punto de entrada sustituye al "F087COL" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRMCOL Agregar más columnas en la lista de títulos por cobrar TOTVS Recibo
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998NRIOFLT | F998NRIOFLT | Tiene el objetivo de agregar más filtros en la selección de registros (Query) que se usa en la pantalla de "Agregar otros títulos". Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F087AFCL" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRIOFLT Agregar más filtros en el query de Agregar otros títulos TOTVS Recibo
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998FLOTIT | F998FLOTIT | Tiene el objetivo de agregar nuevos tipos de títulos a los recibos generados desde la sección de "Nuevo Recibo" Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "A087TIPTI" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998FLOTIT Agregar otros tipos de títulos a los recibos de cobro en TOTVS recibo
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998NRG3 | F998NRG3 | Punto de entrada disponible que permite realizar acciones antes de generar los asientos contables y de grabar la tabla de los impuestos/retenciones (SFE) desde la opción de "Nuevo Recibo". La llamada desde este punto de entrada está fuera del control de la transacción. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "FA087INC" de la rutina de Cobros Diversos (FINA087A). Más información: DT PE F998NRG3 Agregar acciones antes de asientos contables y de grabar tabla de impuestos/retenciones
| Âncora | F998GSE1 | F998GSE1 | F998GSE1 Tiene el objetivo de actualizar campos creados por el usuario en la tabla de Títulos por Cobrar (SE1), este proceso es realizado antes de finalizar las actualizaciones de la tabla de Títulos por Cobrar. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F840SE1" de la rutina de Generación de recibos (FINA840). Más información: DT PE F998GSE1 Permite grabar campos creados por el usuario en la tabla de títulos por cobrar
Âncora | F998MAIL | F998MAIL | F998MAIL Tiene el objetivo de actualizar el asunto y el cuerpo del Mail. Parámetros recibidos:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998NRMCOL | Tiene el objetivo de agregar más columnas a visualizar en los títulos financieros en la pantalla de Nuevo Recibo y Otros Títulos. Parámetros recibidos:
Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de títulos.
Retorno:
Este punto de entrada sustituye al "F087COL" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRMCOL Agregar más columnas en la lista de títulos por cobrar Más información: DT PE F998MAIL Modificar el Asunto y Cuerpo al enviar el Recibo por Mail TOTVS Recibo
Âncora | F998IMPREC | F998IMPREC | F998IMPREC | Tiene el objetivo de imprimir un recibo en formato PDF personalizado (El recibo en formato PDF debe quedar con el mismo nombre del archivo XML y en la misma ruta, en el caso de que sea enviado por email). Parámetros recibidos:
Más información: DT PE F998IMPREC Formato de impresión para los recibos TOTVS Recibo
IMPORTANTE
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998NRIOFLT | Tiene el objetivo de agregar más filtros en la selección de registros (Query) que se usa en la pantalla de "Agregar otros títulos". Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F087AFCL" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998NRIOFLT Agregar más filtros en el query de Agregar otros títulos TOTVS Recibo
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998FLOTIT | Tiene el objetivo de agregar nuevos tipos de títulos a los recibos generados desde la sección de "Nuevo Recibo" Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "A087TIPTI" de la rutina Cobros Diversos (FINA087A). Más información: DT PE F998FLOTIT Agregar otros tipos de títulos a los recibos de cobro en TOTVS recibo
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998NRG3 | Punto de entrada disponible que permite realizar acciones antes de generar los asientos contables y de grabar la tabla de los impuestos/retenciones (SFE) desde la opción de "Nuevo Recibo". La llamada desde este punto de entrada está fuera del control de la transacción. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "FA087INC" de la rutina de Cobros Diversos (FINA087A). Más información: DT PE F998NRG3 Agregar acciones antes de asientos contables y de grabar tabla de impuestos/retenciones
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998GSE1 | Tiene el objetivo de actualizar campos creados por el usuario en la tabla de Títulos por Cobrar (SE1), este proceso es realizado antes de finalizar las actualizaciones de la tabla de Títulos por Cobrar. Parámetros recibidos:
Retorno:
Este punto de entrada sustituye al "F840SE1" de la rutina de Generación de recibos (FINA840). Más información: DT PE F998GSE1 Permite grabar campos creados por el usuario en la tabla de títulos por cobrar
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F998MAIL | Tiene el objetivo de actualizar el asunto y el cuerpo del Mail. Parámetros recibidos:
Retorno:
Más información: DT PE F998MAIL Modificar el Asunto y Cuerpo al enviar el Recibo por Mail Âncora | FINCMTC | FINCMTC | FINCMTC Tiene el objetivo de dar tratamiento a la cadena ingresada en la lectora de cheques para indicar posición y longitud de los datos contenidos en la cadena, retorna un array con 6 valores correspondiente a los campos:
Parámetros recibidos:
Ejemplo := 0<B240002400240123456789ASDFGHJK
Más información: DT PE FINCMTC Personalización de los datos ingresados en la lectora de cheques TOTVS Recibo
IMPORTANTE: Este punto de entrada es opcional de lo contrario la Lectora de cheques tomara las siguientes longitudes
Âncora | FINLRCHQ | FINLRCHQ | FINLRCHQ | Tiene el objetivo de retornar una cadena de caracteres con el formato de un cheque y ser visualizado en la "Lectora De Cheque". Parámetros recibidos:
Más información: 695246_MMI-5510_DT_Punto_de_Entrada_FINLRCHQ_ARG
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998NATVAZ | F998NATVAZ |
Tiene el objetivo de personalizar la obligatoriedad del campo Modalidad en el encabezado del recibo y esta supliendo al punto de entrada A087NATVAZ de la rutina FINA087A. Parámetros recibos:
Más información: DT PE F998NATVAZ Validación obligatoriedad de campo Modalidad Totvs Recibos PER
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998VISFP | F998VISFP | Tiene el objetivo de que el usuario pueda indicar columnas y valores que se desean incluir en el GRID de visualización de las formas de pago al momento de visualizar un recibo a detalle desde "Buscar recibos".
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Âncora | F998NROK | F998NROK | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Parámetros recibidos: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Respuesta: |
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "Totvs.ch"
/*/{Protheus.doc} F998NROK
Punto de entrada que permite agregar validaciones al recibo antes del guardado
Si retorna un .T. procedera con el guardado del recibo
Si retorna un .F. no continuara con el guardado del recibo
/*/
USER FUNCTION F998NROK()
Local jFormasPago := Paramixb[1] //Json que contiene todas las formas de pago del recibo
Local jTitulos := Paramixb[2] //Json que contiene todos los titulos que contiene el recibo
Local jEncabezado := Paramixb[3] //Json que contiene los datos que conforman el encabezado del recibo
Local lRet := .T. As Logical
Local aRet := {} As Array
Local nCont As Numeric
Local cMensaje := "" As Character
Local nTipoDoc As Numeric
//Ejemplo de validaciones en las formas de pago que contiene el recibo
FOR nCont := 1 TO LEN(jFormasPago)
nTipoDoc := AScan(jFormasPago[nCont],{|x|x['property'] == "tipodoc"})
IF jFormasPago[nCont][nTipoDoc]['value'] == "EF"
lRet := .F.
cMensaje := "No se permite guardar recibos con forma de pago tipo EF-Efectivo"
AADD(aRet,{lRet,cMensaje})
ENDIF
NEXT
/*
//Ejemplo de validaciones en los titulos que contiene el recibo
FOR nCont := 1 TO LEN(jTitulos)
IF jTitulos[nCont]['series'] == "A"
lRet := .F.
cMensaje := "No se permite guardar un recibo con un titulo de serie A"
AADD(aRet,{lRet,cMensaje})
ENDIF
NEXT
*/
/*
//Ejemplo de validaciones sobre el encabezado del recibo
IF ALLTRIM(jEncabezado['modalidad']) == "COBRO"
lRet := .F.
cMensaje := "No se permite guardar un recibo con una modalidad dde tipo COBRO"
AADD(aRet,{lRet,cMensaje})
ENDIF
*/
RETURN aRet |
F998NRG2
Punto de entrada disponible que permite realizar acciones después de registrar datos en la tabla de Recibos (SEL) y Cuentas por Cobrar (SE1).
La llamada desde este punto de entrada está fuera del control de la transacción.
Crear la función de usuario F998NRG2, en la cual se puedan ejecutar acciones posteriores a grabar el recibo de cobro.
- Dentro del módulo Financiero, ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar | TOTVS Recibo).
- Dentro del aplicativo de TOTVS Recibo, ir a Nuevo Recibo.
- Llenar el encabezado del recibo.
- Aplicar los filtros del encabezado.
- Seleccionar un Título por Cobrar y agregar una Forma de Pago (opcional).
- Dar clic en Confirmar para el guardado del recibo.
- Comprobar las acciones ejecutadas por el punto de entrada posteriores a grabar el recibo de cobro.
Descripción
Actualizaciones
N/A
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function F998NRG2()
If MsgYesNo("¿Desea ejecutar el punto de entrada F998NRG2? ", "Confirmar")
Finr087()
EndIf
Return |
F998NRG1
Punto de entrada disponible que permite realizar acciones antes de la contabilidad
La llamada desde este punto de entrada está fuera del control de la transacción.
Crear la función de usuario F998NRG1 por medio del cual realicen acciones antes de generar asientos contables al grabar un recibo de cobro.
- Dentro del módulo Financiero, ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar | TOTVS Recibo).
- Dentro del aplicativo de TOTVS Recibo, ir a Nuevo Recibo.
- Llenar el encabezado del recibo.
- Aplicar los filtros del encabezado.
- Seleccionar un Título por Cobrar y agregar una Forma de Pago (opcional).
- Dar clic en Confirmar para grabar el recibo.
- Revisar que la ejecución del punto de entrada haya realizado las acciones esperadas.
N/A
language | java |
---|---|
firstline | 1 |
title | Ejemplo |
linenumbers | true |
collapse | true |
"Anexo los archivos XML y PDF del recibo número "+ " <b>" + cserie + "-" + cRecibo+"</b>"
cCuerpo += "<br><br>"
cCuerpo += "Saludos"
cCuerpo += "<br><br>"
cCuerpo += "Empresa SA de CV"
AADD (aMail,cAsunto)
AADD (aMail,cCuerpo)
Return aMail |
Âncora F998IMPREC F998IMPREC
F998IMPREC
Tiene el objetivo de imprimir un recibo en formato PDF personalizado (El recibo en formato PDF debe quedar con el mismo nombre del archivo XML y en la misma ruta, en el caso de que sea enviado por email).
Parámetros recibidos:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB[1,1] | C | Nombre del archivo XML ya generado con extensión. |
PARAMIXB[1,2] | C | Vacío |
PARAMIXB[1,3] | C | Vacío |
PARAMIXB[1,4] | A | Array que contiene la información del recibo (Títulos a cobrar y/o compensar) [1] Serie título [2] Número de documento título [3] Fecha del recibo [4] Monto del pago [5] Monto compensación [6] Cliente [7] Tienda |
PARAMIXB[1,5] | C | Numero del recibo. |
PARAMIXB[1,6] | C | Serie del recibo. |
Más información: DT PE F998IMPREC Formato de impresión para los recibos TOTVS Recibo
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function F998IMPREC()
Local aRecibos := PARAMIXB
Local cDir := &(SuperGetmv( "MV_CFDRECP" , .F. , "GetSrvProfString('startpath','')+'\cfd\recpagos\'" ))
Local cName := Replace(aRecibos[1][1], ".xml", ".pdf" )
Local cRuta := "C:\Ambientes\2210\ARG\protheus_data"+cDir
// Función para Crear PDF personalizado
// U_CreaPDF(cName,cDir)
ShellExecute("Open", cName+".pdf"),"",cRuta,1) //Función para abrir archivo PDF — Esta función ocupa la ruta completa del archivo.
Return |
IMPORTANTE
- El parámetro recibido PARAMIXB[1,1], contiene el nombre del archivo XML ya generado con extensión, este debe de ser usado para generar el nombre del recibo en formato PDF.
Considerar que ambos archivos XML y PDF deben ubicarse en la misma ruta y tener el mismo nombre. - La ruta para el guardado de los Recibos se configura para México en el parámetro MV_CFDRECP de lo contrario se debe de guardar en la ruta ""\system\cfd\recpagos\",
la cual debe ser referenciada de la siguiente forma: "GetSrvProfString('startpath','')+'\cfd\recpagos\'".
En esta ruta se validará la existencia del archivo, si el archivo no se encuentra en esta ruta el sistema alertará que no se encontro el archivo PDF. - El PE F998IMPREC debe de abrir el Archivo PDF creado previamente.
Âncora FINCMTC FINCMTC
FINCMTC
Tiene el objetivo de dar tratamiento a la cadena ingresada en la lectora de cheques para indicar posición y longitud de los datos contenidos en la cadena, retorna un array con 6 valores correspondiente a los campos:
- Banco (EF_BANCO).
- Agencia (EF_AGENCIA).
- Código Postal (EF_POSTAL).
- Cheque (EF_NUM) .
- Cuenta (EF_CONTA).
- DV Cuenta
Parámetros recibidos:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB[1,1] | C | Contiene la cadena que se introduce en la ventana de la Lectora de Cheques |
Ejemplo := 0<B240002400240123456789ASDFGHJK
Informações | ||
---|---|---|
| ||
Cuando se usa una lectora de cheques se agrega un cero y un signo menor que (<) por lo que en caso de informar los valores manualmente, deberá asegurarse de que estos caracteres también sean indicados al inicio antes de la información del cheque. 0<B240002400240123456789ASDFGHJK |
Más información: DT PE FINCMTC Personalización de los datos ingresados en la lectora de cheques TOTVS Recibo
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function FINCMTC()
Local cCmc7 := Paramixb[1]
Local nTamBco := 0 As Numeric
Local nTamAge := 0 As Numeric
Local nTamCta := 0 As Numeric
Local nTamChq := 0 As Numeric
Local nTamCPo := 0 As Numeric
Local aCmc7Tc := {} As Array
If nTamBco == 0
nTamBco := TamSX3("EF_BANCO")[1]
Endif
If nTamAge == 0
nTamAge := TamSX3("EF_AGENCIA")[1]
Endif
If nTamCta == 0
nTamCta := TamSX3("EF_CONTA")[1]
Endif
If nTamChq == 0
nTamChq := TamSX3("EF_NUM")[1]
Endif
If nTamCPo == 0
nTamCPo := TamSX3("EF_POSTAL")[1]
Endif
//Se agrega al arreglo a retornar una subcadena de la cadena original, configurando la posición inicial de cada campo y su longitud
//AADD(Array al que se le agregaran los valores, SUBSTR(cadena de la lectora de cheques, numero editable que indica donde empieza la cadena y por ultimo el tamaño del campo))
Aadd( aCmc7Tc, SubStr(cCmc7, 2, nTamBco)) //Banco
Aadd( aCmc7Tc, SubStr(cCmc7, 5, nTamAge)) //Agencia
Aadd( aCmc7Tc, SubStr(cCmc7, 10, nTamCPo)) //Codigo Postal
Aadd( aCmc7Tc, SubStr(cCmc7, 14, nTamChq)) //Cheque
Aadd( aCmc7Tc, SubStr(cCmc7, 20, nTamCta)) //Cuenta
Aadd( aCmc7Tc, SubStr(cCmc7, 30, 1) ) //DV Cuenta
Return aCmc7Tc |
IMPORTANTE: Este punto de entrada es opcional de lo contrario la Lectora de cheques tomara las siguientes longitudes
Campo | Longitud |
---|---|
Banco | 3 |
Agencia | 3 |
Codigo Postal | 4 |
Cheque | 8 |
Cuenta | 10 |
DV Cuenta | 1 |
Âncora FINLRCHQ FINLRCHQ
FINLRCHQ
Tiene el objetivo de retornar una cadena de caracteres con el formato de un cheque y ser visualizado en la "Lectora De Cheque".
Parámetros recibidos:
- N/A
Más información: 695246_MMI-5510_DT_Punto_de_Entrada_FINLRCHQ_ARG
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function FINLRCHQ()
Local cChq := ""
cChq := "0<00123456789abcdefghijklmnopqrs"
Return cChq |
Âncora F998NATVAZ F998NATVAZ
F998NATVAZ
Aviso | ||
---|---|---|
| ||
Este PE se encuentra deshabilitado, para personalizar la obligatoriedad del campo Modalidad en el encabezado del recibo deberá configurarla directamente en el campo FJT_NATURE a través del configurador en el habilitando el campo Obligat. Usuario. |
Tiene el objetivo de personalizar la obligatoriedad del campo Modalidad en el encabezado del recibo y esta supliendo al punto de entrada A087NATVAZ de la rutina FINA087A.
Parámetros recibos:
- N/A
Más información: DT PE F998NATVAZ Validación obligatoriedad de campo Modalidad Totvs Recibos PER
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "Totvs.ch"
User Function F998NATVAZ()
Local lRequired
lRequired := .F. // Retorna .T. si el campo Modalidad se requiere como obligatorio , retorna .F. si el campo Modalidad no es obligatorio.
Return lRequired |
Âncora F998VISFP F998VISFP
F998VISFP
Tiene el objetivo de que el usuario pueda indicar columnas y valores que se desean incluir en el GRID de visualización de las formas de pago al momento de visualizar un recibo a detalle desde "Buscar recibos".
- Crear la función de usuario F998VISFP para agregar columnas e información que se desea visualizar en el GRID de las formas de pago al momento de visualizar el recibo a detalle desde la opción de "Buscar recibo".
- La rutina efectuará las validaciones correspondientes y debe retornar un objeto con las columnas y los valores determinados por el usuario, para agregar al GRID. - Dentro del módulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
- En la sección Buscar recibo, especifique los criterios de consulta.
- Aplicar el filtro y posicionarse en el recibo a visualizar.
- Al momento de dar clic en "Visualizar" el punto de entrada F998VISFP será ejecutado.
- Haga clic en el ícono con la imagen del engrane que se encuentra a la derecha de las formas de pago.
- En la lista de campos a visualizar serán agregados los definidos por el usuario a través del punto de entrada.
- Seleccione y deseleccione los campos requeridos, a continuación, confirme.
- Se visualizarán las columnas e información de acuerdo a los campos seleccionados.
Parámetros recibidos: | No aplica | ||||||||||||||||||||
Respuesta: | Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de recibos.
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function F998VISFP
Local aCampos := {}
aCampos := {{"EL_TPCRED",GetSx3Cache("EL_TPCRED","X3_TITULO"),.F.,"tipoCred"},{"EL_TERCEIR",'Aprobado',.T.,"terCeir"}}
Return aCampos |
Âncora F998NROK F998NROK
F998NROK
Servicio para el guardado de los recibos, con el objetivo de que el usuario pueda agregar validaciones y mensajes de confirmación antes de guardar (Si retorna true procederá con el guardado del recibo, de lo contrario no procederá con el guardado del recibo y mandara un mensaje como alerta).
- Crear la función de usuario F998NROK para agregar validaciones y mensajes de confirmación o error.
- La rutina efectuará las validaciones correspondientes y debe retornar un arreglo con un valor booleano y un mensaje de confirmación o error. - Dentro del modulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
- En la sección Nuevo Recibo, llenar los campos necesarios para el encabezado del recibo.
- Seleccionar un titulo a cobrar o compensar.
- Agregar una forma de pago (Opcional).
- Al momento de dar clic en confirmar se ejecutará el punto de entrada F998NROK .
- Si las validaciones fueron las correctas procederá con el guardado del recibo, de lo contrario no permitirá el guardado y mandara un mensaje.
Parámetros recibidos: |
| ||||||||||||
Respuesta: |
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "Totvs.ch"
/*/{Protheus.doc} F998NROK
Punto de entrada que permite agregar validaciones al recibo antes del guardado
Si retorna un .T. procedera con el guardado del recibo
Si retorna un .F. no continuara con el guardado del recibo
/*/
USER FUNCTION F998NROK()
Local jFormasPago := Paramixb[1] //Json que contiene todas las formas de pago del recibo
Local jTitulos := Paramixb[2] //Json que contiene todos los titulos que contiene el recibo
Local jEncabezado := Paramixb[3] //Json que contiene los datos que conforman el encabezado del recibo
Local lRet := .T. As Logical
Local aRet := {} As Array
Local nCont As Numeric
Local cMensaje := "" As Character
Local nTipoDoc As Numeric
//Ejemplo de validaciones en las formas de pago que contiene el recibo
FOR nCont := 1 TO LEN(jFormasPago)
nTipoDoc := AScan(jFormasPago[nCont],{|x|x['property'] == "tipodoc"})
IF jFormasPago[nCont][nTipoDoc]['value'] == "EF"
lRet := .F.
cMensaje := "No se permite guardar recibos con forma de pago tipo EF-Efectivo"
AADD(aRet,{lRet,cMensaje})
ENDIF
NEXT
/*
//Ejemplo de validaciones en los titulos que contiene el recibo
FOR nCont := 1 TO LEN(jTitulos)
IF jTitulos[nCont]['series'] == "A"
lRet := .F.
cMensaje := "No se permite guardar un recibo con un titulo de serie A"
AADD(aRet,{lRet,cMensaje})
ENDIF
NEXT
*/
/*
//Ejemplo de validaciones sobre el encabezado del recibo
IF ALLTRIM(jEncabezado['modalidad']) == "COBRO"
lRet := .F.
cMensaje := "No se permite guardar un recibo con una modalidad dde tipo COBRO"
AADD(aRet,{lRet,cMensaje})
ENDIF
*/
RETURN aRet |
Âncora F998NRG2 F998NRG2
F998NRG2
Punto de entrada disponible que permite realizar acciones después de registrar datos en la tabla de Recibos (SEL) y Cuentas por Cobrar (SE1).
La llamada desde este punto de entrada está fuera del control de la transacción.
Crear la función de usuario F998NRG2, en la cual se puedan ejecutar acciones posteriores a grabar el recibo de cobro.
- Dentro del módulo Financiero, ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar | TOTVS Recibo).
- Dentro del aplicativo de TOTVS Recibo, ir a Nuevo Recibo.
- Llenar el encabezado del recibo.
- Aplicar los filtros del encabezado.
- Seleccionar un Título por Cobrar y agregar una Forma de Pago (opcional).
- Dar clic en Confirmar para el guardado del recibo.
- Comprobar las acciones ejecutadas por el punto de entrada posteriores a grabar el recibo de cobro.
Descripción | Actualizaciones | ||||||
---|---|---|---|---|---|---|---|
Punto de entrada: | F998NRG2 | ||||||
Parámetros recibidos: |
| ||||||
Respuesta: | N/A |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function F998NRG2()
Local oModel:=PARAMIXB[1]
MsgYesNo("ATENCIÓN" , "Se manda a llamar la funcion de usuario")
Return |
Âncora F998NRG1 F998NRG1
F998NRG1
Punto de entrada disponible que permite realizar acciones antes de la contabilidad
La llamada desde este punto de entrada está fuera del control de la transacción.
Crear la función de usuario F998NRG1 por medio del cual realicen acciones antes de generar asientos contables al grabar un recibo de cobro.
- Dentro del módulo Financiero, ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar | TOTVS Recibo).
- Dentro del aplicativo de TOTVS Recibo, ir a Nuevo Recibo.
- Llenar el encabezado del recibo.
- Aplicar los filtros del encabezado.
- Seleccionar un Título por Cobrar y agregar una Forma de Pago (opcional).
- Dar clic en Confirmar para grabar el recibo.
- Revisar que la ejecución del punto de entrada haya realizado las acciones esperadas.
Descipción | Actualizaciones |
Punto de entrada: | F998NRG1 |
Parámetros recibidos: | N/A |
Respuesta: | N/A |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch'
User Function F998NRG1()
MsgYesNo("ATENCIÓN" , "Se manda a llamar la funcion de usuario")
Return |
Âncora | ||||
---|---|---|---|---|
|
F998VALBX
Se crea el punto de entrada F998VALBX en la rutina FINA998 - TOTVS Recibo, con el objetivo de habilitar el descuento por pronto pago al momento de editar el "Cobro del titulo" desde la opción de Nuevo Recibo.
- Crear la funcion de usuario F998VALBX 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).
- Dentro del aplicativo de TOTVS Recibo, ir a Nuevo Recibo, llenar los campos del encabezado para localizar un titulo.
- Editar el cobro de un titulo.
Verificar si se visualiza el nuevo campo configurado en la función F998VALBX.
- Verificar si realizan los calculos para los campos descuento, multa e interes y total. Esto de acuerdo a la lógica determinada en la función de usuario.
Verificar si se guarda correctamente el valor ingresado en el campo definido por el cliente.
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 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 ['descuento'] Valor que sera mostrado en el campo descuento ['residuo'] Valor que sera mostrado como total del titulo (Despues de descuentos, multa e intereses) ['multa'] Valor que sera mostrado como multa del titulo ['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.)
N/A
Bloco de código language actionscript3 title Ejemplo de PE F998VALBX y sus funciones de usuario linenumbers true collapse true #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 oResponse['maxDiscount'] := 50//GetLimite(PARAMIXB[1]) //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 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
Âncora F998BRANU F998BRANU
F998BRANU
Se crea el punto de entrada F998BRANU en la rutina FINA998- TOTVS Recibo, con el objetivo de que el usuario pueda incluir validaciones para la opción de "Anular" en la rutina.
- Crear la función de usuario F998BRANU con las validaciones personalizadas tanto para aceptar así como para rechazar la anulación del recibo.
- Debe retornar un arreglo con dos parámetros, en donde el primero es un valor lógico, .T. (Verdadero) o .F. (Falso), de aceptación o rechazo, y el segundo es un mensaje personalizado según sea el caso. - Dentro del módulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
- Dentro del aplicativo de TOTVS Recibo, ir a Buscar recibo, llenar los campos de consulta de acuerdo a los recibos que se desea buscar y visualizar.
- Se mostrará la lista de los recibos.
- Seleccionar el recibo deseado y al dar clic en el botón de Anular recibo se ejecutará el punto de entrada F998BRANU.
- La función de usuario efectúa las validaciones personalizadas y retorna una respuesta que indica si procede o no la anulación.
- Se mostrará una ventana con el mensaje correspondiente y en caso de que proceda, el sistema continuará con la anulacióndel recibo.
Parámetros recibidos: |
| ||||||||||||
Respuesta: |
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'Protheus.ch' User Function F998BRANU Local cSerie := Paramixb[1] Local cRecibo := Paramixb[2] Local cQueryWhere := "" Local cQueryFields := "" Local cAlias := GetNextAlias() Local aRet := {.T.,""} cQueryWhere := " FJT_FILIAL = '"+xFilial("FJT")+"' AND FJT_SERIE = '"+cSerie+"' AND FJT_RECIBO = '"+cRecibo+"' " cQueryFields := " FJT_SERIE,FJT_RECIBO,FJT_CLIENT,FJT_DTDIGI " cQuery := " SELECT "+cQueryFields+" FROM "+ RetSqlName("FJT") + " WHERE "+cQueryWhere cQuery := ChangeQuery(cQuery) MPSysOpenQuery(cQuery, cAlias) WHILE (cAlias)->(!EOF()) IF (cAlias)->FJT_DTDIGI == DTOS(ddatabase) aRet := {.F.,"No se puede eliminar un recibo que haya sido generado el dia de hoy"} EndIf (cAlias)->(DbSkip()) END Return aRet |
Âncora F998BRBOR F998BRBOR
F998BRBOR
Se crea el punto de entrada F998BRBOR en la rutina FINA998- TOTVS Recibo, con el objetivo de que el usuario pueda incluir validaciones para la opción de "Borrar" en la rutina.
- Crear la función de usuario "F998BRBOR" con las validaciones personalizadas tanto para aceptar, así como para rechazar el borrado del recibo.
- Debe retornar un arreglo con dos parámetros, en donde el primero es un valor lógico, .T. (Verdadero) o .F. (Falso), de aceptación o rechazo, y el segundo es un mensaje personalizado, según sea el caso. - Dentro del módulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
- Dentro del aplicativo de TOTVS Recibo, ir a Buscar recibo, llenar los campos de consulta de acuerdo a los recibos que se desea buscar y visualizar.
- Se mostrará la lista de los recibos.
- Seleccionar el recibo deseado y al dar clic en el botón de Borrar (El recibo tiene que estar previamente anulado) recibo se ejecutará el punto de entrada "F998BRBOR".
- La función de usuario efectúa las validaciones personalizadas y retorna una respuesta que indica si procede o no el borrado.
- Se mostrará una ventana con el mensaje correspondiente y en caso de que proceda, el sistema continuará con el borrado del recibo.
Parámetros recibidos: |
| ||||||||||||
Respuesta: |
|
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#Include 'Protheus.ch' User Function F998BRBOR Local cSerie := Paramixb[1] Local cRecibo := Paramixb[2] Local cQueryWhere := "" Local cQueryFields := "" Local cAlias := GetNextAlias() Local aRet := {.T.,""} cQueryWhere := " FJT_FILIAL = '"+xFilial("FJT")+"' AND FJT_SERIE = '"+cSerie+"' AND FJT_RECIBO = '"+cRecibo+"' " cQueryFields := " FJT_SERIE,FJT_RECIBO,FJT_CLIENT,FJT_DTDIGI " cQuery := " SELECT "+cQueryFields+" FROM "+ RetSqlName("FJT") + " WHERE "+cQueryWhere cQuery := ChangeQuery(cQuery) MPSysOpenQuery(cQuery, cAlias) WHILE (cAlias)->(!EOF()) IF (cAlias)->FJT_DTDIGI == DTOS(ddatabase) aRet := {.F.,"No se puede BORRAR un recibo que haya sido generado el dia de hoy"} EndIf (cAlias)->(DbSkip()) END Return aRet |
...