Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DATOS GENERALES


Producto

Solucoes_espanhol
SolucaoTOTVS Backoffice

Línea de producto: 

Linhas_totvs_espanhol
LinhaLínea Protheus

Segmento:

Segmentos_totvs_espanhol
SegmentoBackoffice

Módulo:SIGAFIN - Financiero.
Función:
País:MéxicoTicket:NARequisito/Story/Issue (informe el requisito vinculado):DMINA-17973

...

Se requiere ejecutar la rutina Totvs Recibos (FINA998) a traves del modelo(FINA887) como rutina automatica.

03. SOLUCIÓN

Para la ejecución de la rutina Totvs Recibo(FINA998) de forma automatica, 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 pais donde se ejecute.

Ejemplo:

Para la forma de pago algunos de los campos estándar para todos los paises son los siguientes:

...

RutinaNombreFecha
LOCXNF.PRWNotas Fiscales09/01/2023

Rutinas Involucradas

RutinaNombreFecha
LOCXARG.PRW  Funciones especificas para notas fiscales Argentina21/10/2022
LOCXBOL.PRW Funciones especificas para notas fiscales Bolivia21/10/2022
LOCXCHI.PRW  Funciones especificas para notas fiscales Chile21/10/2022
LOCXCOL.PRW  Funciones especificas para notas fiscales Colombia21/10/2022
LOCXDOM.PRW Funciones especificas para notas fiscales Republica Dominicana08/09/2022
LOCXEQU.PRW  Funciones especificas para notas fiscales Ecuador21/10/2022
LOCXEUA.PRW  Funciones especificas para notas fiscales Estados Unidos21/10/2022
LOCXMEX.PRW Funciones especificas para notas fiscales México27/10/2022
LOCXNF2.PRW  Funciones especificas para notas fiscales 09/12/2022
LOCXPAR.PRWFunciones especificas para notas fiscales Paraguay08/09/2022
LOCXPER.PRWFunciones especificas para notas fiscales Perú16/11/2022
LOCXURU.PRWFunciones especificas para notas fiscales Uruguay21/10/2022
MATA942.PRWEstados Vs Ingresos Brutos08/09/2022
País:México.
Ticket:N/A.
Requisito/Story/Issue (informe el requisito vinculado):DMINA-17973.


02. SITUACIÓN/REQUISITO

Se requiere ejecutar la rutina Totvs Recibos (FINA998) a través del modelo (FINA887) como rutina automática.

03. SOLUCIÓN

En la rutina de Notas Fiscales (LOCXNF), se inicializa variable lFina998 en verdadero cuando se ejecuta el modelo FINA887, de este modo se realizan las operaciones de MsExecAuto de manera satisfactoria.


Totvs custom tabs box
tabsPre-condiciones,Pasos
idsPre-condiciones,Pasos

Para la forma de pago existe algunos exclusivos de cada pais:

...

Informações
titleImportante

Es importante que al momento de informar los valores en el modelo, se informe solo las propiedad que pertenecen al pais donde se vaya a ejecutar el Commit del modelo, ya que si se informa algun otro campo que no existe para dicho pais se detonara error en la ejecución.

Totvs custom tabs box
tabsPre-condiciones,Pasos
idsPre-condiciones,Pasos
  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.
Totvs custom tabs box items
defaultyes
referenciaPre-condiciones
  1. Compilar Crear 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)va a contener el Execauto a la rutina Modelo de Recibos (FINA887). Para más detalle consultar el apartado 04. INFORMACIÓN ADICIONAL
  2. Compilar la rutina del punto anterior.
  3. En el módulo Configurador (SIGACFG) desde el menú Entornomenú Entorno| Archivos  Archivos | Menú  Menú (CFGX013)
    • Incluir en el menú la rutina para generación de Recibos de cobro por medio de rutina automatica.
Totvs custom tabs box items
defaultno
referenciaPasos

04. INFORMACIÓN ADICIONAL

A continuación se muestran alguno ejemplos para ejecutar las operaciones de INSERT, DELETE y UPDATE del modelo:

    • automática.
  1. A través del módulo SIGAFIN en la rutina de Clientes (Actualizaciones | Archivos | Clientes) incluir un cliente (Código: CSERVI).
  2. A través del módulo SIGAFIS en la rutina de Tipos de Entrada y Salida (Actualizaciones | Archivos | Tipos de Entrada y Salida) incluir una TES de salida.
  3. A través del módulo SIGAFIN en la rutina de Bancos (Actualizaciones | Archivos | Bancos) incluir un banco (Código: CX1).
  4. A través del módulo SIGAFAT en la rutina de Facturación (Actualizaciones | Facturaciones | Facturación) incluir dos facturas de venta para el cliente registrado previamente (Número de documento: 00000000000000000188 y 00000000000000000189).
