Tiempo aproximado para lectura: 1:00 min
Duda
¿Cómo validar un ejemplo de ejecución automática del TOTVS Recibo (FINA998)?
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Financiero (SIGAFIN) - A partir de versión 12.1.2210
Solución
Para validar la ejecución del Totvs Recibo como rutina automática, es necesario utilizar el modelo definido para recibos (FINA887). En el modelo de Recibos de Cobro (FINA887), se definen todos los campos de la tablas de Encabezado de recibos (FJT) y Recibos de Cobro (SEL) dependiendo del país donde se ejecute.
Sigue un ejemplo de validación:
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "FWEVENTVIEWCONSTS.CH"
#INCLUDE 'FINA887.CH'
#Include "RwMake.ch"
#Include "TbiConn.ch"
User Function F887FINAUTO()
Local oMdlTab
Local cMsj := "Recibo registrado con Exito!"
Local cRecibo := "000000000017"
Local cSerie := "UNI"
Local cCliente := "000001"
SetFunName("FINA887")
// Se define el modelo FINA887
oMdlTab := FwLoadModel("FINA887")
// Se define la operación INSERT en el modelo
oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
// Se activa el modelo
oMdlTab:Activate()
//Encabezado de recibo - FJT
oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT"))
oMdlTab:SetValue('FJT_MASTER', "FJT_DTDIGI" , dDataBase )
oMdlTab:SetValue('FJT_MASTER', "FJT_RECIBO" , cRecibo )
oMdlTab:SetValue('FJT_MASTER', "FJT_SERIE" , cSerie)
oMdlTab:SetValue('FJT_MASTER', "FJT_EMISSA" , dDataBase)
oMdlTab:SetValue('FJT_MASTER', "FJT_NATURE" , "COBROS ")
oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" , cCliente )
oMdlTab:SetValue('FJT_MASTER', "FJT_LOJA" , "01")
oMdlTab:SetValue('FJT_MASTER', "FJT_COBRAD" , "")
oMdlTab:SetValue('FJT_MASTER', "FJT_RECPRV" ,"")
oMdlTab:SetValue('FJT_MASTER', "GERANCC" , "N") // Para generación de RA, S - Genera RA | N o vacío - No genera RA
oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA")
// Se activa el grupo de preguntas FIN988 para usar los valores de la tabla de preguntas SX1.
Pergunte("FIN998",.F.)
oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ?
oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ?
oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ?
//Monedas
oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "1")
oMdlTab:SetValue('MOE_DETAIL',"TASA" , 1)
oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 1000) // Monto total que suman las formas de pago.
oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) // Saldo que queda por cobrar entre los títulos x cobrar y las formas de pago.
oMdlTab:GetModel('MOE_DETAIL' ):AddLine()
oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2")
oMdlTab:SetValue('MOE_DETAIL',"TASA" , 850)
oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 0)
oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 )
// Agregar las formas de pago - Campos de tabla SEL
oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente )
oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBROS ")
oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01")
oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase)
oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "TF")
oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL"))
oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "TF")
oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "1")
oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase)
oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase)
oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"")
oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1")
oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"")
oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"")
oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2")
oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00")
oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2")
oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"")
oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"24030730")
oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,1000)
oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"001")
oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"123 ")
oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"123456789 ")
//Detalle de los titulos x cobrar - Tabla SE1
oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" , xFilial("SE1"))
oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" , "A" )
oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" ,"001024030701" )
oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" , " ")
oMdlTab:SetValue('SE1_DETAIL',"E1_TIPO" , "NF")
oMdlTab:SetValue('SE1_DETAIL',"E1_CLIENTE" , cCliente)
oMdlTab:SetValue('SE1_DETAIL',"E1_LOJA" , "01")
oMdlTab:SetValue('SE1_DETAIL',"E1_DESCONT" , 0)
oMdlTab:SetValue('SE1_DETAIL',"E1_MULTA" , 0)
oMdlTab:SetValue('SE1_DETAIL',"E1_JUROS" , 0)
oMdlTab:SetValue('SE1_DETAIL',"E1_SALDO" , 1000)
oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" , 1000)
oMdlTab:SetValue('SE1_DETAIL',"RECNO" , 39)
oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" , "NOR")
oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" , "09:00:00" ) // Hora de guardado del recibo.
//Se ejecuta el commit
If oMdlTab:VldData() // Se detonan las validaciones del modelo
// Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos.
oMdlTab:CommitData()
Endif
// En caso de usar número consecutivos en el recibo
If !Empty(GetSx3Cache("EL_RECIBO","X3_RELACAO"))
If Alltrim(cRecibo) <> Alltrim(InitPad(GetSX3Cache("EL_RECIBO","X3_RELACAO")))
RollBackSX8()
EndIf
EndIf
// Se obtienen los errores del modelo
aError := oMdlTab:GetErrorMessage()
If alltrim(aError[6]) <> ""
cMsj := aError[6]
Endif
CONOUT("Mensaje de proceso: "+cMsj)
oMdlTab:DeActivate()
Return
Conozca más
Para adquirir más conocimiento, acceda al siguiente enlace:
TDN: TOTVS Recibo - Uso como rutina automática
0 Comentarios