Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3537 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores
Postado

Falae Galera...

Fiz umas modificações no projeto do ítalo, para consumir os webservices de eventos, que esta no Branches e estou solicitando voluntários para testes.

Os arquivos fontes alterados já estão no TRUNK do componente (revisão 3728)

Fiz o teste com CCe e Cancelamento com OpenSSL e esta funcionando normalmente.

Manifestação do destinatário precisa testar.

O DEMO do componente foi alterado para exemplificar a utilização deste novo processo de consumo de EVENTOS.

No DEMO do Componente tem a pasta SCHEMAS atualizada com os schemas mais recentes que deverá ser atualizada nas aplicações

Vejam como Fica para consumir os webservices de CCe e Cancelamento por EVENTOS...

AVISO MUITO IMPORTANTE:

Os webservices antigos de Cancelamento e Carta de Correção serão mantidos para efeito de compatibilidade. Mas é provável que os mesmos sejam eliminados do componente no futuro. Assim a única maneira de cancelar uma NFe e enviar uma CCe será adaptando os códigos como segue:

Carta de Correção:


  ACBrNFe1.EnvEvento.EnvEventoNFe.Evento.Clear;

  ACBrNFe1.EnvEvento.EnvEventoNFe.idLote := StrToInt(idLote) ;

  with ACBrNFe1.Evento.Eventos.Evento.Add do

   begin

     infEvento.chNFe := Chave; //se carregar o XML antes, não precisa especificar este campo

     infEvento.CNPJ   := CNPJ; //se carregar o XML antes, não precisa especificar este campo

     infEvento.dhEvento := now;

     infEvento.tpEvento := teCCe;

     infEvento.nSeqEvento := StrToInt(nSeqEvento); //se não especificar será 1

     infEvento.detEvento.xCorrecao := Correcao;

   end;

  ACBrNFe1.EnviarEventoNFe(StrToInt(idLote));

Cancelamento:

  ACBrNFe1.EnvEvento.EnvEventoNFe.Evento.Clear;

  ACBrNFe1EnvEvento.EnvEventoNFe.idLote := StrToInt(idLote) ;

  with ACBrNFe1.EnvEvento.EnvEventoNFe.Evento.Add do

   begin

     infEvento.chNFe := Chave; //se carregar o XML antes, não precisa especificar este campo

     infEvento.CNPJ   := CNPJ; //se carregar o XML antes, não precisa especificar este campo

     infEvento.dhEvento := now;

     infEvento.tpEvento := teCancelamento;

     infEvento.nSeqEvento := StrToInt(nSeqEvento); //se não especificar será 1

     infEvento.detEvento.xJust := Justificativa;

     infEvento.detEvento.nProt := nProtocolo; //Protocolo de Autorização da Nfe que esta desejando cancelar

                                                             //se carregar o XML Autorizado antes, não precisa especificar este campo

   end;

  ACBrNFe1.EnviarEventoNFe(StrToInt(idLote));

Para consultar os eventos, basta realizar a consulta da NFe e Ler as propriedades da mesma. Exemplo Após o Envio do evento:

      cStat := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;

      tpAmb := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.tpAmb;

      lStr := String(AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);

      protCanc := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;

      dhRectoCanc := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;

      Chave := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe;

      lXMLCanc := AcbrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML;

Exemplo na Consulta da NFe:

        if loACBrNFe.WebServices.Consulta.cStat <> 0 then

        begin

          cStat := loACBrNFe.WebServices.Consulta.cStat;

          lSTR := String(loACBrNFe.WebServices.Consulta.Msg);

          nProt := loACBrNFe.WebServices.Consulta.protNFe.nProt;

          dhRecto := loACBrNFe.WebServices.Consulta.protNFe.dhRecbto;

          nProtCanc := loACBrNFe.WebServices.Consulta.retCancNFe.nProt;

          dhRectoCanc := loACBrNFe.WebServices.Consulta.retCancNFe.dhRecbto;

          if trim(nProtCanc)='' then

          begin

            for I := 0 to loACBrNFe.WebServices.Consulta.procEventoNFe.Count-1 do

            begin

              if loACBrNFe.WebServices.Consulta.procEventoNFe.Items[i].RetEventoNFe.InfEvento.tpEvento = teCancelamento then

              begin

                if loACBrNFe.WebServices.Consulta.procEventoNFe.Items[i].RetEventoNFe.retEvento.Count > 0 then

                begin

                  nProtCanc := loACBrNFe.WebServices.Consulta.procEventoNFe.Items[i].RetEventoNFe.retEvento.Items[0].RetInfEvento.nProt;

                  dhRectoCanc := loACBrNFe.WebServices.Consulta.procEventoNFe.Items[i].RetEventoNFe.retEvento.Items[0].RetInfEvento.dhRegEvento;

                end;

              end;

            end;

          end;

          Chave := loACBrNFe.WebServices.Consulta.protNFe.chNFe;

        end;

A propriedade loACBrNFe.WebServices.Consulta.procEventoNFe é uma lista com todos os eventos associados a NFe.

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

  • Moderadores
Postado

Valeu...

