Ir para conteúdo
  • Cadastre-se

dev botao

ACBrReinf - Fontes


Ver Solução Respondido por Renato Rubinho,
  • Este tópico foi criado há 2498 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Bom dia Pessoal,

Segue em anexo os fontes do ACBrReinf.

Eventos Implementados e testados:


1. R-1000 - Informações do Empregador/Contribuinte
2. R-1070 - Tabela de Processos Administrativos/Judiciais
3. R-2010 – Retenção Contribuição Previdenciária - Serviços Tomados
4. R-2020 – Retenção Contribuição Previdenciária - Serviços Prestados
7. R-2098 – Reabertura dos Eventos Periódicos
8. R-2099 – Fechamento dos Eventos Periódicos
9. R-9000 – Exclusão de Eventos

Faltando os eventos: (Não fiz por que o negocio não tem demanda para esse tipo de evento. mais caso alguém precise da pra fazer.)

  5. R-2030 – Recursos Recebidos por Associação Desportiva 
  6. R-2040 – Recursos Repassados para Associação Desportiva

 

-> Units do core do ACBr modificadas:

ACBrDFeUtil.pas

- Incluido no SignatureElement as tags necessárias para assinatura SHA256.

     function SignatureElement(const URI: String; AddX509Data: Boolean; IdSignature: String = ''; Asha256: Boolean = False): String;

ACBrDFeSSL.pas

- Criação de uma propriedade "property SSLDgst: TSSLDgst read FSSLDgst write FSSLDgst;" na TDFeSSL para informar o tipo de "Method Algorithm" a ser usado. Por padrão será SHA1.

- no metodo TDFeSSLXmlSignClass.AdicionarSignatureElement na chamada do SignatureElement e passado a propriedade "FpDFeSSL.FSSLDgst" do tipo a ser usado( ver Abaixo)

  Result := copy(ConteudoXML, 1, I - 1) + SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.FSSLDgst = dgstSHA256) + TagEndDocElement;

ACBrDFeXsXmlSec.pas

- Incluido uma diretiva "REINF" para seleção do DTD para ser usado no REINF. O Projeto do REINF não segui o padrão do Id. (Isso pode mudar em versões futuras do REINF) .

  {$IFDEF REINF}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& id ID #IMPLIED>]>';
  {$ELSE}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& Id ID #IMPLIED>]>';
  {$ENDIF}

Espero que ajude e traga mais força ao projeto.

obs.: Tentei seguir ao máximo a implementação atual do ACBR (Delphi > 2009). porem não testei em FPC.

obs.: Para listas usei Generics haja vista que estou seguindo Delphi 2010 ou superior.

obs.: Antes que perguntem: Vou publicar os fontes do eSocial em outro tópico.

No aguardo da avaliação @Juliomar Marchetti  @EMBarbosa

Abraços.

ACBrReinf.zip

Editado por Leivio Fontenele
  • Curtir 1
  • Obrigado 4
  • 3 semanas depois ...
  • Moderadores
Postado
Em 25/08/2017 at 10:13, Leivio Fontenele disse:

Bom dia Pessoal,

Segue em anexo os fontes do ACBrReinf.

Eventos Implementados e testados:


1. R-1000 - Informações do Empregador/Contribuinte
2. R-1070 - Tabela de Processos Administrativos/Judiciais
3. R-2010 – Retenção Contribuição Previdenciária - Serviços Tomados
4. R-2020 – Retenção Contribuição Previdenciária - Serviços Prestados
7. R-2098 – Reabertura dos Eventos Periódicos
8. R-2099 – Fechamento dos Eventos Periódicos
9. R-9000 – Exclusão de Eventos

Faltando os eventos: (Não fiz por que o negocio não tem demanda para esse tipo de evento. mais caso alguém precise da pra fazer.)

  5. R-2030 – Recursos Recebidos por Associação Desportiva 
  6. R-2040 – Recursos Repassados para Associação Desportiva

 

-> Units do core do ACBr modificadas:

ACBrDFeUtil.pas

- Incluido no SignatureElement as tags necessárias para assinatura SHA256.

     function SignatureElement(const URI: String; AddX509Data: Boolean; IdSignature: String = ''; Asha256: Boolean = False): String;

ACBrDFeSSL.pas

- Criação de uma propriedade "property SSLDgst: TSSLDgst read FSSLDgst write FSSLDgst;" na TDFeSSL para informar o tipo de "Method Algorithm" a ser usado. Por padrão será SHA1.

