Jump to content
Fivewin Brasil

Cancelamento de NFe.


Valdir

Recommended Posts

Boas...

Alguém está ficando louco e acredito que não seja eu... pelo menos pro enquanto.

Vejam que absurdo este retorno da SEFAZ-SP:

- Um cliente emitiu uma NFe de Vendas ontem por volta das  5:30 hs. Esta Nfe foi autorizada e Recibo registrado como "2018-07-23T15:27:12-3:00".

Hoje ao tentar Cancelar essa mesma NFe, está retornando: "Rejeição 577 - A data do Evento não pode ser maior que a data de emissão..."

E para piorar um pouco mais, após algumas tentativas, começou a retornar: "Consumo Indevido..."

Parece piada, más infelizmente não é.

 

 

 

Link to comment
Share on other sites

 

Tá estranho... tá estranho... aqui não temos reportagem de problemas com cancelamentos. Un xeyrooo no kangotyyy.... kkkkkkkkkkkkkkkkkk

Tais usando a rotina modificada pelo master Gilmer Tavares?

Obrigado à todos pelas respostas.

Concordo contigo prezado amigo... Vamos aos fatos:

1º - O Cliente emite e autoriza a NFe com data de ontem "23-07-2018T15:27-3:00"

2º - Hoje, ao tentar o Cancelamento pelo primeira vez, é retornado  "Rejeição 577 - A data do Evento não pode ser maior que a data de emissão..."

3º - O Cliente corrige a Data e do Computador e retransmite o Pedido de Cancelamento.

4º - Novamente e por várias vezes é retornado "Rejeição 577 - A data do Evento não pode ser maior que a data de emissão..."

5º - Após várias tentativas do cliente, começa a retornar "Consumo Indevido..."

Após checagem das informações através da MsgDados da VoNfeUtil, é confirmado que os parâmetros estão corretos e por isso, não deveria retornar a rejeição 577

Abrs.

Link to comment
Share on other sites

 

A Flexdocs tem o cancelamento por evento

http://www.flexdocs.com.br/guianfe/WS.canc.cancelaEvento.html

este permite passar a diferença de fuso, quando não enviado ela passa o padrão (windows).

 

 

 

 

Bom Dia...

Gilmer, obrigado pela resposta, porém repare que já uso a função CancelaEvento da FlexDocs.

//Cancela Nfe
Method CancelaNF(ChaveNFe, nroProtocolo, Justificativa,dhEvento,cTo,cBcc,cSubject,aFieldBody,cBody,lBodyHtml) Class TVoNFeUtil2G
   local nStat:=0
   local msgRetWS:=""
   Local mensagem := ""
   Local msgDados := ""
   Local cProtocoloCanc:=""
   Local dProtocoloCanc:=""

   Default ChaveNfe:=""
   Default Justificativa:=""

   Default nroprotocolo := ""
   Default dhevento:=""
   Justificativa:=Alltrim(Justificativa)
   ::Limpa()
   If ::CertificadoSelecionado()
      If ::ConsultaStatus()
         Try
         ::cXmlProtocolo:=::oNFEUtil:CancelaNFEvento(::SiglaWS,::Ambiente,::cCertificado,"4.00",@msgDados,@msgRetWS,;
                        @nStat, @mensagem,ChaveNFe, nroProtocolo,Justificativa,dhevento,@cProtocoloCanc,;
                        @dProtocoloCanc,::Proxy,::Usuario,::Senha,::Licenca)

         Catch
            ? "Tratar erro"
         End Try


         If nStat!=135.and.nStat!=151.and.nStat!=155
            If ::lMensagem
                     #IFDEF _DOS_
                        Alert( hb_ansitooem( Mensagem+"-"+Procname() ) )
                     #ELSE
                        MsgStop( Mensagem+CRLF+ProcName() , CAPTION_MSG )
                     #ENDIF
                  Endif
                  // Tratar erro
         Endif

         ::aUltStatus:={msgDados, msgRetWS}


         ::cStsNFe     := Alltrim(Str(nStat))
         ::cStsNFeMsg  := mensagem
         ::lAutorizada := nStat==135.or.nStat==151.or.nStat==155
         ::Protocolo   := cProtocoloCanc
         ::Recebimento := dProtocoloCanc

         If ::lAutorizada
            If ::lSalvaXmlAutomatico
               ::cChaveNfe:=ChaveNfe
               If !::SalvaXml(::cChaveNfe+"-can.xml",::cXmlProtocolo,3)

                  ::Geralog("Não foi possível salvar XML de cancelamento:"+::cChaveNfe+CRLF+::cXml)
                  #IFDEF _DOS_
                     Alert( hb_ansitooem( "Não foi possível salvar XML de cancelamento:"+::cChaveNfe+"-"+Procname() ) )
                  #ELSE
                     MsgStop( "Não foi possível salvar XML de cancelamento:"+::cChaveNfe+"-"+CRLF+ProcName() , CAPTION_MSG)
                  #ENDIF
               Endif
            Endif
                If !Empty(::cFromEmail).and.!Empty(cTo)
                        cBody:=::PreparaEmail(If(Empty(cBody),::cEmailCancela,cBody),::cXmlProtocolo,aFieldBody,::ReadXml(::cPathNFe+::cSubPastaProtocolos+::cChaveNfe+"-nfe.xml"))
                        ::EnviaEmail(cTo,cBcc,cSubject,cBody,{::cPathNFe+::cSubPastaProtocolos+::cChaveNfe+"-can.xml"},lBodyHtml,aFieldBody)
                Endif
        Endif

      Endif
               // Tratar erro
   Endif

