Jump to content
Fivewin Brasil

consultar as NF-e destinadas para um CNPJ - FlexDocs


kapiaba

Recommended Posts

Galera, ajuda ahi:


Alguém coseguiu fazer esta função da FLEXDOCS funcionar?



#include "FiveWin.ch"

FUNCTION Main()

&&--------------------------------------------------------------------------------------
&& && Funcionalidade para consultar as NF-e destinadas para um CNPJ
&& &&--------------------------------------------------------------------------------------
&& DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
&&--------------------------------------------------------------------------------------
Local siglaWS && sigla do WS: AN para Ambiente Nacional ou RS
Local siglaUF && sigla da UF do destinatário
Local tipoAmbiente && Ambiente: 1-Produção e 2-Homologação
Local nomeCertificado && campo assunto do certificado digital
Local versao && versão= 1.01
Local CNPJ && CNPJ do destinatário da NF-e
Local indNFe && 0-todas as notas,
&& 1-somente as que não tiveram manifestação concluisva, & 2-todas as que tiveram manifestação
Local indEmi && 0-todas as NF-e,
&& 1-somente as NF-e que não tenham destinatário/remetente && com a mesma raiz CNPJ
Local ultNSU && último NSU recebido pela empresa
Local proxy && IP e porta do proxy, informar se existir proxy
Local usuario && usuario do proxy
Local senha && senha do proxy
Local licenca && licenca de uso, necessário informar para produção
&&--------------------------------------------------------------------------------------
&& DECLARAÇÃO DE PARÂMETROS DE RETORNO DA FUNCIONALIDADE
&&--------------------------------------------------------------------------------------
Local msgDados && retorna o XML enviado ao WS
Local msgRetWS && retorna o XML de resposta do WS
Local cStat && retorna o código do resultado da chamada
Local msgResultado && retorna o literal do resultado da chamada
Local dhResp && retorna a data e hora da resposta
Local indCont && retorna o indicador de continuação
&& 0-não existem mais NF-e
&& 1-existem mais NF-e
Local ultNSUConsultado && retorna o Último NSU pesquisado na SEFAZ.
&& Se for o caso, o solicitante pode continuar a consulta && a partir deste NSU para obter novos resultados.
Local txtNFe && retorna o TXT com as informações das notas localizadas
Local objNFeUtil
&&--------------------------------------------------------------------------------------
&& INICIALIZAÇÃO DE PARÂMETROS
&&--------------------------------------------------------------------------------------
siglaWS := "RS"; siglaUF := "RS"; tipoAmbiente := 2

nomeCertificado := "CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ-1 V1, OU=Caixa Economica Federal, O=ICP-Brasil, C=BR"

versao := "1.01"; msgDados := ""; msgRetWS := ""
cStat := 0 ; msgResultado := ""; CNPJ := "10142785000190"
indNFe := 0; indEmi := 0; ultNSU := "0"; proxy := ""
usuario := ""; senha := ""; licenca := ""; dhResp := ""
indCont := 1 ; ultNSUConsultado := "0"; txtNFe := ""

&&--------------------------------------------------------------------------------------
&& instancia classe
&&--------------------------------------------------------------------------------------
//objNFeUtil := CREATEOBJECTEX("NFe_Util_2G.Util","","") // original

objNFeUtil := CREATEOBJECT("NFe_Util_2G.Util")

&&--------------------------------------------------------------------------------------
&& chama funcionalidade
&&--------------------------------------------------------------------------------------

DO WHILE (indCont = 1)

txtNFe := objNFeUtil:ConsultaNFDest(siglaWS,siglaUF,tipoAmbiente,nomeCertificado,versao,@msgDados,@msgRetWS,@cStat,@msgResultado,CNPJ,indNFe,indEmi,ultNSU,@dhResp,@indCont,@ultNSUConsultado,proxy,usuario,senha,licenca)

IF cStat = 138
&&
&& tratar txtNFe
&&
? msgResultado
? txtNFe
ELSEIF cStat <> 137
&&
&& tratar erro da chamada
&&
indCont = 9
ENDIF

ultNSU = UltNSUConsultado

ENDDO

? txtNFe