- no metodo TDFeSSLXmlSignClass.AdicionarSignatureElement na chamada do SignatureElement e passado a propriedade "FpDFeSSL.FSSLDgst" do tipo a ser usado( ver Abaixo)

  Result := copy(ConteudoXML, 1, I - 1) + SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.FSSLDgst = dgstSHA256) + TagEndDocElement;

ACBrDFeXsXmlSec.pas

- Incluido uma diretiva "REINF" para seleção do DTD para ser usado no REINF. O Projeto do REINF não segui o padrão do Id. (Isso pode mudar em versões futuras do REINF) .

  {$IFDEF REINF}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& id ID #IMPLIED>]>';
  {$ELSE}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& Id ID #IMPLIED>]>';
  {$ENDIF}

Espero que ajude e traga mais força ao projeto.

obs.: Tentei seguir ao máximo a implementação atual do ACBR (Delphi > 2009). porem não testei em FPC.

obs.: Para listas usei Generics haja vista que estou seguindo Delphi 2010 ou superior.

obs.: Antes que perguntem: Vou publicar os fontes do eSocial em outro tópico.

No aguardo da avaliação @Juliomar Marchetti  @EMBarbosa

Abraços.

ACBrReinf.zip

Bom dia

Seu código é compatível com o Delphi 7?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Boa tarde Leivio Fontenele,

Neste exemplo do ACBrReinf você conseguiu transmitir algum evento ? Estou desenvolvendo para o Delphi 2010 e em paralelo em .NET mas meus testes sempre retonar <descricao>Versão do lote inválida. Deve ser utilizada a versão 1.01.01.</descricao>

Você passou por isso ?

Postado
22 horas atrás, Luciano O M disse:

Boa tarde Leivio Fontenele,

Neste exemplo do ACBrReinf você conseguiu transmitir algum evento ? Estou desenvolvendo para o Delphi 2010 e em paralelo em .NET mas meus testes sempre retonar <descricao>Versão do lote inválida. Deve ser utilizada a versão 1.01.01.</descricao>

Você passou por isso ?

Sim, todos os eventos especificados acima foram transmitidos sem problemas.

Esse seu erro deve ser a especificação na mensagem SOAP.  "<Reinf xmlns="http://www.reinf.esocial.gov.br/schemas/envioLoteEventos/v1_01_01">"

 

Segue em anexo uma msg de envio valida para comparação.

E_Reinf_Soap-175429_9.xml

Em 11/09/2017 at 09:52, Juliomar Marchetti disse:

Bom dia

Seu código é compatível com o Delphi 7?

Não é compatível com Delphi 7. Porque uso Generics "TObjectList<T>" para coleção de objetos. Porem para se torna compatível as modificações não são tão grandes.

  • Fundadores
Postado

Não podemos aceitar... sem a compatibilidade com o D7... isso quebraria a compilação do ACBr para muita gente, que atualmente usa o Projeto...

Acho que o código pode ser ajustado para TObjectList, ou TCollection. assim como nos demais componentes do ACBr..

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • 2 semanas depois ...
Postado

Parabéns a todos ! 

Testei com D7 , parabéns ao pessoal que desenvolveu ficou show, (pena que tive que fazer aqui em java) enviei o S1000 e peguei resposta com esse exemplo do @Leivio Fontenele, ficou legal... vamos ver se agora com mais tempo e com as coisas já encaminhadas eu consigo ajudar em alguma coisa ... 

 

 

 

  • 2 semanas depois ...
Postado
Em 22/09/2017 at 17:05, JOAO MARCOS Rueda disse:

Parabéns a todos ! 

Testei com D7 , parabéns ao pessoal que desenvolveu ficou show, (pena que tive que fazer aqui em java) enviei o S1000 e peguei resposta com esse exemplo do @Leivio Fontenele, ficou legal... vamos ver se agora com mais tempo e com as coisas já encaminhadas eu consigo ajudar em alguma coisa ... 

 

 

 

 

Em 26/09/2017 at 09:22, Osman Filho disse:

Não Estou conseguindo rodar no Delphi XE2, Faltando uma função ISO8601ToDate não tem em System.DateUtils

Também não consegui compilar o exemplo do Leivio no delphiXE2, então eu comentei a linha e depois em outra linha eu tirei a função ISO8601ToDate , desta forma não deu mais erro.