Totvs custom tabs box items
defaultno
referenciaPasos


Ejecución de la rutina automática - Totvs Recibos

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


Ejemplo de la rutina ExecAuto:

Bloco de código
languagedelphi
titleRegistro 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)
 
Bloco de código
languagedelphi
titleExecAuto INSERT
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cMsj := "Recibo registrado con exito." 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" , "") // Para generación de RA, S - Genera RA | N o vacio - No genera RA oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA") // Documento a generar saldo

	// Se activa el
grupo de preguntas FIN988 para usar los valores de la tabla de preguntas SXI. Pergunte("FIN998",.F.)
 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', "
ASIENTO
FJT_RECIBO" 
,
MV_PAR01)
 
//
 
¿Muestra Asientos ?
cRecibo )
	oMdlTab:SetValue('FJT_MASTER', "
AGRUPA
FJT_SERIE" 
, 
MV_PAR02) // ¿Agrupa Asientos ?
cSerie)
	oMdlTab:SetValue('FJT_MASTER', "
ONLINE
FJT_EMISSA" , dDataBase)
	oMdlTab:SetValue('FJT_MASTER', 
MV_PAR03) //¿Asientos Online ? //Monedas
"FJT_NATURE" , "COBRO   ")
	oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" ,  cCliente )
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
MOEDA
FJT_LOJA" 
	, "
1
01")
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
TASA
FJT_COBRAD" 
, 
1
"")
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER',
"RECIBIDO" , 2820) // Monto total que suman las formas de pago
 "FJT_RECPRV" ,"")
	oMdlTab:SetValue('FJT_MASTER', "GERANCC" 	, "")    
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
SALDO
DOCUMEN" 	
, 
0
 "RA") 
	
	//
Saldo que queda por cobrar de los titulos x cobrar. oMdlTab:GetModel('MOE_DETAIL' ):AddLine() oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2")
 Se activa el grupo de preguntas FIN988 para usar los valores de la tabla de preguntas SX1.
	Pergunte("FIN998",.F.)

	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
TASA
ASIENTO" 	
, 0)
, MV_PAR01) // ¿Muestra  Asientos ?          
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
RECIBIDO
AGRUPA" 	, 
0)
MV_PAR02) // ¿Agrupa Asientos ?            
	oMdlTab:SetValue('
MOE
FJT_
DETAIL
MASTER', "
SALDO
ONLINE" 	
, 
0 )
MV_PAR03) //¿Asientos Online ?      
//
 
Agregar
 
las
 
formas
 
de
 
pago
 
-


 
Campos
 
de
 
tabla
 
SEL
//Monedas
    oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_CLIENTE
MOEDA" 		, 
cCliente
"1")
	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_NATUREZ
TASA" 		, 
"COBRO "
1)
	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_LOJA
RECIBIDO"
	
, "01")
, 2820) // Monto total que suman las formas de pago.
	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_DTDIGIT
SALDO" 		, 
dDataBase) oMdlTab:SetValue('SEL
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',"
EL_TIPO
MOEDA" 		, "
TF
2")
	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_FILIAL
TASA" 		, 
xFilial("SEL"
0)
)

	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_TIPODOC
RECIBIDO"
	, 
