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