//        Evento.dadosRecepcaoEvento.dhProcessamento := ISO8601ToDate(Reader.rCampo(tcStr, 'dhProcessamento',''));
        Evento.dadosRecepcaoEvento.dhProcessamento := Reader.rCampo(tcStr, 'dhProcessamento','');
 

  • Membros Pro
Postado

Pessoal voces estao de parabens , ja tem uma previa data de quando estara para baixar no trunk ?

 

Jeferson

 

 

  • Membros Pro
Postado

eu iria comprar o componente do tecnospeed , mas apos essa otima informacao vou gastar esse dinheiro pagando o sac mensalmente.

O q achei legal do componente deles e a parte de auditoria que antes de enviar pra sefaz faz analise dos codigos st icms ipi pis e cofins

 

Jeferson

Postado
Em 25/08/2017 at 10:13, Leivio Fontenele disse:

Bom dia Pessoal,

Segue em anexo os fontes do ACBrReinf.

Eventos Implementados e testados:


1. R-1000 - Informações do Empregador/Contribuinte
2. R-1070 - Tabela de Processos Administrativos/Judiciais
3. R-2010 – Retenção Contribuição Previdenciária - Serviços Tomados
4. R-2020 – Retenção Contribuição Previdenciária - Serviços Prestados
7. R-2098 – Reabertura dos Eventos Periódicos
8. R-2099 – Fechamento dos Eventos Periódicos
9. R-9000 – Exclusão de Eventos

Faltando os eventos: (Não fiz por que o negocio não tem demanda para esse tipo de evento. mais caso alguém precise da pra fazer.)

  5. R-2030 – Recursos Recebidos por Associação Desportiva 
  6. R-2040 – Recursos Repassados para Associação Desportiva

 

-> Units do core do ACBr modificadas:

ACBrDFeUtil.pas

- Incluido no SignatureElement as tags necessárias para assinatura SHA256.

     function SignatureElement(const URI: String; AddX509Data: Boolean; IdSignature: String = ''; Asha256: Boolean = False): String;

ACBrDFeSSL.pas

- Criação de uma propriedade "property SSLDgst: TSSLDgst read FSSLDgst write FSSLDgst;" na TDFeSSL para informar o tipo de "Method Algorithm" a ser usado. Por padrão será SHA1.

- no metodo TDFeSSLXmlSignClass.AdicionarSignatureElement na chamada do SignatureElement e passado a propriedade "FpDFeSSL.FSSLDgst" do tipo a ser usado( ver Abaixo)

  Result := copy(ConteudoXML, 1, I - 1) + SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.FSSLDgst = dgstSHA256) + TagEndDocElement;

ACBrDFeXsXmlSec.pas

- Incluido uma diretiva "REINF" para seleção do DTD para ser usado no REINF. O Projeto do REINF não segui o padrão do Id. (Isso pode mudar em versões futuras do REINF) .

  {$IFDEF REINF}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& id ID #IMPLIED>]>';
  {$ELSE}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& Id ID #IMPLIED>]>';
  {$ENDIF}

Espero que ajude e traga mais força ao projeto.

obs.: Tentei seguir ao máximo a implementação atual do ACBR (Delphi > 2009). porem não testei em FPC.

obs.: Para listas usei Generics haja vista que estou seguindo Delphi 2010 ou superior.

obs.: Antes que perguntem: Vou publicar os fontes do eSocial em outro tópico.

No aguardo da avaliação @Juliomar Marchetti  @EMBarbosa

Abraços.

ACBrReinf.zip

Olá Leivio,

Gostaria de saber como está o projeto ACBR REINF.

Você está mexendo nos fontes ainda?

Tem algo que eu poderia ajudar?

Estou  com pressa para ter o componente funcionando.

Obrigado.

  • 2 semanas depois ...
  • Consultores
Postado

Boa tarde @Leivio Fontenele e @Juliomar Marchetti,

Compatibilizei o fonte com o Delphi 7 para iniciar o desenvolvimento e testes aqui no sistema.
Falta testar a transmissão porque estou sem certificado no momento.

1. Mantidos os códigos originais utilizando {$IFDEF COMPILER14_UP};

2. Criadas classes com TObjectList, no padrão do ACBr, para suprir as situações das listas com Generics;

3. No ACBrReinfWebServices, não encontrei alternativa ainda para o ISO8601ToDate. Para o UTF8ToString, utilizei o UTF8ToAnsi;
 

Abraççç,

ACBrReinfD7UP.rar

  • Curtir 2
  • Este tópico foi criado há 2498 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.