Return( ::lAutorizada )

Ou não seria isso ?

Abração.

 

Link to comment
Share on other sites

Fazes assim?

      IF VAL(cTpAmb) = 1  // CONFORME O GILMER P/O CLIENTE E .F. P/RETORNOS
         oNFEUtil:=tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),cCertificado,wProxy,wUsuario,wSenha,cLicenca,.F.,lNfeScan)
      ELSE // CONFORME O GILMER EM AMBIENTE DE TESTES = .T.
         oNFEUtil:=tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),cCertificado,wProxy,wUsuario,wSenha,cLicenca,.T.,lNfeScan)
      ENDIF


 

Link to comment
Share on other sites

 

Fazes assim?

 


      IF VAL(cTpAmb) = 1  // CONFORME O GILMER P/O CLIENTE E .F. P/RETORNOS
         oNFEUtil:=tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),cCertificado,wProxy,wUsuario,wSenha,cLicenca,.F.,lNfeScan)
      ELSE // CONFORME O GILMER EM AMBIENTE DE TESTES = .T.
         oNFEUtil:=tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),cCertificado,wProxy,wUsuario,wSenha,cLicenca,.T.,lNfeScan)
      ENDIF


 

Kapi, Obrigado pela resposta.

A..

::Ambiente

Faz exatamente a mesma coisa. 

Abrs.

Link to comment
Share on other sites

Tb estou com problema no cancelamento no meu caso vem o erro:

6158 - Erro: O parâmentro dhEvento é invalida[cadeia de caracteres não reconhecida como um datetime válido]

tipo fiz um teste aqui, para ver o retorno de dhEvento

 Try
 ::cXmlProtocolo:=::oNFEUtil:CancelaNFEvento(::SiglaWS,::Ambiente,::cCertificado,"4.00",@msgDados,@msgRetWS,;
                        @nStat, @mensagem,ChaveNFe,nroProtocolo,Justificativa,dhevento,@cProtocoloCanc,;
                        @dProtocoloCanc,::Proxy,::Usuario,::Senha,::Licenca)

 ? dhevento  //:cXmlProtocolo

e no caso o retorno veio o email do cliente, olha o manual da flexdocs não teria que ter mais dois parametro ( chaveCTe, CNPJTomador )

procEvento = objCTeUtil.EnviaPrestDesacordo(siglaWS, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, cStat, msgResultado, chaveCTe, CNPJTomador, xObs, dhEvento, nProtocolo, dProtocolo, proxy, usuario, senha, licenca)

 

Link to comment
Share on other sites

 

Mostre como está o seu dhEvento e a Function TimeZone(dData)

 


	 <dhEvento>2017-05-30T14:55:32-03:00</dhEvento>
	

 

