crisvam Posted February 8, 2020 Report Share Posted February 8, 2020 Colegas, bom dia. não sei se alguém tem esse problema, vou expor e se alguem tem uma solução, por favor, nos auxilie 1 - as vezes ao enviar uma nota não é possível gravar o protocolo de autorização no meu sistema 2 - Então tenho que entrar no site da sefaz e copiar para o meu sistema, funciona, mas; 3 - Será que existe uma maneira de faze isso através de uma rotina em fivewin? 4 - Por exemplo digitar a chave de acesso da nota, entrar via url, pegar o protocolo e gravar no meu sistema Agradeço a todos a atenção Quote Link to comment Share on other sites More sharing options...
rochinha Posted February 9, 2020 Report Share Posted February 9, 2020 Amiguinhos, crisvam Eu uso ACBR NFe Monitor e quando isto ocorre meus usuários fazem uma consulta de autorização que praticamente cola o protocolo na nota. Quote Link to comment Share on other sites More sharing options...
crisvam Posted February 10, 2020 Author Report Share Posted February 10, 2020 Rochinha, grato pela atenção. Os meus também fazem isso, mas reclamam de ter que entrar no site da sefaz, copiar o protocolo e colar Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 10, 2020 Report Share Posted February 10, 2020 Um PTista vai te ajudar. Porquê esse PTista, não mistura FiveWin the best, com política. REDEFINE GET aGet[1] VAR NFINICIAL ID 20 PICTURE "@K 999999" OF oDlgPesq ; UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE ; VALID !EMPTY( NFINICIAL ) .AND. NAO_PERDE_FOCO() REDEFINE GET aGet[2] VAR NFFINAL ID 21 PICTURE "@K 999999" OF oDlgPesq ; UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE ; VALID VOLTA_GET() .AND. !EMPTY( NFFINAL ) .AND. ( NFINICIAL <= NFFINAL ) REDEFINE BUTTONBMP oProcessar ID 301 OF oDlgPesq ; PROMPT OemToAnsi( "&Manuten‡Æo da Nf-e" ) ; ACTION( GERA_MANUTENCAO(), XFOCUS( aGet[1] ) ) oProcessar:cToolTip := OemToAnsi( "Manuten‡Æo das Notas Fiscais Baixe o Arquivo XML da Nfe" ) // FUNCTION GERA_MANUTENCAO() MEMVAR NFINICIAL, NFFINAL bAction = { | oMeter, oText, oDlg, lEnd | ; MANUTENCAO_NFE( oMeter, oText, oDlg, @lEnd ) } MsgMeter( bAction, "Atualizando, Aguarde! ", " Aguarde Por Favor!" ) RETURN NIL FUNCTION MANUTENCAO_NFE( oMeter, oText, oDlg, lEnd ) LOCAL WMOTIVO := "ARQUIVO *.XML MAL FORMADO NA PASTA DO PLENO" MEMVAR NFINICIAL, NFFINAL PUBLIC lNovaDll IF ! IsInternet() // MODIFIQUEI EM: 12/11/2015 - Joao MsgStop( OemToAnsi( "ATEN€ÇO USUµRIO: " ) + CRLF + ; OemToAnsi( "PERDA DE CONEXÇO COM A INTERNET... " ) + CRLF + ; OemToAnsi( "FALHA NA CONEXÇO COM A SEFAZ ESTADUAL." ) + CRLF + ; OemToAnsi( "VERIFIQUE SUA CONEXÇO DE INTERNET. " ), ; OemToAnsi( "PERDA DE CONEXÇO COM A INTERNET... " ) ) ENDIF SELECT CADNFE IF CADPARAM->TPAMB = [1] // em producao SET ORDER TO 03 ELSE SET ORDER TO 01 ENDIF SEEK NFINICIAL IF ! FOUND() MsgStop( OemToAnsi( "ATEN€ÇO USUµRIO: " ) + CRLF + ; OemToAnsi( "NOTA FISCAL INICIAL, NÇO LOCALIZADA NO " ) + CRLF + ; OemToAnsi( "BANCO DE DADOS DAS NOTAS FISCAIS DO PLENO" ) + CRLF + ; OemToAnsi( "RETORNE E DIGITE UMA NOTA FISCAL VµLIDA, " ) + CRLF + ; OemToAnsi( "OU REINDEXE OS BANCOS DE DADOS DO PLENO. " ) + CRLF + ; OemToAnsi( "TECLE <ENTER> PARA RETORNAR... " ), ; OemToAnsi( "NOTA FISCAL INICIAL, NÇO LOCALIZADA... " ) ) RETURN NIL ENDIF oMeter:nTotal := RecCount() oMeter:Refresh() oText:SetText( "Aguarde, Conectando a SEFAZ... " ) oNFEUtil := tVoNFeUtil2G():New( CADPARAM->UF, val( cTpAmb ), cCertificado, wProxy, wUsuario, wSenha, cLicenca, .T. ) oNfe := TVoNFe2G():New() wContador := 0 WHILE ! EOF() .AND. NFECOD <= NFFINAL SYSREFRESH() cChaveAcesso := ALLTRIM( CADNFE->CHAVEACES ) cFileXmlAssinado := "remessa\enviadas\" + Alltrim( CADNFE->CHAVEACES ) + "nfe.xml" cFileXmlProtocolo := "remessa\protocolos\" + Alltrim( CADNFE->CHAVEACES ) + "nfe.xml" IF FILE( cFileXmlProtocolo ) cArqProt = MemoRead( cFileXmlProtocolo ) IF AT( "<nProt>" , cArqProt ) > 0 wpos := AT( "<nProt>", cArqProt ) + 7 wProtocolo := SUBSTR( cArqProt, wPos, 15 ) IF LEN( ALLTRIM( wProtocolo ) ) = 15 WPROTODATA := CTOD( " / / " ) IF AT( "<dhRecbto>" , cArqProt ) > 0 wPosTmpIni := AT( "<dhRecbto>", cArqProt ) wPosTmpFim := AT( "</dhRecbto>", cArqProt ) wTmpDtProt := ALLTRIM( SUBS( cArqProt , wPosTmpIni + 10 , ( wPosTmpFim - (wPosTmpIni + 10 ) ) ) ) WPROTODATA := CTOD( SUBS( wTmpDtProt,9,2 ) + "/" + SUBS( wTmpDtProt,6,2 ) + "/" + SUBS( wTmpDtProt,1,4 ) ) ENDIF RLOCK() IF ( STATUS = " " .OR. STATUS = "GER" .OR. STATUS = "ENV" ) REPL STATUS WITH "APR" ENDIF REPL PROTOCOLO WITH subs( wProtocolo, 1, 15 ) // alterado em 28/10/2015 - Paulo REPL PROTODATA WITH WPROTODATA WMOTIVO := "Autorizado o Uso da NF-e. Imprima a(s) NFe(s) " + ; "Para Finalizar o Processo. O Arquivo *.Xml, Foi " + ; "Baixado Com Sucesso.." COMMIT UNLOCK SKIP FCLOSE( cArqProt ) wContador = wContador + 1 oText:SetText( "Atualizando Registro: " + ; Alltrim( STR( wContador, 6, 0 ) ) + " de: " + ; Alltrim( STR( Recc(), 6, 0 ) ) + ", Aguarde..." ) oMeter:Set( RecNo() ) LOOP ENDIF ENDIF ENDIF IF FILE( cFileXmlAssinado ) .AND. ; ( STATUS = "ENV" .OR. STATUS = "APR" .OR. STATUS = "IMP" .OR. STATUS = "CAN" ) // alterado em 13/05/2015 wContador = wContador + 1 cArq = MemoRead( cFileXmlAssinado ) wIni_Velho := '<?xml version="1.0" encoding="UTF-8"?><NFe xmlns=' IF lNovaDll3 DO CASE CASE AT( 'versao="1.10"' , cArq ) # 0 wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10"><NFe xmlns=' CASE AT( 'versao="2.00"' , cArq ) # 0 wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><NFe xmlns=' CASE AT( 'versao="3.10"' , cArq ) # 0 wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><NFe xmlns=' OTHE wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00"><NFe xmlns=' // alterado em 11/02/2018 ENDCASE ELSE wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><NFe xmlns=' ENDIF cArq := StrTran( cArq , wIni_Velho , wIni_Novo ) wPosTmpIni := AT( "<nNF>", cArq ) wPosTmpFim := AT( "</nNF>", cArq ) WNFECOD := VAL( SUBS( cArq , wPosTmpIni + 5 , ( wPosTmpFim - (wPosTmpIni + 5 ) ) ) ) wPosTmpIni := AT( "<DigestValue>", cArq ) wPosTmpFim := AT( "</DigestValue>", cArq ) WDIGVAL := SUBS( cArq , wPosTmpIni + 13 , ( wPosTmpFim - (wPosTmpIni + 13 ) ) ) nRet := oNfeUtil:ConsultaNf( cChaveAcesso, cFileXmlAssinado, .F. ) // alterado em 12/03/2015 - Paulo // 5102 // nret := 5014 // teste de erro. WPROTOCOLO := oNFeUtil:Protocolo WCHAVEACES := ALLTRIM( CADNFE->CHAVEACES ) WPROTODATA := oNFeUtil:Recebimento IF CADNFE->STATUS = "CAN" WSTATUS := "101" WMOTIVO := "Cancelamento de NF-e homologado com sucesso na Sefaz" ELSE WSTATUS = "100" WMOTIVO := "Autorizado o Uso da NF-e. Imprima a(s) NFe(s) " + ; "Para Finalizar o Processo. O Arquivo *.Xml, Foi " + ; "Baixado Com Sucesso." ENDIF IF lNovaDll3 DO CASE CASE AT( 'versao="1.10"' , cArq ) # 0 cArq = cArq + '<protNFe versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe">' CASE AT( 'versao="2.00"' , cArq ) # 0 cArq = cArq + '<protNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">' CASE AT( 'versao="3.10"' , cArq ) # 0 cArq = cArq + '<protNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">' OTHE cArq = cArq + '<protNFe versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe">' // alterado em 11/02/2018 ENDCASE ELSE cArq = cArq + '<protNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">' ENDIF cArq = cArq + '<infProt>' cArq = cArq + '<tpAmb>1</tpAmb>' cArq = cArq + '<verAplic>SP_NFE_PL_005e</verAplic>' cArq = cArq + '<chNFe>' + WCHAVEACES + '</chNFe>' cArq = cArq + '<dhRecbto>' + WPROTODATA + '</dhRecbto>' cArq = cArq + '<nProt>' + WPROTOCOLO + '</nProt>' cArq = cArq + '<digVal>' + WDIGVAL + '</digVal>' cArq = cArq + '<cStat>' + WSTATUS + '</cStat>' cArq = cArq + '<xMotivo>' + WMOTIVO + '</xMotivo>' cArq = cArq + '</infProt>' cArq = cArq + '</protNFe>' cArq = cArq + '</nfeProc>' wArq := FCREATE( cFileXmlProtocolo, 0 ) cArq = TIRA_ACENTUACAO( cArq ) wtam := len( cArq ) FWRITE( wArq , cArq , wtam ) FCLOSE( wArq ) IF CADNFE->STATUS # "CAN" .AND. ; ( nRet = 101 .OR. nRet = 151 .OR. nRet = 420 .OR. nRet = 135 .OR. nRet = 155 ) RLOCK() REPL STATUS WITH "CAN" REPL PROTOCOLO WITH subs( wProtocolo, 1, 15 ) REPL PROTODATA WITH CTOD( SUBS( WPROTODATA,9,2 ) + "/" + SUBS( WPROTODATA,6,2 ) + "/" + SUBS( WPROTODATA,1,4 ) ) COMMIT UNLOCK ELSE RLOCK() IF ( STATUS = " " .OR. STATUS = "GER" .OR. STATUS = "ENV" ) REPL STATUS WITH "APR" ENDIF REPL PROTOCOLO WITH subs( wProtocolo, 1, 15 ) // alterado em 28/10/2015 - Paulo REPL PROTODATA WITH CTOD( SUBS( WPROTODATA,9,2 ) + "/" + SUBS( WPROTODATA,6,2 ) + "/" + SUBS( WPROTODATA,1,4 ) ) COMMIT UNLOCK lConsulta := .F. oBmp4:Disable() oBmp4:Refresh() ENDIF ELSE // Mudei em: 28/10/2015 Se nao existir o .XML em \remessa\enviadas volta pra gerar MsgInfo( OemToAnsi( "ARQUIVO *.XML COM FORMATO INVµLIDO EM: " ) + CRLF + ; OemToAnsi( cDirPleno + "\REMESSA\ENVIADAS\ " ) + CRLF + ; OemToAnsi( "OU ARQUIVO: *.XML INEXISTENTE NA PASTA: " ) + CRLF + ; OemToAnsi( cDirPleno + "\REMESSA\ENVIADAS\ " ) + CRLF + ; OemToAnsi( "IMPOSSÖVEL FAZER A MANUTEN€ÇO DESTA NF-e." ) + CRLF + ; OemToAnsi( "NF-E GERADA NA SEFAZ? OU NO SVC-AN? " ) + CRLF + ; OemToAnsi( "INFORME ESTE PROBLEMA AO SUPORTE, PARA SE" ) + CRLF + ; OemToAnsi( "TENTAR ACHAR UMA SOLU€ÇO PARA O PROBLEMA." ) + CRLF + ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "ARQUIVO .XML COM PROBLEMAS NO FORMATO... " ) ) nRet := oNfeUtil:ConsultaNf( cChaveAcesso, cFileXmlAssinado, .F. ) // alterado em 12/03/2015 - Paulo // Gerou erro: 5102 - SEFAZ MINAS - ERRO DURANTE O PROCESSAMENTO FICA BLOQUEADO NA SEFAZ. IF nRet = 5014 .OR. nRet = 5102 .OR. nRet = 6214 WMOTIVO := "FAZER O DOWNLOAD DA NOTA FISCAL ELETRONICA NO PORTAL DA SEFAZ NACIONAL. ENVIE O .XML PARA O SUPORTE BOTAO: <Portal da Nf-e> OCORREU UM ERRO DURANTE O PROCESSAMENTO. Erro: 5102?" ELSE // NAO ACHOU O ARQUIVO .XML EM: \PLENO\REMESSA\ENVIADAS WMOTIVO := "FAVOR GERAR A NOTA NOVAMENTE PARA CRIAR O ARQUIVO .XML DA NOTA FISCAL NA PASTA DO PLENO, PARA SE PODER CONSULTAR O LOTE NORMALMENTE." RLOCK() REPL STATUS WITH " " // VOLTA PARA GERAR DE NOVO - Joao COMMIT UNLOCK ENDIF ENDIF SKIP oText:SetText( "Atualizando Registro: " + ; Alltrim( STR( wContador, 6, 0 ) ) + " de: " + ; Alltrim( STR( Recc(), 6, 0 ) ) + ", Aguarde..." ) oMeter:Set( RecNo() ) ENDDO IF ! EMPTY( WMOTIVO ) MsgInfo( WMOTIVO, WMOTIVO ) ENDIF RETURN NIL Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted February 11, 2020 Report Share Posted February 11, 2020 Rochinha, grato pela atenção. Os meus também fazem isso, mas reclamam de ter que entrar no site da sefaz, copiar o protocolo e colar Rochinha, grato pela atenção. Os meus também fazem isso, mas reclamam de ter que entrar no site da sefaz, copiar o protocolo e colar Mas vc tem a chave e o arquivo? pq na consulta pelo ACBR, ele é gravado no xml. Espero em breve postar algumas pesquisas e testes com as DLL's do ACBR, e isso irá facilitar esta consulta sem a necessidade de ter instalado o monitor. Quote Link to comment Share on other sites More sharing options...
crisvam Posted February 13, 2020 Author Report Share Posted February 13, 2020 Obrigado a todos, os colegas, pelas respostas, mas o que preciso é só pegar o protocolo de autorização da sefaz, com uma rotina de dentro do sistema, sem entrar manualmente no site da sefaz, digitar uma chace, dizer que não sou robô, continuar, clicar sobre o protocolo e copiar e depois colar no meu sistema. Busco uma forma de com a chave da nota pegar automaticamente o protocolo e copiar no meu arquivo tudo automaticamente Quote Link to comment Share on other sites More sharing options...
coutinho.amauri Posted February 13, 2020 Report Share Posted February 13, 2020 /******************************************************************************/ METHOD ConsultaNFe( cAmb, cChave ) CLASS hbNFe /*****************************************************************************/ LOCAL aRETORNO := HASH() LOCAL cServ := 'CONSULTAR' LOCAL cVersao := ::Ini_versaoSistema LOCAL cStatus := "" LOCAL cMotivo := "" LOCAL cProt := "" LOCAL cDataHoraAutorizada := "" aRETORNO['STATUS'] := .F. aRETORNO['MSG'] := '' aRETORNO['PROTOCOLO'] := '' aRetorno['RETORNO' ] := '' aRetorno['DATAAUTO' ] := '' IF EMPTY(cChave) aRETORNO['MSG'] := 'Favor informar a Chave' RETURN aRETORNO ENDIF IF EMPTY(cAmb) aRETORNO['MSG'] := 'Favor informar o Ambiente' RETURN aRETORNO ENDIF ::Ide_nNfe:= cChave ::cXML := '' ::cXML += '<consSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="' + cVersao + '">' ::cXML += '<tpAmb>' + cAmb + '</tpAmb>' ::cXML += '<xServ>' + cServ + '</xServ>' ::cXML += '<chNFe>' + cChave + '</chNFe>' ::cXML += '</consSitNFe>' MEMOWRIT( ::Ini_pastaXML +"\Consultas\Envio" + '\NFe_Cons' + cChave +'.xml' , ::cXML , .F.) aRETORNO := ::ComunicaWebService( 2 ) IF ! aRETORNO['STATUS'] RETURN(aRETORNO) ENDIF cStatus:= cMotivo:= cProt:= "" * le o arquivo de retorno ::XML_GetNode(aRETORNO['XML'], "cStat" , @cStatus ) ::XML_GetNode(aRETORNO['XML'], "xMotivo", @cMotivo ) ::XML_GetNode(aRETORNO['XML'], "nProt" , @cProt ) ::XML_GetNode(aRETORNO['XML'], "dhRecbto", @cDataHoraAutorizada ) IF Empty(cStatus) .OR. Empty(cMotivo) aRETORNO['MSG'] := "Erro ao obter retorno do Web Service" RETURN(aRETORNO) ENDIF * Possiveis erros: * O processamento do pedido de consulta de status de NF-e pode resultar em uma * mensagem de erro ou retornar a situação atual da NF-e consultada. * No caso de localização da NF-e retornar o cStat com os valores “100-Autorizado o Uso”, * “101-Cancelamento de NF-e Homologado” ou “110-Uso Denegado”. IF cStatus == "100" // 100-Autorizado o Uso aRETORNO['STATUS'] := .T. ELSE aRETORNO['STATUS'] := .F. ENDIF aRETORNO['PROTOCOLO']:= cProt aRETORNO['RETORNO' ]:= cStatus aRETORNO['MSG'] := cStatus +" - "+ cMotivo aRetorno['DATAAUTO' ]:= cDataHoraAutorizada RETURN(aRETORNO) Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted February 14, 2020 Report Share Posted February 14, 2020 Obrigado a todos, os colegas, pelas respostas, mas o que preciso é só pegar o protocolo de autorização da sefaz, com uma rotina de dentro do sistema, sem entrar manualmente no site da sefaz, digitar uma chace, dizer que não sou robô, continuar, clicar sobre o protocolo e copiar e depois colar no meu sistema. Busco uma forma de com a chave da nota pegar automaticamente o protocolo e copiar no meu arquivo tudo automaticamente Crisvam, boa noite. Todas alternativas foram automáticas, ou seja, vc de posse da chave no seu sistema e melhor ainda do xml, vc consegue estas informações. Exceto se vc não armazena a chave de acesso e o xml, para poder reaver estas informações. []s, []s, Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.