Árvore de páginas

Carregando...

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFIN - Financiero.
Función:

Rutina(s):

Nombre Técnico:

FINA887.PRW

Modelo de Totvs Recibo.

F887FIN.PRW

Evento financiero para Totvs Recibo.

FINA998.PRW

Totvs Recibo

País:Mercado Internacional.
Ticket:20773688
Requisito/Story/Issue (informe el requisito vinculado):DMINA-24011


02. SITUACIÓN/REQUISITO

Cuando se incluye un recibo por Rutina Automática del TOTVS Recibo, no hay validación que controle los valores del título por cobrar y la forma de pago.


03. SOLUCIÓN

Se realizan ajustes sobre la rutina FINA887 para realizar los siguientes puntos:

  • Se modifica la función de calculo de saldos para realizar las sumatorias de las formas de pago y títulos cuando es ejecutado un execauto de la rutina de recibos.

Se realizan ajustes sobre la rutina F887FIN para realizar los siguientes puntos:

  • Se modifica el evento para ser detonado el calculo de saldos en cuando se utiliza un execauto de la rutina de recibos.


  1. Realizar un respaldo del repositorio (RPO).
  2. Aplicar el parche correspondiente al issue DMINA-24011.
  3. Aplicar el paquete de expedición continua Financiero - Totvs Recibo MI con fecha de corte superior a este comunicado.
  4. A través de la rutina “Productos”, ubicada en el módulo de SIGAFAT (Actualizaciones | Archivos), incluir un producto.
  5. A través de la rutina “Bancos”, ubicada en el módulo de SIGAFAT (Actualizaciones | Archivos), incluir un banco.
  6. A través de la rutina “Clientes”, ubicada en el módulo de SIGAFAT (Actualizaciones | Archivos), incluir un cliente.

  7. Compilar la rutina que contenga la Función de Usuario con el ExecAuto a la rutina Modelo de Recibos (FINA887) (Ver ejemplo en la sección 04. INFORMACIÓN ADICIONAL)

  8. En el módulo Configurador (SIGACFG) desde el menú EntornoArchivos Menú (CFGX013)

    1. Incluir en el menú la rutina para generación de Recibos de cobro por medio de rutina automática.

  1. Ir al menú donde se agregó la rutina con la Función de Usuario y ejecutar el proceso.
  2. Una vez finalizado, verificar la grabación correcta del recibo de cobro.

Ejemplo:

Registro de recibo

Registro de un recibo de cobro
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH" 
#INCLUDE "FWEVENTVIEWCONSTS.CH" 
#INCLUDE 'FINA887.CH'

Function F887FINAUTO()
    Local oMdlTab
    Local cMsj := "Recibo registrado con éxito."
	Local cRecibo := "AUTRE2"
	Local cSerie  := "   "
	Local cCliente := "CSERVI"  	
     
	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" , "COBRO   ")
	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" 	, "")    
	oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" 	,  "RA")        

	//Contabilidad
	oMdlTab:SetValue('FJT_MASTER', "ASIENTO"    , 1)    // Muestra Asientos. 1- Si, 2 - No.
    oMdlTab:SetValue('FJT_MASTER', "AGRUPA"     , 1)    // Agrupa Asientos. 1- Si, 2 - No.  
    oMdlTab:SetValue('FJT_MASTER', "ONLINE"     , 1)    // Asientos Online. 1- Si, 2 - No.                 

	//Monedas
    oMdlTab:SetValue('MOE_DETAIL',"MOEDA" 		, "1")
	oMdlTab:SetValue('MOE_DETAIL',"TASA" 		, 1)
	oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO"	, 2820) // 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" 		, 0)
	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" 		, "COBRO   ")
	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_EMISSAO" ,dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2")
    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_FORPGO" ,"03")
    oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:00:00")
    oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"11:00:13")
    oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"TF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"TFAU-0000")
    oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,820)
    oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001")
    oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001")
	oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" 		, "1")

	
	//Para agregar una nueva linea al grid de las formas de pago
	oMdlTab:GetModel('SEL_DETAIL' ):AddLine()
	
	oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" 		,  cCliente  )
	oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" 		, "COBRO   ")
	oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" 		, "01")
	oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" 		, dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" 		, "EF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL"		, xFilial("SEL"))
	oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" 		, "EF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2")
    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_FORPGO" ,"01")
    oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:00:00")
    oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"11:00:13")
    oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"EF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"EFAUT-0009")
    oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,2000)
    oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001")
    oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001")
    oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" 		, "1") 

    
	//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" 			,"00000000000000000188"	)
	oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" 		, "A")
	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_MOEDA" 		, 1)
	oMdlTab:SetValue('SE1_DETAIL',"E1_SALDO" 		, 2320)
	oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" 			, 2320)
	oMdlTab:SetValue('SE1_DETAIL',"RECNO" 			,  239)
	oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" 		, "NOR")

  	//Para agregar una nueva linea al grid de titulos x cobrar
	oMdlTab:GetModel('SE1_DETAIL' ):AddLine()

	oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" 		, xFilial("SE1"))
	oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" 		, "A"	)
	oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" 			,"00000000000000000189"	)
	oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" 		, "A")
	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" 		, 1160)
	oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" 			, 500)
	oMdlTab:SetValue('SE1_DETAIL',"RECNO" 			,  240)
	oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" 		, "NOR")

    oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2") // Factoraje financiero, 1 - Indica que es una operación de factoraje | 2 - No es operación de factoraje

    oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" 	, "09:00:13" ) // 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 


04. INFORMACIÓN ADICIONAL

No aplica.


¡IMPORTANTE!

La presente solución aplica para versión 12.1.2210 o superior, siempre y cuando se tengan las rutinas actualizadas con la última expedición continua.


05. ASUNTOS RELACIONADOS

7 - Uso como rutina automática