No meu caso aqui deu certo o erro estava na minha chamada

  if oNfeUtil:CancelaNF(Alltrim(cChave),Alltrim(cProtocolo),Alltrim(cJustificativa),'',_email_cliente,cUser,"Aviso Nota Fiscal Eletrônica - Cancelamento",;
 

entre o cJustificativae e email coloquei "", e la no  Methodo CancelaNF deixei o dhEnvento:=""

cancelou certinho aqui.

Link to comment
Share on other sites

   Method CancelaNF(ChaveNFe, nroProtocolo, Justificativa,dhevento,cTo,cBcc,cSubject,aFieldBody,cBody,lBodyHtml)
	Method CancelaNF(ChaveNFe, nroProtocolo, Justificativa,dhEvento,cTo,cBcc,cSubject,aFieldBody,cBody,lBodyHtml) Class TVoNFeUtil2G
	   local nStat:=0
   local msgRetWS:=""
   Local mensagem := ""
   Local msgDados := ""
   Local cProtocoloCanc:=""
   Local dProtocoloCanc:=""
   // CANCELAMENTO DE NFE POR EVENTO A PARTIR DE 2012
   Local lEvento := If(date()>=ctod("31/03/2012"),.T.,.F.)
	   Default ChaveNfe:=""
   Default Justificativa:=""
	   Default nroprotocolo := ""
   Default dhevento:=""        // dhevento default vazio
	   Justificativa:=Alltrim(Justificativa)
	   ::lEventoAtivo:=lEvento
	   ::Limpa()
	   HB_GCALL( .F. )
	   If ::CertificadoSelecionado()
	      // NOVO CANCELAMENTO, peguei da classe do GILMER: 29/11/2012
      If ::ConsultaStatus( .T. )  // alterado em 20/11/2010
	         Try
	            /*  // ERA ASSIM NA VERSAO: 3.10
            ::cXmlProtocolo:=::oNFEUtil:CancelaNF2G(::SiglaWS,::Ambiente,::cCertificado,If(::lEventoAtivo,IF(LNOVADLL4,"4.00","1.00"),::cVersaoNfe),@msgDados,@msgRetWS,;
                                                      @nStat, @mensagem,ChaveNFe,nroProtocolo,Justificativa,@cProtocoloCanc,;
                                                      @dProtocoloCanc,::Proxy,::Usuario,::Senha,::Licenca)
            */
	            ::cXmlProtocolo:=::oNFEUtil:CancelaNFEvento(::SiglaWS,::Ambiente,::cCertificado,"4.00",@msgDados,@msgRetWS,;
               @nStat, @mensagem,ChaveNFe, nroProtocolo,Justificativa,dhevento,@cProtocoloCanc,;
               @dProtocoloCanc,::Proxy,::Usuario,::Senha,::Licenca)
	         Catch
	            ? "Tratar erro linha 1370 VONFEUTIL2G - CancelaNF"
	         End Try
	         //? nStat, @nStat
	         // MANTIVE lEventoAtivo AQUI, MESMO NAO TENDO NA CLASSE DO GILMER.
         If iif(!::lEventoAtivo,( nStat!=101 .and. nStat!=151 .and. nStat!=420 ) , ( nStat!=135 .and. nStat!=151 .and. nStat!=155 .and. nStat!=420 ) )
	            If ::lMensagem
	               #IFDEF __DOS__
                  Alert( hb_ansitooem( Mensagem+"-"+Procname() ) )
               #ELSE
                  MsgStop( Mensagem+CRLF+ProcName() , CAPTION_MSG )
	                  // Cancelamento Intempestivo - NFe Aut. a + de 7 dias
                  IF nStat = 501  // Modifcado em: 10/07/2013
	                     CANC_INTEMPESTIVO_501_DATA_DA_NOTA()
	                  ELSEIF nStat = 573  // Modifcado em: 26/11/2013
	                     CANC_573_DUPLICIDADE_DE_EVENTO() // DUPLICIDADE DE EVENTO NO CANCELAMENTO
	                  ENDIF
	               #ENDIF
	            Endif
            // Tratar erro
         Endif
	         ::aUltStatus:={msgDados, msgRetWS}
	         ::cStsNFe     := Alltrim(Str(nStat))
         ::cStsNFeMsg  := mensagem
	         ::lAutorizada := iif(!::lEventoAtivo,( nStat==101.or.nStat==151.or.nStat==420 ),( nStat==135.or.nStat==151.or.nStat==155.or.nStat==420 ) )
	         ::Protocolo   := cProtocoloCanc
         ::Recebimento := dProtocoloCanc
	         If ::lAutorizada
	            If ::lSalvaXmlAutomatico
	               ::cChaveNfe:=ChaveNfe
	               If !::SalvaXml(::cChaveNfe+"-can.xml",::cXmlProtocolo,3)
	                  ::Geralog("Não foi possível salvar XML de cancelamento:"+::cChaveNfe+CRLF+::cXml)
	                  #IFDEF __DOS__
                     Alert( hb_ansitooem( "Não foi possível salvar XML de cancelamento:"+::cChaveNfe+"-"+Procname() ) )
                  #ELSE
                     MsgStop( "Não foi possível salvar XML de cancelamento:"+::cChaveNfe+"-"+CRLF+ProcName() , CAPTION_MSG)
                  #ENDIF
               Endif
	            Endif
	            If !Empty(::cFromEmail).and.!Empty(cTo)
               cBody:=::PreparaEmail(If(Empty(cBody),::cEmailCancela,cBody),::cXmlProtocolo,aFieldBody,::ReadXml(::cPathNFe+::cSubPastaProtocolos+::cChaveNfe+"-nfe.xml"))
               ::EnviaEmail(cTo,cBcc,cSubject,cBody,{::cPathNFe+::cSubPastaProtocolos+::cChaveNfe+"-can.xml"},lBodyHtml,aFieldBody)
            Endif
	         Endif
	      Endif
               // Tratar erro
   Endif
	Return( ::lAutorizada )


 

Link to comment
Share on other sites

 

A Flexdocs tem o cancelamento por evento

http://www.flexdocs.com.br/guianfe/WS.canc.cancelaEvento.html

este permite passar a diferença de fuso, quando não enviado ela passa o padrão (windows).

 

 

 

E o suporte é ótimo. Grande Flexdocs!

 

A Flexdocs tem o cancelamento por evento

http://www.flexdocs.com.br/guianfe/WS.canc.cancelaEvento.html

este permite passar a diferença de fuso, quando não enviado ela passa o padrão (windows).

 

 

 

 

 

Link to comment
Share on other sites

Fim do horário de verão

Na maioria dos equipamentos, o ajuste do fim do horário de verão é automático.

Nos casos em que o ajuste não acontecer NÃO ATRASE o relógio, a forma correta de ajustar o horário é mudar o fuso horário no Windows para -03:00 (se estiver -02:00) ou -04:00 (se estiver -03:00):

Passos para modificar o fuso horário no Windows:

1. Clique com o botão direito sobre a Data e a Hora no canto inferior direito da tela.
2. A partir da caixa de diálogo da Data e Hora clique em Alterar configurações de data e hora.
3. Na janela de propriedades de Data e Hora clique no botão Alterar fuso horário.
4. Na janela de Configurações de Fuso Horário selecione o fuso horário correto no menu Suspenso e clique em OK.

Se acontecer alguma rejeição relacionado com o horário, a causa do problema deve ser o ajuste do fim do horário de verão realizado de forma incorreta.

 

SfjkU2f.png

Link to comment
Share on other sites

Boa tarde,

Ontem dia 25/07/2018, aqui em MG um cliente enviou uma NF-e, e recebeu o número do recibo, o número do protocolo retornado pela SEFAZ/MG e autorizou a NF-e. Foi necessário cancelar a mesma e para surpresa a mesma não constava na base de dados da SEFAZ/MG e tão pouco na base de dados da SEFAZ Nacional. A ação necessária foi inutilizar o número e reemitir outra nf-e. Já ocorreu aqui também de emitir a nf-e, receber o protocolo e na hora de CANCELAR acusar  "Rejeição 577 - A data do Evento não pode ser maior que a data de emissão..." , mas eram problemas relacionados ao ambiente da  SEFAZ/MG.

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...