"TF"
0)
	oMdlTab:SetValue('
SEL
MOE_DETAIL',"
EL_MOEDA
SALDO" 		
, "1") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase)
, 0 )

    // Agregar las formas de pago - Campos de tabla SEL
    oMdlTab:SetValue('SEL_DETAIL',"EL_
DTVCTO
CLIENTE" 		,
dDataBase)
  cCliente 
)
	oMdlTab:SetValue('SEL_DETAIL',"EL_
TPCRED
NATUREZ" 		, "
1
COBRO   ")
	oMdlTab:SetValue('SEL_DETAIL',"EL_
ACREBAN
LOJA" 		, "
1
01")
	oMdlTab:SetValue('SEL_DETAIL',"EL_
TERCEIR
DTDIGIT" 
,"1"
		, dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
ENDOSSA
TIPO" 		, "
2
TF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
TRANSIT
FILIAL"		, 
,
xFilial("
2
SEL"))
	oMdlTab:SetValue('SEL_DETAIL',"EL_
VERSAO
TIPODOC" 		, "
00
TF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
SELDOC
MOEDA" 		, "
2
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
FORPGO
EMISSAO" ,
"03"
dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
HRPAGO
DTVCTO" ,
"12:00:00"
dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
HORA
TPCRED" ,
"11:00:13
"1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
PREFIXO
ACREBAN" ,"
TF
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
NUMERO
TERCEIR" ,"
TFAU-0000
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
VALOR
ENDOSSA" ,
820
"2")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
BANCO
TRANSIT" ,"
CX1
2")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
AGENCIA
VERSAO" ,"
00001
00")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
CONTA
SELDOC" ,"
0000000001
2")
//Para
 
agregar
 
una
 
nueva
 
linea al grid de las formas de pago
oMdlTab:
GetModel
SetValue('SEL
_DETAIL' ):AddLine()
_DETAIL',"EL_FORPGO" ,"03")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
CLIENTE
HRPAGO" 
,
,"12:00:00")
  
cCliente
  
)
oMdlTab:SetValue('SEL_DETAIL',"EL_
NATUREZ
HORA" 
, "COBRO
,"11:00:13")
    
")
oMdlTab:SetValue('SEL_DETAIL',"EL_
LOJA
PREFIXO" 
,
"
01
TF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
DTDIGIT
NUMERO" 
, dDataBase
,"TFAU-0000")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
TIPO
VALOR" 
, "EF"
,820)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
FILIAL
BANCO"
 ,
xFilial(
"
SEL
CX1"
)
)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
TIPODOC
AGENCIA" 
,
"
EF
00001")
    oMdlTab:SetValue('SEL_DETAIL',"
EL_MOEDA" , "1") oMdlTab:SetValue
EL_CONTA" ,"0000000001")
	
	//Para agregar una nueva linea al grid de las formas de pago
	oMdlTab:GetModel('SEL_DETAIL'
,"EL_EMISSAO" ,dDataBase)
 ):AddLine()
	
	oMdlTab:SetValue('SEL_DETAIL',"EL_
DTVCTO
CLIENTE" 		,
dDataBase)
  cCliente  )
	oMdlTab:SetValue('SEL_DETAIL',"EL_
TPCRED
NATUREZ" 		, "
1
COBRO   ")
	oMdlTab:SetValue('SEL_DETAIL',"EL_
ACREBAN
LOJA" 		, "
1
01")
	oMdlTab:SetValue('SEL_DETAIL',"EL_
TERCEIR
DTDIGIT" 
,"1"
		, dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
ENDOSSA
TIPO" 		, "
2
EF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
TRANSIT
FILIAL"		, 
,
xFilial("
2
SEL"))
	oMdlTab:SetValue('SEL_DETAIL',"EL_
VERSAO
TIPODOC" 		, "
00
EF")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
SELDOC
MOEDA" 		, "
2
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
FORPGO
EMISSAO" ,
"01"
dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
HRPAGO
DTVCTO" ,
"12:00:00"
dDataBase)
    oMdlTab:SetValue('SEL_DETAIL',"EL_
HORA
TPCRED" ,"
11:00:13
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
PREFIXO
ACREBAN" ,"
EF
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
NUMERO
TERCEIR" ,"
EFAUT-0009
1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
VALOR
ENDOSSA" ,
2000
"2")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
BANCO
TRANSIT" ,"2")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
AGENCIA
VERSAO" ,"00")
    oMdlTab:SetValue('SEL_DETAIL',"EL_
CONTA
SELDOC" ,"
") //Detalle de los titulos x cobrar - Tabla SE1
2")
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
FILIAL
FORPGO" 
,
xFilial(
"
SE1
01")
)

    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
PREFIXO
HRPAGO" 
,
"
A
12:00:00"
)
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
NUM
HORA" 
,"
00000000000000000188
11:00:13"
)
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
PARCELA
PREFIXO" 
,
"
A
EF")
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
TIPO
NUMERO" 
,
"
NF
EFAUT-0009")
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
CLIENTE
VALOR" 
, "CSERVI"
,2000)
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
LOJA
BANCO" 
,
"
01
CX1")
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
DESCONT
AGENCIA" 
, 0
,"00001")
    oMdlTab:SetValue('
SE1
SEL_DETAIL',"
E1
EL_
MULTA
CONTA" 
, 0)
,"0000000001")
    
	//Detalle de los titulos x cobrar - Tabla SE1
    oMdlTab:SetValue('SE1_DETAIL',"E1_
JUROS
FILIAL" 		, 
0
xFilial("SE1"))
	oMdlTab:SetValue('SE1_DETAIL',"E1_
SALDO
PREFIXO" 		, 
2320
"A"	)
	oMdlTab:SetValue('SE1_DETAIL',"
BAIXAR
E1_NUM" 
, 2320
			,"00000000000000000188"	)
	oMdlTab:SetValue('SE1_DETAIL',"
RECNO
E1_PARCELA" 		, 
239
"A")
	oMdlTab:SetValue('SE1_DETAIL',"E1_
MOTIVO" , "NOR") //Para agregar una nueva linea al grid de titulos x cobrar
TIPO" 		, "NF")
	oMdlTab:
GetModel
SetValue('SE1_DETAIL',"E1_CLIENTE" 
):AddLine()
		, cCliente)
	oMdlTab:SetValue('SE1_DETAIL',"E1_
FILIAL
LOJA" 		, 
xFilial(
"
SE1
01")
)

	oMdlTab:SetValue('SE1_DETAIL',"E1_
PREFIXO
DESCONT" 		, 
"A"
0)
	oMdlTab:SetValue('SE1_DETAIL',"E1_
NUM
MULTA" 		, 0)
	oMdlTab:SetValue('SE1_DETAIL',
"00000000000000000189"
"E1_JUROS" 		, 0)
	oMdlTab:SetValue('SE1_DETAIL',"E1_
PARCELA
SALDO" 		, 
"A"
2320)
	oMdlTab:SetValue('SE1_DETAIL',"
E1_TIPO
BAIXAR" 
, 
"NF"
2320)
	oMdlTab:SetValue('SE1_DETAIL',"
E1_CLIENTE
RECNO" 
, 
"CSERVI"
 239)
	oMdlTab:SetValue('SE1_DETAIL',"E1_
LOJA" , "01")
MOTIVO" 		, "NOR")

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

	oMdlTab:SetValue('SE1_DETAIL',"E1_
MULTA
FILIAL" 		, 
0
xFilial("SE1"))
	oMdlTab:SetValue('SE1_DETAIL',"E1_
JUROS
PREFIXO" 		, 
0
"A"	)
	oMdlTab:SetValue('SE1_DETAIL',"E1_
SALDO
NUM" 			,
1160
"00000000000000000189"	)
	oMdlTab:SetValue('SE1_DETAIL',"
BAIXAR
E1_PARCELA" 		, 
500
"A")
	oMdlTab:SetValue('SE1_DETAIL',"
RECNO
E1_TIPO" 		, 
240
"NF")
	oMdlTab:SetValue('SE1_DETAIL',"E1_
MOTIVO
CLIENTE" 		, 
"NOR"
cCliente)
	oMdlTab:SetValue('
FAC
SE1_DETAIL',
'FACTOR',"2") // Factoraje financiero, 1 - Indica que es una operación de factoraje | 2 - No es operación de factoraje
"E1_LOJA" 		, "01")
	oMdlTab:SetValue('
GEN
SE1_DETAIL',"
HOURSAVERECEIPT
E1_DESCONT" 		, 
"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
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
    
aError
 
:=
 
oMdlTab:GetErrorMessage()
  // Si 
If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return

Factoraje Financiero

Para realizar una operación de factoraje es importante informar las siguientes propiedades en el modelo:

  • EL_FACTOR
  • FACTOR
  • VALUE
  • RECNO

Ejemplo:

Bloco de código
languageactionscript3
titleFactoraje
	//Operación de factoraje
	oMdlTab:SetValue('SEL_DETAIL','EL_FACTOR' , "1") // Informar 1 para indicar que es operación de factoraje
	oMdlTab:SetValue('FAC_DETAIL','FACTOR',"1") // Informar 1 para indicar que es operación de factoraje
	oMdlTab:SetValue('FAC_DETAIL','VALUE',1500) // Valor correspondiente a la compensación realizada desde rutina Compensación entre carteras.
	oMdlTab:SetValue('COM_DETAIL','RECNO',478) // Número de registro en la tabla Movimientos Bancarios.

Recibo con recibo sustituto

Para generar un recibo que contiene un recibo de cobro relacionado previamente anulado con motivo 01 - Comprobante emitido con errores con relación se deben informar las siguientes propiedades:

Bloco de código
languageactionscript3
titleFactoraje
 	//Agregar recibo sustituto
	oMdlTab:SetValue('SEL_DETAIL',"EL_SERSUS" 			, cSerieS )
	oMdlTab:SetValue('SEL_DETAIL',"EL_RECSUS" 			, cReciboS )

Card documentos
InformacaoUtilice este box para resaltar información relevante y/o de destaque.
Titulo¡IMPORTANTE!

05. ASUNTOS RELACIONADOS

...

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

Para el detalle del proceso de implementación y ejemplos de rutina automática, consultar:

Uso como rutina automática

05. ASUNTOS RELACIONADOS

TOTVS Recibo