&&--------------------------------------------------------------------------------------
&& libera classe
&&--------------------------------------------------------------------------------------
objNFeUtil = nil //null

RETURN nil


Obg. abs.

Link to comment
Share on other sites

Ola kapi

Faz assim

Method BuscaNFeDestinadas( ) Class TVoNFeUtil2G
**********************************************************************************************************************
**
Local msgDados := ''
Local msgRetWS := ''
Local cStat    := 0
Local msgResultado := '' 
Local indNFe   := 0 
Local indEmi   := 0
Local ultNSU   := '0'
Local dhResp   := ''
Local indCont  := 0
Local ultNSUConsultado := '0'
Local cResult
Local aResul := {}
Local aNFes  := {}
Local oDlg, nNotas := Space(50)
Local cTime := Time()

   DEFINE DIALOG oDlg TITLE "Aguarde..."

   @ 2, 11 SAY "Buscando Nfe Destinadas"
   @ 3, 11 SAY oSay VAR nNotas

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT PlaceGif( oDlg ) NOWAIT

Do While .t. //indCont == 0

	cResult := ::oNFEUtil:ConsultaNFDest( 'AN', USERINFO_UF, 1, ::cCertificado, '1.01', @msgDados, @msgRetWS, @cStat, @msgResultado, USERINFO_CNPJ, indNFe, indEmi, ultNSU, @dhResp, @indCont, @ultNSUConsultado,::proxy, ::usuario, ::senha, ::Licenca)

	ultNSU := ultNSUConsultado
	SysRefresh()

	IF cStat == 138

		aResul := HB_ATOKENS( cResult, CHR(13) )

		FOR k=1 TO Len( aResul )
			IF !Empty( aResul[k] )
				aResul2 := HB_ATOKENS( aResul[k], '|' )
				IF aResul2[ 1 ] == '[resNFe]' .AND. aResul2[ 9 ] == '1'
					AADD( aNFes, aResul2 )
				Endif
			EndIf
		Next

		nNotas := "Qtd.:"+AlltrimStr( Len( aNFes ) )+" Tempo..:"+Elaptime( cTime, Time() )
		oSay:Refresh()

	EndIf

	IF indCont == 0
		exit
	EndIF

EndDo

//XBrowse( aNFes )
oDlg:End()

Return aNFes

ai pra chamar o metodo

faz assim

//----------------------------------------------------------------------------------------------------------------------//
// Buscar NFe destinadas ao CNPJ
//----------------------------------------------------------------------------------------------------------------------//
	#include "FiveWin.ch"
	#include "xBrowse.ch"
	#include "Dbfs.ch"
	#include "Opcoes.ch"
	#include "hbxml.ch"
	#include "DTPICKER.CH"