Lembrando que o Retorno se lê +/- assim:


      cStat := AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;

      tpAmb := AcbrNFe1.WebServices.Eventos.EventoRetorno.tpAmb;

      lStr := String(AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);

      protCanc := AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;

      dhRectoCanc := AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;

      Chave := AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe;

      lXMLCanc := AcbrNFe1.WebServices.Eventos.EventoRetorno.retEvento.Items[0].RetInfEvento.XML;

[]´s

João Henrique

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

  • Moderadores
Postado

As mudanças de 01/07 é sobre a consulta que já esta disponivel no componente.

Basta atualizar o componente.

Essas mudanças que eu postei é para Unificar num unico lugar as chamadas ao webservice de eventos e para atender a obrigatoriedade do cancelamento por eventos que deve ser implementado nos sistemas até 01/12/2012.

E começamos a atender tb a questão da Manifestação do Destinatário.

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

  • Moderadores
Postado

REVISÃO 1: Foi acrescentado a leitura dos eventos quando realizar a consulta da NFe.

Novos fontes para testes esta no primeiro Post

[]´s

Revisão 1 passou nos meus testes..

Grato

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado

REVISÃO 1: Foi acrescentado a leitura dos eventos quando realizar a consulta da NFe.

Novos fontes para testes esta no primeiro Post

[]´s

Uso Delphi 7 com Capicom.

Para fazer um teste geral, eu desinstalei por completo o meu componente, deletei os bpl's, deletei a pasta ACBr, baixei tudo via SVN e substituí as units originais pelas que você postou. Instalou perfeitamente após três pequenas alterações bobas, porém ncessárias na unit 'ACBrNFeUtil.pas':

1.) Na linha 1296 faltava um ponto-e-vírgula;

2.) Na linha 1588 alterei a linha

Tipo := NotaUtil.IdentificaTipoSchema(AStr,I);
Para:
Tipo := NotaUtil.IdentificaTipoSchema(XML,I);
3.) Na linha 2008, eu comentei
 //      tkUString,

porque a minha unit 'C:\Arquivos de programas\Borland\Delphi7\Source\rtl\common\TypInfo.pas' não contém este Type e ao invés de inserí-lo, preferi comentar a linha que fazia referência à ele.

Depois verifique se estas alterações são corretas mesmo, por favor. Após eu ter feito estas alterações e instalado novamente o componente com as suas units, consegui emitir Carta de Correção e fazer cancelamento de notas fiscais normalmente.

Por enquanto é isso. Obrigado pelo esforço e pela competência. Parabéns.

Peterson de Cerqueira Matos
[email protected]
Vivo: (11) 97197-1474 / Oi: (11) 98059-4055

  • Consultores
Postado

Boa tarde João Henrique,

A sua implementação com relação ao envio e retorno de Eventos da NFe foram baseados nas implementações que fiz e disponibilizei no branches em abril?

Por favor não estou cobrando nada de você é apenas uma pergunta.

A minha intensão foi implementar e disponibilizar para os demais poderem pegar e realizar os devidos testes e realizar as correções.

E quando estiver 100% disponibilizar como código oficial.

Conte comigo se precisar de ajuda na implementação.

[]s

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Moderadores
Postado

Ola Ítalo....

Na verdade eu nao tinha visto o seu código, acho que como estava no Branches nem me atentei nesse detalhe.

Depois de fazer essas mudanças que eu vi suas modificações que na verdade são bem parecidas com a minha...

Infelizmente fiz uma coisa que ja estava pronta...

Bom... se a sua versão esta mais madura podemos juntar oq a minha faz a a mais (que é ler o retorno da consulta) na sua.

Pena não ter visto antes.

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Postado

Só para registro: já estou enviando CCe em produção com os códigos disponibilizados pelo Italo nos branches.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

  • Moderadores
Postado

Olá Markapollo...

Na verdade eu imagino que o Italo usou a mesma base que eu para os códigos dele, que era o WebService CartaCorrecao que já estava funcionando.

E então só alteramos e criamos as units de eventos... repare que os projetos estão beeemm semelhantes. A principal diferença é que eu usei Enumerators para identificar os eventos.

Se o Italo concordar irei pegar o projeto dele e irei implementar os enumerators (pois na minha opinião fica mais facil a utilização pois o programador nao precisa saber os numeros do evento) e a leitura do retorno. Dará mais trabalho mas imagino ser o correto pois o projeto dele já estava pronto a muito tempo no Branches e foi falha minha nao ter verificado isso antes de criar um novo do zero.

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Postado

Ao que me lembro, foi justamente o que o Ítalo fez. IMHO, seria uma boa fazer um merge dos dois códigos, visto que também prefiro trabalhar com Enumerators.

Abraços.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

  • Moderadores
Postado

Ao que me lembro, foi justamente o que o Ítalo fez. IMHO, seria uma boa fazer um merge dos dois códigos, visto que também prefiro trabalhar com Enumerators.

Abraços.

Por curiosidade você baixou o código e fez testes ? eu não tive acesso ao branches e gostei da solucao do João Henrique.

Abraços

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado

sim, fiz vários testes em homologação. Inclusive, já estou fazendo, a partir deste código, o cancelamento.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

  • Consultores
Postado

Bom dia Atilio,

A Manifestação do Destinatário, a Carta de Correção e o Cancelamento por evento, são todos eventos atrelados a NFe.

Portanto a nova rotina que esta sendo implementada vai contemplar os 3.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Este tópico foi criado há 3537 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.