{******************************************************************************} { Projeto: Componentes ACBr } { Biblioteca multi plataforma de componentes Delphi para interação com equipa- } { mentos de Automação Comercial utilizados no Brasil } { } { Você pode obter a última versão desse arquivo na página do Projeto ACBr } { Componentes localizado em http://www.sourceforge.net/projects/acbr } { } { Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la } { sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela } { Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) } { qualquer versão posterior. } { } { Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM } { NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU } { ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor} { do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) } { } { Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto} { com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., } { no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. } { Você também pode obter uma copia da licença em: } { http://www.opensource.org/licenses/lgpl-license.php } { } { Daniel Simões de Almeida - daniel@djsystem.com.br - www.djsystem.com.br } { Praça Anita Costa, 34 - Tatuí - SP - 18270-410 } { } {******************************************************************************} Agradecimentos: * Administradores: - Daniel Simões de Almeida - André Ferreira de Moraes {****************************************************************************** |* ACBrDFeComum |* |* PROPÓSITO: Registro de Alterações ******************************************************************************} Símbolo : Significado [+] : Novo recurso [*] : Recurso modificado/melhorado [-] : Correção de Bug (assim esperamos) 04/03/2016 (por: DSA) -- ACBrDFeCapicom, ACBrDFeOpenSSL, ACBrDFeWebService -- [*] Ajustes para compilação após modificações em ACBrUtil [*] Modificações para compatibilização com FPC 3.0 -- ACBrDFeWebService -- [+] Adicionado o método protegido "AjustarOpcoes", para permitir que o XML gerado pelo WebService, respeite RetirarAcentos e RetirarEspacos das Opções do componente pai (TACBrDFe). Ex: AjustarOpcoes( InutNFe.Gerador.Opcoes ); 26/02/2016 (por: DSA) -- ACBrDFeSSL, ACBrDFeOpenSSL, ACBrDFeCapicom -- [+] Adicionada a propriedade "CertRazaoSocial", para retornar a "Razão Social" do Certificado [+] Adicionado o método "CalcHash", para permitir o calculo de Hashs nos seguintes modos: dgstMD2, dgstMD4, dgstMD5, dgstRMD160, dgstSHA, dgstSHA1, dgstSHA256, dgstSHA512. O resultado do Hash pode ser apresentado nos formatos: outHexa, outBase64, outBinary. - Também é possível "Assinar" o Hash gerado, com a chave RSA do Certificado (assinatura digital) CalcHash( const AStream : TStream; const Digest: TSSLDgst; const ModoSaida: TSSLHashOutput = outHexa; const Assinar: Boolean = False): AnsiString; - Há sobrecarga do método para permitir entrada de dados como: BinaryString : AnsiString e AStringList : TStringList [+] Adicionado o método: CalcHashArquivo( const NomeArquivo : String; ...), de forma analoga a "CalcHash" -- ACBrDFeCapicom -- [-] Correção nos método "Assinar", "Validar" e "VerificarAssinatura", para tratar corretamente XMLs em UTF8 com acentos. -- ACBrDFeOpenSSL -- [-] Correção nos método "Validar" e "VerificarAssinatura", para tratar corretamente XMLs em UTF8 com acentos. 24/02/2016 -- ACBrDFeWebService -- [*] modificado o metodo GetUrlWsd para virtual e assim poder sobre-escrever ele por: Juliomar Marchetti 23/02/2016 -- ACBrMDFeConfiguracoes -- ACBrCTeConfiguracoes -- ACBrNFeConfiguracoes [-] Correção da criação de pastas, separando os XMLs por nome, no método DistribuicaoDFe() estava criando pasta dentro de pasta. (por Isaque Pinheiro) 18/02/2016 -- ACBrDFeConfiguracoes -- [+] Adicionado a propriedade: TimeZoneConf: TTimeZoneConf em TWebServicesConf, para permitit configurar como o métoto pcnAuxiliar.GetUTC se comportará, na detecção do TimeZone (leia mais em: PCNComum-change-log.txt) 17/02/2016 -- ACBrDFeCapicomDelphiSoap -- [*] Ajuste para definir o TimeOut de DFeSSL para a Indy (por: DSA) -- ACBrDFeSSL -- [+] Adicionado o método TDFeSSL.ValidarCNPJCertificado(CNPJDocumento: String); Dispara exception se o "CNPJDocumento" não contiver a mesma raiz do CNPJ do Certificado (por: DSA) 10/02/2015 -- ACBrDFeWebService -- [-] Ajuste no método TDFeWebService.SalvarEnvio, para que a gravação dos arquivos com os dados de envio, não seja indevidamente convertida para UTF8 (por: DSA) 20/01/2015 -- ACBrDFeWebService -- [*] Ajuste para não tentar verificar a validade do Certificado, se não há certificado informado. -- ACBrDFeCapicomDelphiSoap -- [*] Ajuste para considerar a propriedade "DFeSSL.UseCertificate", e não atribuir o Certificado na conexão se a mesma for "False" http://www.projetoacbr.com.br/forum/index.php?showtopic=27492 05/01/2016 -- ACBrDFe -- [*] Ajuste para melhor exibição de erros em "LerServicoDeParams" (por: DSA) 04/01/2016 -- ACBrDFeOpenSSL -- [-] Correção para os métodos "Assinar" e "VerificarAssinatura", que não funcionavam em Delphi XE7, devido a problemas de String vs AnsiString (por: DSA) http://www.projetoacbr.com.br/forum/index.php?showtopic=27085 03/01/2016 -- ACBrDFeWebService -- [+] Adicionado o método: procedure Clear; virtual; que sempre será chamado em "TDFeWebService.Create" e "TDFeWebService.InicializarServico". Isso garantirá que não haverá informações de consultas anteriores, nas propriedades de Retorno do WebService. (por: DSA) 23/12/2015 -- ACBrDFeSSL -- [*] Modificada a assinatura do método "Assinar", para permitir assinar documentos diferentes do XML da NFe function Assinar(const ConteudoXML, docElement, infElement: String; SignatureNode: String = ''; SelectionNamespaces: String = ''; IdSignature: String = '') [*] Modificada a assinatura do método "VerificarAssinatura", para permitir verificar documentos diferentes do XML da NFe function VerificarAssinatura(const ConteudoXML: String; out MsgErro: String; const infElement: String; SignatureNode: String = ''; SelectionNamespaces: String = ''): Boolean; virtual; [*] Adicionanda a propriedade "UseCertificate: Boolean Default True", que permite desligar a comunicação suporte de comunicação com certificado [*] Adicionanda a propriedade "UseSSL: Boolean Default True", que permite desligar a comunição por HTTPs, se necessário [*] Refatoração, criando os métodos:: "AdicionarSignatureElement" e "AjustarXMLAssinado", removendo código semelhante de ACBrDFeCapicom e ACBrDFeOpenSSL -- ACBrDFeOpenSSL -- [*] Ajustes nos métodos "Assinar" e "VerificarAssinatura", para usar os novos parâmettos [*] Mensagens de erro, movidas para constantes [*] Método "VerificarAssinatura", corrigido e funcionando -- ACBrDFeCapicom -- [*] Ajustes nos métodos "Assinar" e "VerificarAssinatura", para usar os novos parâmettos [*] Criadas novas constantes com as strings padrão da assinatura [*] Ajuste nas chamadas de CoInitialize e CoUninitialize, http://www.projetoacbr.com.br/forum/topic/26901-coinitialize/ -- ACBrDFeWebService -- [*] Ajuste no método "AssinarXML" para usar os novos parâmettos de Assinatura [*] Remoção de comentários desnecessários 25/11/2015 [-] Acertos nas impressões para Fortes Report utilizarem corretamente o .lfm alguns relatórios estavam apontando somente para o .dfm gerando problemas de acentuação. 28/10/2015 -- ACBrDFeConfiguracoes -- [*] Alterado o valor padrão de False para True das propriedades: Configuracoes.Geral.Salvar e Configuracoes.Arquivos.Salvar por: Italo Jurisato Junior 22/10/2015 -- ACBrDFeCapicom -- [*] Modificando TDFeCapicom.Enviar para usar TMemoryStream ao invez de TStringStream (por: DSA) -- ACBrHTTPReqResp -- [*] Removida a inclusão do caractere #0 no final do Stream recebido. Remoção de comentários (por: DSA) 21/10/2015 -- ACBrDFeConfiguracoes -- [*] Remoção da propriedade não utilizada Geral.CodModeloDF (por: DSA) 06/10/2015 -- ACBrDFeCapicom -- [-] Ajuste para permitir o uso de TDFeCapicom, em threads diferentes, da mesma aplicação (por: Carlos Marian) http://www.projetoacbr.com.br/forum/index.php?showtopic=24934 02/10/2015 -- ACBrDFeOpenSSL -- [-] Ajuste para detectar a falha na abertura do Certificado, quando a Senha for inválida (por: DSA) 30/09/2015 -- ACBrDFeOpenSSL -- [-] Acerto para garantir que a leitura do certifica nas informações extras seja mais correto. por: Daniel Simões [-] Acerto para forçar a utilizar o CNPJ do evento ao invés do CNPJ do certificado evitando assim problemas na gravação de arquivos onde a filial utiliza o certificado da matriz. por: regys.silveira 29/09/2015 -- ACBrDFeConfiguracoes -- [*] GetPath, ajustado para que Parâmetro CNPJ considere apenas os numéricos http://www.projetoacbr.com.br/forum/index.php?showtopic=24676 -- ACBrDFeOpenSSL -- [-] Acerto na leitura do CNPJ no certificado, encontramos alguns certificados em que na informação adicional os caracteres de inicio do CNPJ são diferentes. 24/09/2015 -- ACBrDFeConfiguracoes -- (por: DSA) [*] Adicionado observações no código sobre o uso das diversas propriedades "Salvar" 23/09/2015 -- ACBrDFeSSL -- [*] Adicionado suporte a diretiva: {$DEFINE DFE_SEM_CAPICOM} Isso irá remover o suporte a CAPICOM de DFeSSL, deixando apenas o suporte a OpenSSL. 21/09/2015 -- ACBrDFeSSL -- [*] Adicionado suporte a diretiva: {$DEFINE DFE_SEM_OPENSSL} Isso irá remover o suporte a OpenSSL / XMLSec de DFeSSL. A vantagem é que a aplicação deixará de ficar dependente das DLLs do XMLSec 19/09/2015 -- ACBrDFeWebService -- (por: DSA) [*] Implementada a propriedade TDFeWebService.Mimetype, para permitir que algum WebService utilize um valor diferente de "application/soap+xml" [*] TDFeWebService.RetornoWS e TDFeWebService.RetWS modificados para retornarem o valor em UTF8, assim como recebido pelo WebService. * Nota para desenvolvedores do ACBr. Para acessar os valores de RetornoWS e RetWS com a String nativa da IDE (Ex: Unicode) utilize os campos Protected "FPRetornoWS, FPRetWS" [*] TDFeWebService.DefinirEnvelopeSoap, modificado para não inserir o cabeçalho "ENCODING_UTF8", nas IDEs Delphi XE, que usam UNICODE e não UTF8 (isso forçará a conversão para UTF8 antes do envio) 18/09/2015 -- ACBrDFeSSL -- (por: DSA) [*] Método "DFeSSL.Enviar" modificado, para permitir informar o "Mimetype". Útil para alguns WebServices que não usam "application/soap+xml".. 16/09/2015 -- ACBrDFe -- (por: DSA) [*] Disparo de Exception com msg clara quando diretório configurado para os Schemas não contiver nenhum Schema [*] Disparo de Exception quando calculo do Arquivo de Schema retornar String vazia [-] Correção na gravação dos XMLs de Pedido, Retorno e Envelopes para sempre usarem UTF8 como Encoding. Este problema somente afetava Delphi com suporte a Unicode (XE) (Por: DSA e Carlos CANTU) 11/09/2015 [+] Adicionada a propriedade CertTipo para retornar se o certificado é A1 ou A3 por: regys.silveira /Daniel 09/09/2015 [-] ACBrMDFeDAEventoRLRetrato.dfm e ACBrMDFeDAMDFeRLRetrato.dfm Conversão para ANSI, não estava imprimindo corretamente no Delphi 7 http://www.projetoacbr.com.br/forum/topic/24136-impressão-do-damdfe-e-eventos/ 09/09/2015 [*] Alterado a condição que defini se vai salvar o não os XMLs de envio/retorno, agora esses arquivos só serão gravado caso a propriedade Salvar de Geral for True. por: Italo Jurisato Junior 08/09/2015 -- ACBrDFeConfiguracoes -- [*] Ajuste para que TDFeSSL.SSLLib default seja por padrão, libCapicomDelphiSoap, no Delphi (por: DSA) 02/09/2015 [-] remoção de metodo não usado [-] alteração para adicionar o path delimiter ao PathPDF por: regys.silveira / Daniel Simões 02/09/2015 -- ACBrDFeCapicomDelphiSoap -- (por: Augusto Fontana) [-] Correção para difinição de URL e SoapAction http://www.projetoacbr.com.br/forum/index.php?showtopic=24107 26/08/2015 (por: DSA) -- ACBrDFeConfiguracoes, ACBrDFeSSL -- [-] Correção para que número do Certificado seja igual em TDFeSSL e TCertificadosConf http://www.projetoacbr.com.br/forum/index.php?showtopic=23128 18/08/2015 (por: DSA) -- ACBrDFeCapicom -- [+] Implementado o uso de Certificados A1 por Arquivo PFX, Sem necessitar da instalação do Certificado. Exemplo: ACBrNFe1.Configuracoes.Certificados.ArquivoPFX := 'c:\temp\CertificadoA1.pfx'; ACBrNFe1.Configuracoes.Certificados.Senha := '1234'; [*] Refatoração de código na atribuição de Senha de Certificados A3 [*] Revisão de rotinas para liberação de Recursos alocados [-] Correção de "Erro no suporte a canais seguros" a partir da segunda requisicao. o que ocorre quando o mesmo Certificado A3 é atribuido a várias instâncias do componente, e com a atribuição automática de Senha (por: Marciano Bandeira) http://www.projetoacbr.com.br/forum/index.php?showtopic=23668 [*] Método "Validar", mais informações sobre o Erro quando falhar ao Ler um XML. -- ACBrHTTPReqResp -- [*] Revisão de rotinas para liberação de Recursos alocados 13/08/2015 (por: DSA) -- ACBrDFe -- [*] Remoção de método não utilizado "GetNomeArquivoServicos" [*] Ajuste para TWebServicesConf.LerParamsIniServicos procurar por "ACBrXXXServicos.ini" na mesma pasta do .EXE, se o mesmo não estiver definido em Configuracoes.Arquivos.IniServicos 10/08/2015 (por: DSA) -- ACBrDFeCapicom -- [-] Tentativa de correção de falha de atribuição de Senha em Certificado A3 http://www.projetoacbr.com.br/forum/index.php?showtopic=23508 07/08/2015 (por: DSA) -- ACBrDFeCapicom -- [-] Tentativa de correção de A.V. http://www.projetoacbr.com.br/forum/topic/23441-migrando-para-o-trunk2/ 06/08/2015 (por: DSA) -- ACBrDFeOpenSSL -- [*] Modificada a maneira de carregar as DLLs de XMLSec, para evitar a dependencia das DLL sem o uso das rotinas 06/08/2015 (por: DSA) -- ACBrDFe, ACBrDFeConfiguracoes -- [*] Remoção da propriedade "UnloadSSLLib" -- ACBrDFeSSL, ACBrDFeCapicom, ACBrDFeOpenSSL -- [*] Remoção da propriedade "Inicializado, UnloadSSLLib" [*] Remoção dos métodos: "Inicializar, DesInicializar". A Inicialização agora é feita em initialization e finalization da Unit, para evitar problemas relacionados a Init e Shutdown das DLLs de SSL a cada Create e Destroy de TACBrDFeSSL, além de obter melhor desempenho. 04/08/2015 -- ACBrDFeOpenSSL -- (por: DSA) [-] Correção para detectação de CNPJ, para Certificados que não tem o CNPJ no Subjectname. Implementado método para detectar o CNPJ através das Extensões do Certificado -- OpenSSLExt -- [*] Efetuado merge com Openssl.pas de FPC -- ACBrDFeCapicom -- (por: DSA) [-] Correção para exibição de erro de TDFeCapicom.Executar com acentos