Árvore de páginas

Versões comparadas

Chave

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

...

Informações
titleImportante

Para generar recibos con serie, es necesario contar con el parámetro MV_SERREC igual a ".T." y a su vez obtener el número consetivo de la tabla SX5 o en su defecto informarlo de forma directa, cuidando que la númeración sea la correcta.

Ejemplo para obtener el consecutivo del recibo de la tabla SX5:

DbSelectArea("SX5")
DbSetOrder(1) // X5_FILIAL+X5_TABELA+X5_CHAVE                                                                                                                                    
If SX5->(MSSeek( xFilial("SX5")+"RN"+cSerie ))
    cRecibo := StrZero( Val( X5Descri() )
Endif


Ejemplo:

Bloco de código
languageactionscript3
titleTimbrado desde guardo del recibo
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH" 
#INCLUDE "FWEVENTVIEWCONSTS.CH" 
#INCLUDE 'FINA887.CH'

Function F887FINAUTO()
    Local oMdlTab
	Local cCRLF	    := (chr(10)+chr(13))
    Local cMsj := "Recibo registrado con exito." + cCRLF
	Local cRecibo := "CFGIAU"
	Local cSerie  := "   "
	Local cCliente := "CSERVI"
	Local jData		:= JsonObject():New() // Objeto Json que contiene la información del recibo a timbrar y algunas configuraciones.
	Local aResTmp   := {} // Arreglo para guardar los errores del timbrado
	Local nY        := 0

    SetFunName("FINA887")
	oMdlTab  := FwLoadModel("FINA887")
	oMdlTab:SetOperation(MODEL_OPERATION_INSERT)
	oMdlTab:Activate()
	//Encabezado - FJT
	oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT")) // FILIAL
	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")
	
	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"	, 1110)
	oMdlTab:SetValue('MOE_DETAIL',"SALDO" 		, 0 )
	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 la forma de pago
    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_MOEDA" 		, "1")
    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" ,"TFAUTO-0000")
    oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,440)
    oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001")
    oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001")
	
	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_MOEDA" 		, "1")
    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" ,670)
    oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1")
    oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001")
    oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001")

    //Detalle de los titulos
    oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" 		, xFilial("SE1"))
	oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" 		, "A"	)
	oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" 			,"00000000000000000191"	)
	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" , 660)
	oMdlTab:SetValue('SE1_DETAIL',"RECNO" ,  243)
	oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" 		, "NOR")
	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" , 450)
	oMdlTab:SetValue('SE1_DETAIL',"RECNO" ,  244)
	oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" 		, "NOR")

    oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2")

    oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" 	, "09:00:13" )

    //Se ejecuta el commit
    If oMdlTab:VldData()
        oMdlTab:CommitData()
    Endif
	//Se obtienen los errores del modelo
    aError := oMdlTab:GetErrorMessage()
    If alltrim(aError[7]) <> ""
		cMsj := aError[7] 
	else
	// Si no hubo errores al grabar recibo se procede con el timbrado
		jData['origin']		:= "FINA998" 
		jData['imppdf'] 	:= .F.  
		jData['sendemail']  := .F.
		jData['email']		:= ""
		jData['emailcc']	:= ""
		jData['serie']		:= cSerie
		jData['recibo']		:= cRecibo
		jData['cliente']	:= cCliente 
		jData['filial']		:= xFilial("SEL")
		jData['client']	    := cCliente
		// Se validan los titulos que contiene el recibo de cobro.
		If validTitles(jData)
			//Timbrado de recibo de cobro
			FISA815(cRecibo, cSerie,,,@aResTmp,jData)

 			// Ciclo para concatenar la respuesta del timbrado.
			For nY := 1 To Len(aResTmp)
				cMsj += aResTmp[nY][3] + cCRLF
			Next nY
		Endif 
	Endif

	CONOUT("Mensaje de proceso: "+cMsj)    
	
    oMdlTab:DeActivate()



Return 

...

Para la generación de diferencia de cambio se requiere informar el parámetro MV_DIFCAMR igual a "S".

A continuación se presenta un ejemplo para realizar la diferencia de cambio a traves del modelo:

...