Function WEstAt48()
***********************************************************************************************************
***
***
Local oNFeUtil  := TVoNFeUtil2g():New( USERINFO_UF , 1, Alltrim(aGeralIni[187]),,,,aGeralIni[188],.t.,,LocalDBF+"\SAC")
Local aRet := oNFeUtil:BuscaNFeDestinadas()
Local aFont[2], oDlg, aBmp[2]
Local oBrowse, cCmd, aRet2
Local oNfe := GetGerNfe()
Local cChave := Space(44)

	FOR k=1 TO Len( aRet )
		aRet[ k, 1 ] := .F.
		aRet[ k, 8 ] := StoD( StrTran( aRet[k,8], '-','' ) )
		aRet[ k, 10] := Val( aRet[k,10] )
		aRet[ k, 14] := .F.
		cCmd := "Select arnomfor FROM pg02 WHERE arcgcfor = '"+Alltrim( aRet[k,4] )+"' LIMIT 1"
		aRet2 := Array_Sql( cCmd,,,.f. )
		IF !Empty( aRet2 )
			aRet[ k, 6 ] := aRet2[1,1]
			cCmd := "Select sr_recno FROM ent1nota WHERE arnr_nfe = '"+Alltrim( aRet[k,3] )+"' LIMIT 1"
			aRet2 := Array_Sql( cCmd,,,.f. )
			IF !Empty( aRet2 )
				aRet[ k, 14 ] := .T.
			EndIf
		EndIf
	Next

	DEFINE FONT aFont[1] NAME "Times New Roman" SIZE NIL,-12
	DEFINE FONT aFont[2] NAME "Times New Roman" SIZE NIL,-26 BOLD ITALIC

	DEFINE DIALOG oDlg RESOURCE "BUSCA_NFE_DESTINADA" FONT aFont[1]

	oTT := TitleEx():Redefine( 4020, , "BUSCA NFe DESTINADAS",CLR_WHITE, aFont[2], oDlg, 1 )

	REDEFINE XBROWSE oBrowse ARRAY aRet AUTOSORT;
				OF oDlg;
				ID 5000

	ADD COLUMN oCol0 TO oBrowse BITMAP BMPDATA { || IIF( aRet[ oBrowse:nArrayAt,14], 2, 1 ) } IN "CHEKON","CHEKOFF";
		HEADER " ";
		SIZE 20

	oCol0:nFooterType      := AGGR_COUNT
	oCol0:bLDClickData := {|| MsgRun("Conectando com o Portal da NFe","Aguarde...", ;
																	{|| oNfe:Consulta( aRet[ oBrowse:nArrayAt,03] ) } ), ;
																	IIf( File( oNfe:cFileNameNfe ),;
																	( lLimpaDir := .T., MsgInfo("Consulta Executada com sucesso, arquivo salvo em:"+CRLF+oNfe:GetFileName()+" !","TGerNfe") ),;
																	MsgStop("Falha na consulta !","TGerNfe") )  }

	ADD COLUMN TO oBrowse DATA ARRAY ELM 3 ;
		HEADER "Chave NFe" ;
		SIZE 270 ;
		ON EDIT { |o,x,n| x := n };
		ALIGN LEFT

	ADD COLUMN TO oBrowse DATA ARRAY ELM 8 ;
		HEADER "Emissão" ;
		SIZE 80 ;
		ALIGN CENTER

	ADD COLUMN TO oBrowse DATA ARRAY ELM 6 ;
		HEADER "Fornecedor" ;
		SIZE 300 ;
		ALIGN LEFT

	ADD COLUMN TO oBrowse DATA ARRAY ELM 10 ;
		HEADER "Valor R$" ;
		SIZE 100 ;
		PICTURE "@E 999,999.99";
		ALIGN RIGHT

	oBrowse:MakeTotals()
	CorListBox( oBrowse )
	oBrowse:lFooter             := .t.
	oBrowse:nStretchCol         := STRETCHCOL_LAST

	REDEFINE BTNBMP aBmp[1] LEFT RESOURCE "IMPRESS"  2007  ID 4001 OF oDlg ACTION ( lSai := .F., aBmp[1]:Disable(), oDlg:Update(), aBmp[2]:bAction := {|| lSai := .T. },;
	Imprime_Destinadas( aRet ), oDlg:SetFocus(), aBmp[1]:Enable(), aBmp[2]:bAction := {|| dBCloseAll(), oDlg:End() } ) Update

	REDEFINE BTNBMP aBmp[2] LEFT RESOURCE "BITMAP_3" 2007 ID 4002 OF oDlg ACTION ( oDlg:End() ) Update
	aBmp[2]:bClrGrad := GRAD_BTNSAI

	oDlg:lHelpIcon := .F.

	ACTIVATE DIALOG oDlg CENTERED

	RELEASE BTNBMP aBmp[1], aBmp[2]
	RELEASE FONT aFont[1], aFont[2]

Return

Static Function Imprime_Destinadas( aDados )
************************************************************************************************************
***
***
Local aRet := {}
Local k

For k=1 TO Len( aDados )
// 1 -> Fornecedor
// 2 -> Dt. Emissão
// 3 -> Valor da Nota
// 4 -> Se dado entrada
// 5 -> Chave NFe

	AADD( aRet, { aDados[k, 6], aDados[k, 8], aDados[k, 10], aDados[k, 14], aDados[k, 1] } )
Next

Impress_FastReport( "NotasDestinadas", "Notas Destinadas" ,,,, { "NOTAS_DESTI","FORNECEDOR;EMISSAO;VALOR;FOI_ENTRADA;CHAVE_NFE", aRet } )

//xBrowse( aDados )
Return

mole-mole

Espero ter ajudado.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...