Leaderboard


Popular Content

Showing most liked content since 26-02-2017 in all areas

  1. 61 likes
    Olá pessoal, Com o intuito de acabar com a dependência da CAPICOM, nos fontes do Projeto ACBr, apliquei um amplo refactoring, nas Units de ACBrDFeSSL e suas derivadas... O que é CAPICOM ? https://en.wikipedia.org/wiki/CAPICOM Porque usávamos a CAPICOM ? Usar diretamente as APIs do Windows não é uma tarefa simples.... A CAPICOM, facilita um pouco, as tarefas que podem ser feitas com a WinCrypt (ou MS Crypto), para acesso a certificados digitais instalados no Windows Quais as desvantagens da CAPICOM ? A Microsoft condenou a mesma como obsoleta. (esse é o principal motivo) Ela precisa ser registrada no Windows para funcionar Não suporta 64 bits O que será usado no lugar da CAPICOM ? Usaremos diretamente as APIs do Windows, ou seja, a WinCrypt (também conhecida como "MS Crypto" ou "CAPI"). Ou seja, encaramos o desafio e agora usamos apenas métodos da WinCrypt para acessos a Certificados Digitais no Windows. Para facilitar o acesso a API WinCrypt, estamos usando as Units do diretório: "Fontes\Terceiros\CodeGear\", mas especificamente a Unit "ACBr_WinCrypt.pas". Quais as vantagens da WinCrypt ? Ela está presente de forma nativa, em todas as versões do Windows (desde o Windows XP), ou seja, não requer instalação. Possui versões 32 e 64 bits Não requer registro da DLL Não requer a instalação de pacotes .NET ou Java Onde posso encontrar a WinCrypt ? Ela já está instalada, de forma nativa, no seu Windows... com o nome: "crypt32.dll" Se o seu Windows é 64 bits, você encontrará a mesma em: 32 bits: "C:\Windows\SysWOW64" 64 bits "C:\Windows\System32" Se o seu Windows é 32 bits, você encontrará a mesma em: "C:\Windows\System32" O suporte a Delphi7 será mantido ? SIM. Apesar de já anunciarmos o fim do Suporte a D7, tivemos o cuidado de testar as alterações no D7. Para isso, adaptamos as units da pasta "Fontes\Terceiros\CodeGear\" para o suporte a D7... Como configurar para usar a WinCrypt e não a CAPICOM ? A maneira mais simples é configurar a seguinte propriedade: ACBrNFe1.Configuracoes.Geral.SSLLib := libWinCrypt; Na verdade, a propriedade ACBrDFe.Configuracoes.Geral.SSLLib passou a ser virtual... ou seja, ela configurará de forma indireta, as 3 novas bibliotecas de TDFeSSL... Se você ler os fontes, quando rodamos o código acima, o seguinte código será executado. procedure TGeralConf.SetSSLLib(AValue: TSSLLib); case AValue of ..... libWinCrypt: begin SSLCryptLib := cryWinCrypt; SSLHttpLib := httpWinHttp; SSLXmlSignLib := xsMsXml; end; end; Se você deseja uma configuração diferenciada, poderá configurar as bibliotecas individualmente...Exemplo: ACBrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt; ACBrNFe1.Configuracoes.Geral.SSLHttpLib := httpWinINet; ACBrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsXmlSec; Como remover completamente, as Units da CAPICOM dos meus fontes ? Abra o arquivo \ACBr\Fontes\ACBrComum\ACBr.inc e altere a seguinte linha: {.$DEFINE DFE_SEM_CAPICOM} para: {$DEFINE DFE_SEM_CAPICOM} Ou seja, remova o "." do inicio O que mudou em ACBrDFeSSL ? Muita coisa.... (veja abaixo o trecho do "Change-Log").. Estudar os fontes do projeto Demo "\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi", é a melhor maneira de conhecer as modificações. Veja abaixo, um resumo ilustrado: 1 - Agora você pode criar a sua própria janela de escolha de Certificado Veja esse exemplo de código, extraído de ACBrNFe_Demo. onde usamos o método "ACBrNFe1.SSL.LerCertificadosStore", para carregar todos os certificados da Store, definida em "ACBrNFe1.SSL.StoreName", após isso, as informações dos certificados podem ser obtidas em "ACBrNFe1.SSL.ListaCertificados" ACBrNFe1.SSL.LerCertificadosStore; For I := 0 to ACBrNFe1.SSL.ListaCertificados.Count-1 do begin with ACBrNFe1.SSL.ListaCertificados[I] do begin 2 - Agora você pode selecionar as bibliotecas de TDFeSSL, individualmente CryptLib: Permite definir qual será a biblioteca de Criptografia. Ela possui métodos como:"SelecionarCertificado", "CarregarCertificado", "CalcHash". além de propriedades como "DadosCertificado" e "ListaCertificados". TSSLCryptLib = (cryNone, cryOpenSSL, cryCapicom, cryWinCrypt) HttpLib: Usada para acesso HTTP e HTTPs, permitindo informar o Certificado na conexão. Possui métodos como: "Enviar" e propriedades como: "HTTPResultCode" e "InternalErrorCode" TSSLHttpLib = (httpNone, httpWinINet, httpWinHttp, httpOpenSSL, httpIndy); XMLSignLib: Usada para validar XMLs (contra um Schema), assinar um XML, Validar a assinatura existente em um XML. Possui métodos como: "Assinar", "Validar" e "VerificarAssinatura" TSSLXmlSignLib = (xsNone, xsXmlSec, xsMsXml, xsMsXmlCapicom); 3 - Independência das configurações de segurança do I.E. Isso pode ser obtido, se você utilizar SSLHttpLib = "httpWinHttp" ou "httpOpenSSL" Você poderá definir nos seus fontes, independente das configurações do Internet Explorer, configurações como o Tipo de segurança e TimeOut da tentativa de conexão. Essa funcionalidade já estava presente nas Units de acesso que utilizavam o OpenSSL a algum tempo. e agora com a nova Unit que faz acesso a HTTPS, usando a API do Windows chamada "WinHTTP", isso também será possível. O modelo: "httpWinINet" irá usar a API do Windows, chamada "WinINet", a qual já utilizávamos, e ela depende de configurações do I.E. 4 - Carregar o certificado por ArquivoPFX ou DadosPFX, com a WinCrypt ou CAPICOM Essa funcionalidade já estava presente, quando SSLCryptLib = cryOpenSSL. e não estava disponível para CAPICOM. Mas agora isso é possível, com a SSLCryptLib = cryCapicom ou cryWinCrypt. Ou seja, Se você tem um certificado A1, você não precisa instalar o certificado no Windows. Isso pode parecer pouco importante em uma primeira impressão... Mas veja as possibilidades: O certificado A1 poderia estar em um Banco de dados, ou em um Servidor Web, e ser carregado de forma dinâmica pela sua aplicação, independente de ser instalado manualmente no Windows. 5 - Compilar seu Executável em 64 bits Lembre-se que quando você compila o seu programa em 64 bits, todas as DLLs externas de qual ele necessitar, também devem ser de 64 bits. Portanto para isso, você não poderá usar a XMLSignLib = xsMsXml, pois a biblioteca da Microsoft para assinatura de XMLs "MSXML" não possui versão 64 bits. Mas observe que agora você pode usar a biblioteca WinCrypt com a XmlSec, basta configurar corretamente as bibliotecas de criptografia. Nota: Ainda não conseguimos, fazer com que a XMLSec possa usar certificados A3, mas isso deverá ser possível no futuro, pois a XMLSec tem suporte a "MSCrypto" Diagrama de Classes Como posso ajudar ? (Tarefas a serem efetuadas) 1 - Fazer a XmlSec funcionar usando a "mscrypto" Ainda não conseguimos fazer a XMLSec, usar a MSCrypto, atualmente ele apenas usa a "openssl". Porque isso é importante ? Temos vários problemas, com a msxml, como por exemplo: A Microsoft não distribui a mesma, de forma nativa, com o Windows (arquivo msxml5.dll) Ela não suporta 64 bits A licença de uso dassa biblioteca, é valida apenas para quem tem o Office instalado... Portanto, seria ótimo se pudéssemos ficar livres da MSXML, mas para isso, precisamos fazer o ACBr conseguir usar a XMLSec com suporte a MSCrypto (hoje ele só suporta OpenSSL)... Na verdade, já podemos usar WinCrypt + XmlSec, mas apenas para certificados A1, pois o ACBr é capaz de exportar o certificado A1 do Windows, para que o mesmo seja usado pelo OpenSSL. (ele fará isso internamente, e de forma transparente para o usuário) Quando conseguirmos fazer a XmlSec usar a MSCrypto (ou WinCrypt), conseguiremos compilar a aplicação em 64 bits, e com suporte a certificados A3 2 - Compilar os fontes da XMLSec no Windows, em 32 e 64 bits Hoje o único site que distribui a XMLSec já compilada para Windows é https://www.zlatkovic.com/libxml.en.html (Thanks Igor). Entretanto, podemos notar que os binários estão defasados, e não há uma versão 64 bits, com suporte a "mscrypto" Veja como ficou o "Change-Log" do refactoring em ACBrDFeSSL -- ACBrDFeSSL -- [*] Amplo refactoring promovido, separando a classe "TDFeSSLClass" em 3 novas classes: "TDFeSSLCryptClass" - para Carregar certificados e efetuar criptografia "TDFeSSLHttpClass" - para comunicação HTTP/HTTPS com suporte a Certificados "TDFeSSLXmlSignClass" - Para Validar XMLs, validar assinaturas e Assinar XML com Certificados [+] "TSSLLib", adicionado os tipos "libWinCrypt, libCustom" [+] Criada nova classe "TDadosCertificado", para conter os dados do certificado carregado [+] Criada nova classe "TListaCertificados",para conter uma lista de Objetos do tipo TDadosCertificado, com todos os certificados de uma "Store", e após a chamada do método "TDFeSSL.LerCertificadosStore" [+] Adicionada propriedade "TDFeSSL.StoreName: String", usada apenas no Windows. Nome da Store a ser aberta, padrão "MY" [+] Adicionada propriedade "TDFeSSL.StoreLocation: TSSLStoreLocation", usada apenas no Windows. Default "slCurrentUser". TSSLStoreLocation = (slMemory, slLocalMachine, slCurrentUser, slActiveDirectory, slSmartCard); [+] Adicionado o método: "TDFeSSL.LerCertificadosStore", apenas Windows, para carregar todos os Certifcados de "TDFeSSL.StoreName" para a lista de Objetos: "TDFeSSL.ListaCertificados" [+] Adicionado a propriedade "TDFeSSL.DadosCertificado", para permitir acesso aos dados do certificado carregado [+] Adicionada a propriedade "TDFeSSL.SSLCryptLib: TSSLCryptLib" default cryNone; para definir a classe de criptografia TSSLCryptLib = (cryNone, cryOpenSSL, cryCapicom, cryWinCrypt); [+] Adicionada a propriedade "TDFeSSL.SSLHttpLib: TSSLHttpLib" default httpNone; para definir a classe de comunicação HTTP/HTTPS TSSLHttpLib = (httpNone, httpWinINet, httpWinHttp, httpOpenSSL, httpIndy); [+] Adicionada a propriedade "TDFeSSL.SSLXmlSignLib: TSSLXmlSignLib" default xsNone; para definir a classe de assinatura de validação de XML TSSLXmlSignLib = (xsNone, xsXmlSec, xsMsXml, xsMsXmlCapicom); [+] Adicionada a propriedades "TDFeSSL"SSLType: TSSLType" default LT_all; para permitir definir o tipo de criptografia em HTTPS sendo: TSSLType = (LT_all, LT_SSLv2, LT_SSLv3, LT_TLSv1, LT_TLSv1_1, LT_TLSv1_2, LT_SSHv2) suportado apenas em TDFeHttpOpenSSL e TDFeHttpWinHttp -- ACBrDFeConfiguracoes -- [+] Adicionada as propriedades: property SSLCryptLib: TSSLCryptLib property SSLHttpLib: TSSLHttpLib property SSLXmlSignLib: TSSLXmlSignLib [*] Propriedade "SSLLib: TSSLLib" passou a ser virtual, e mantida por compatibilidade. Ajusta-la irá produzir ajustes em "SSLCryptLib", "SSLHttpLib" e "SSLXmlSignLib". Exemplo: if SSLLib = libOpenSSL then begin SSLCryptLib := cryOpenSSL; SSLHttpLib := httpOpenSSL; SSLXmlSignLib := xsXmlSec; end; -- ACBrDFe -- [+] Adicionado suporte a configurações de "SSLCryptLib", "SSLHttpLib", "SSLXmlSignLib" -- ACBrDFeOpenSSL -- [*] Amplo refactoring. Removido código referente a comunicação HTTP/HTTPs que foi migrado para "ACBrDFeHttpOpenSSL" [*] Removido código referente a assinatura digital e Validação de XML, que foi migrado para "ACBrDFeXsXmlSec" -- ACBRDFeWinCrypt -- [+] Nova Unit, para manipular Certificados do Windows e efetuar assinatura digital, usando a Win API WinCrypt (MSCrypto/CAPI) -- ACBrDFeCapicom -- [*] Refactoring, para usar boa parte do código de "ACBRDFeWinCrypt" -- ACBrDFeHttpOpenSSL -- [+] Adicionada nova Unit, derivada de ACBrDFeOpenSSL, criando implementação da classe de TDFeSSLHttpClass para comunicação http e https, usando a Synapse e OpenSSL -- ACBrDFeHttpWinApi -- [+] Adicionada nova Unit, derivada de ACBrDFeCapicom, criando implementação da classe de TDFeSSLHttpClass para comunicação http e https, usando as APIs do Windows WinHttp ou WinINet -- ACBrDFeHttpIndy, ACBrDFeCapicomDelphiSoap -- [*] Unit renomeada de "ACBrDFeCapicomDelphiSoap" para "ACBrDFeHttpIndy", e refatorada para não depender da CAPICOM -- ACBrDFeXsXmlSec -- [+] Adicionada nova Unit, derivada de ACBrDFeOpenSSL, criando implementação da classe de TDFeSSLXmlSignClass usando a Lib XMLSEC -- ACBrDFeXsMsXml -- [+] Adicionada nova Unit, derivada de ACBrDFeCapicom, criando implementação da classe de TDFeSSLXmlSignClass usando a Lib MSXML -- ACBrDFeXsMsXmlCapicom -- [+] Adicionada nova Unit, derivada de ACBrDFeCapicom, criando implementação da classe de TDFeSSLXmlSignMsXml usando a Lib MSXML e CAPICOM -- ACBrDFeException -- [+] Adicionado o exception "EACBrDFeExceptionNoPrivateKey" -- ACBrDFeUtil -- [+] Adicionado o método "SignatureElement: String" (por DSA) Obrigado... e considere nos ajudar, contratando o SAC, por pelo menos 1 mês http://www.projetoacbr.com.br/forum/sacv2/sobre/ http://www.projetoacbr.com.br/forum/sacv2/questoes_importantes/ http://www.projetoacbr.com.br/forum/sacv2/cadastro/ Fique atento.... Em breve, organizaremos um Webinar sobre essas modificações
  2. 39 likes
    Depois de muita conversa interna e requisição de uma parte dos usuários ACBr, resolvemos estender o suporte ao Delphi 7 até Janeiro de 2017. Por que? Nossa principal motivação foi porque muita gente está pensando que quando chegasse o fim de agosto a compatibilidade com o Delphi 7 será simplesmente removida e seus aplicativos vão parar de funcionar. Infelizmente, algumas pessoas estão usando isso com um oportunismo, fazendo "terrorismo" nos usuários do projeto ACBr. Queremos que entendam que não é fácil manter a compatibilidade do projeto em tantas versões diferentes. E não estamos recebendo muita ajuda nessa área. É difícil manter compatibilidade com versões UNICODE quando nós mesmos não usamos. Mas então em janeiro meu aplicativo Delphi 7 deixará de funcionar com o ACBr? Não!!!! Seu aplicativo vai continuar funcionando. Isso é mentira, falácia, balela, uma grande prosopopéia para acalentar bovinos (conversa pra boi dormir). Então o ACBr não vai mais enviar alterações e correções de acordo com a legislação? Claro que vamos continuar enviando alterações e correções. Então não entendi... Pois é... Isso é o que a gente está tentando esclarecer... Deixa eu tentar... Como é o processo atualmente: Sempre que antes de enviar uma correção, alteração ou inclusão de nova característica, precisamos avaliar se vai funcionar no Delphi 7. Mas a maioria de nós não utiliza mais o Delphi 7. Então depois fazemos a correção, testamos na versão que utilizamos. Daí precisamos, por exemplo disparar uma máquina virtual, esperar ela carregar, copiar o novo código para a VM, fazer os testes no Delphi 7, voltar a máquina normal e só depois enviar ao SVN. Como queremos que seja o processo após janeiro de 2017: Fazemos a correção que precisamos, testamos nas versões que suportamos, e enviamos ao SVN. Mas e o Delphi 7? Os componentes até essa data vão continuar funcionando no seu Delphi 7. Mas a partir dessa data você deverá ter cautela para atualizar via SVN. Eventualmente, sem intenção, uma quebra de compatibilidade pode acontecer. Neste caso você sempre terá a opção de voltar para uma revisão que esteja funcionando. Mas se preferir poderá fazer algo: Corrigir você mesmo o problema; Encontrar algum voluntário para corrigir; Atualizar para uma IDE suportada; Quais as IDE suportadas? Lazarus ou Delphi 2009 ou posterior.
  3. 23 likes
    Para evitarmos diversos tópicos sobre o mesmo assunto, as alterações relativas a versão 4.00 da NFe/NFCe deverão ser concentradas neste tópico. Os fontes do componente já foram atualizados para permitir gerar os XMLs para essa nova versão. Também já foram ajustados para não gerar o SOAP Header quando configurado para a versão 4.0(ve400). Assim que os schemas e webservices forem disponibilizados pelo SEFAZ, iniciaremos os testes com o componente. Mais informações sobre as mudanças podem ser obtidas na NT 2016.002 - http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=c4S6yXTKpXY= Apenas como informação, neste manual fiquei com dúvida em dois campos: descANP - Campo numérico com tamanho de 2 - 95? O campo tem a seguinte descrição: Descrição do produto conforme ANP, então provavelmente deve ser do tipo carácter e não numérico. O campo vBCFCPSTRet possui o mesmo ID de outro campo na versão 3.10 - N27a - V3.10 vICMSDeson / V4.00 vBCFCPSTRet
  4. 21 likes
    Regras e orientações gerais do Fórum Olá Pessoal, Com o objetivo de deixar o nosso fórum mais dinâmico e organizado para cumprir o objetivo de ser uma ajuda a todos os usuários do projeto ACBr, estamos deixando aqui algumas regras e orientações para todos nós. Todos devem se familiarizar com essas. Também queremos lembrar que essas são regras e orientações gerais para todo o fórum. Para regras específicas do ACBrSAC, queira ver Então vamos às regras e algumas orientações: 1 - Assumiremos boa fé - Vamos procurar assumir boa fé ao lidar com violações, isto é, que o usuário não teve má intenção. Vamos procurar advertir ou banir apenas usuários que repetidamente ou flagrantemente violam as regras. Contudo, isso não dá direito a nenhum usuário abusar dessa liberdade. 2.1 - Não faça SPAM - Temos uma área específica para Classificados, então qualquer propaganda ou requisição de produtos e serviços deve ser postada lá. Usuários que postarem spam fórum terão suas mensagens removidas e podem ser banidos imediatamente sem prévio aviso. Se um post que é considerado apropriado incluir links consideradas spam, esses links serão removidos. 2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". 3.1 - Não faça flooding - Inundar o fórum com posts repetidos, com a mesma dúvida ou as mesmas palavras é chamado de flooding. Isso é proibido. Apenas um post feito no lugar certo é suficiente. Pesquise antes de postar, talvez sua dúvida já está respondida em outro post. 3.2 - Não faça "bump" de forma excessiva (postar simplesmente para que um tópico vá para o topo da lista). Isso é considerado flooding. 3.3 - Use o botão "Editar"- Não faça posts seguidos para corrigir algo que acabou de escrever. Para isto existe o botão "Editar" logo abaixo de seu post. Isso também é considerado flooding. 4 - Proteja sua privacidade - Não publique qualquer informação sensível. Moderadores poderão remover informações pessoais de mensagens para proteger sua privacidade. 5.1 - Respeite os direitos autorais - Não há objeção de se postar algum trecho de algo para desenvolver o seu post. No entanto, em vez de publicar em sua totalidade um texto de outra pessoa, coloque um link para o conteúdo. A não ser, é claro, que você seja o detentor ou tenha a permissão do detentor dos direitos autorais. 5.2 - Nada de pirataria - É proibido fornecer ou pedir informações sobre como obter ou fornecer ilegalmente qualquer coisa como software ("warez", "Crackz"), música, etc. 6.1 - Respeite os outros membros - Não use linguagem obscena, racista, discriminatória, indecente, lasciva, suja, ou excessivamente violenta. Isso também inclui as imagens e assinaturas dos usuários que podem ser alteradas ou removidas pela equipe de moderação. 6.2 - Não assedie, insulte, provoque, humilhe, constranja ou ataque pessoalmente outros. Seja amigável mesmo que os outros não sejam. 6.3 - Mostre respeito pelo modo de escrever. Escreva de modo claro, gramaticalmente e semanticamente correto. Não escreva TUDO EM MAIÚSCULAS ou tudo em negrito. Isso é lido como se estivesse gritando e é considerado rude. 6.4 - Assinaturas: É permitido o uso de uma imagem nas assinaturas. Apenas mantenha a imagem com no máximo 175 pixels de altura e 540 pixels de largura. O motivo destas limitações é que não queremos assinaturas que tirem a atenção dos posts nem que quebrem o layout do fórum (mesmo o layout mobile). Somos um fórum de programação e automação comercial, não de design. 7 - Ajude os moderadores - Se você observar alguém quebrar uma regra, ou se comportando de uma ou outra forma questionável, alerte um moderador ou um administrador. Há opções de denúncia nos posts. Não tente lidar com eles sozinho. 8 - Os administradores e moderadores usarão bom senso e têm a palavra final na interpretação e execução destas regras. 9 - Os administradores poderão modificar essas regras para que se tornem mais práticas e/ou claras para todos. Não seja um chato: Ou adicionaremos algumas imagens e mensagens bem constrangedoras ao seu perfil e avisaremos a todos os seus amigos por e-mail, facebook e twitter... Brincadeirinha: Mas tenham certeza que vamos fazer as regras valerem. Mesmo que isso inclua punições. Como podem ver não criamos uma lista extensa de regras. Acreditamos que o bom senso e um ambiente profissional é do desejo de todos os usuários do ACBr e confiamos que todos tem se esforçado pra fazer o melhor. Assim esperamos que isso não se torne necessário. Agradecemos sua cooperação. Equipe de Moderação.
  5. 14 likes
    Bom dia pessoal. Como todos sabem, na maioria das vezes em que o windows se atualiza ele marca aquelas opções de certificados revogados em "Opções da internet > Avançado" e, pelo menos comigo, gera uma grande quantidade de suporte à clientes. O correto é ficar assim: ( ) Usar SSL 2.0 (x) Usar SSL 3.0 (x) Usar TSL 1.0 ( ) Usar TSL 1.1 ( ) Usar TSL 1.2 ( ) Verificar revogação de certificados servidor* (x) verificar se ha assinaturas em programas baixados ( ) Verificar se há revogação de certificados do editor Então no final do ano passado até cheguei a comentar em um tópico se teria como modificar esses dados diretamente pelo delphi, pra facilitar nossa vida, mas não tinha ninguém com essa informação. Pois bem, essa semana tive um tempinho e comecei a mexer com isso e creio que encontrei uma solução, segue abaixo programação para alterar o registro do windows com as opções corretas. Já testado em alguns clientes e até o momento funcionando perfeitamente. (Testado em windows XP, 7, 2003 server) uses Registry; procedure TFPrincipal.FormCreate(Sender: TObject); var Registro: TRegistry; begin //acertando opções da internet (revogados / SSL / TSL) //verificar revogação de certificados do servidor Registro := TRegistry.Create(KEY_WRITE); Registro.RootKey := HKEY_CURRENT_USER; if registro.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings', true) then begin Registro.WriteInteger('CertificateRevocation', 0); end; registro.CloseKey; //verificar se há certificados revogados do fornecedor if registro.OpenKey('Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing', true) then begin Registro.WriteInteger('State', 146944); end; registro.CloseKey; //Usar SSL 3.0 / Usar TSL 1.0 if registro.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings', true) then begin Registro.WriteInteger('SecureProtocols', 160); end; registro.CloseKey; registro.Free; end; Espero ajudar o pessoal do ACBr com essa contribuição. Um abraço a todos.
  6. 12 likes
    until
    Webinar ACBr - Como emitir boletos com o ACBrMonitor No dia 07/03 realizamos o primeiro Webinar do Projeto ACBr com o título "NFC-e e SAT - Como tratar a contingência". No dia 16/03 as 16:00 iremos realizar o segundo encontro com o tema "Como emitir boletos com o ACBrMonitor". Para participar, basta ser assinante do SAC do ACBr, no dia 16/03 pela manhã todos os usuários com conta ativa no SAC receberão um convite para o Webinar. Apresentado por @Celso Evento disponível para todos os membros do SAC do ACBr E no dia 21/03 iremos repetir o tema do primeiro webinar, se você não pode assistir ou ficou com dúvidas aproveite para participar, o tema será o mesmo mas o evento será ao vivo. Slides e exemplos podem ser baixados no link abaixo.
  7. 10 likes
    Adicionei os seguintes itens, no tópico anterior: Como configurar para usar a WinCrypt e não a CAPICOM ? Como remover completamente, as Units da CAPICOM dos meus fontes ? Como posso ajudar ? (Tarefas a serem efetuadas)
  8. 7 likes
    Faça o seguinte: Baixe os 3 repositórios: 1. JCL: https://github.com/project-jedi/jcl/trunk/jcl 2. JVCL: https://github.com/project-jedi/jvcl/trunk/jvcl 3. JEDI: https://github.com/project-jedi/jedi/trunk (este repositório possui arquivos .inc que são necessários para compilar a JCL corretamente) Após baixar copie os arquivo do passo 3 para: <jcl>\source\include\jedi Execute o arquivo "Install.bat" que está na raiz do repositório JCL baixado, tudo normal sem nada diferente, siga o que ele indicar, talvez na aba 64 bits falte o diretóri, mas basta criar ele conforme ele informa. Execute o arquivo "install.bat" que está na raiz do repositório JVCL baixado, também tudo normal conforme indicado pelo instalador. Se seguir este passo-a-passo não tem erro, tudo funcionará normalmente.
  9. 7 likes
    Como fazer perguntas inteligentes e receber respostas satisfatórias Como desenvolvedores, temos um grande leque de ferramentas para encontrar ajuda na internet: fóruns, grupos, listas de discussão, blogs, etc. No entanto, é comum alguns terem dificuldades em receber respostas satisfatórias às suas perguntas. Mesmo que esteja acostumado a usar essas ferramentas, aconselhamos você a ler este excelente artigo em inglês que trata desse assunto: http://www.catb.org/~esr/faqs/smart-questions.html. Caso prefira, poderá ler a tradução em http://www.python.org.br/wiki/ComoFazerPerguntasInteligentes notando, no entanto, que pode estar desatualizado. Pode ir lá, a gente espera você acabar de ler e voltar... Aqui vamos deixar algumas dicas que podem ajudar você a receber respostas satisfatórias ou reduzir o tempo em que você as receba: É necessário fazer isso: LEIA O MANUAL! (de qualquer coisa com a qual estiver lidando) Atualizou os componentes? Queira fazê-lo. Talvez seu problema já tenha sido corrigido; Sempre tenha certeza de pesquisar antes de postar uma nova dúvida; Leia as leis, Normas Técnicas (NT) e convênios relacionados. Agora faça um esforço de entendê-las; Você é programador(a)? Então leia o código fonte e se esforce a entendê-lo; Crie tópicos nos subfóruns dedicados para o assunto; Ao criar um tópico, use um título específico como "Devo criar um registro R7 para cada R4 e para cada R6?". Não algo genérico como "Dúvida sobre R6 e R7"; Quando citar outros posts, copie o endereço deles. (Ex.: Procurei ajuda nos tópicos A, B e C, mas meu caso é um pouco diferente...); Ao relatar sua dúvida ou problema, dê informações completas logo de início: Qual a versão do Sistema Operacional e a versão da IDE de desenvolvimento (Lazarus, Delphi 7,2009,2010, XE, etc...) Qual o componente? Se envolve um erro, qual a mensagem de erro? Se envolve um teste de Certificação TEF ou Homologação PAF-ECF, qual o teste? Com qual parte do teste está com problemas? Envolve uma lei? Qual a lei? O que esperava obter? O que realmente obteve? O que você já tentou fazer para corrigir o problema? Quais os resultados? Tenha certeza de se informar bem antes de pedir uma alteração no componente. Talvez seja algo já explicado nos manuais, wiki, fórum ou no próprio código; Não se esqueça que os outros usuários não são seus funcionários. Eles são funcionários e donos de outras empresas, que tem os seus próprios clientes e prazos para atender. Então não os trate como se fossem obrigados a dar alguma satisfação. Isso vale especialmente para a Equipe de Moderação; NOTA: Seguir essas orientações não vai fazer que, como mágica, sua resposta seja respondida no primeiro minuto após ser postada. Mas vai reduzir a quase zero a probabilidade de ser ignorada. E vai aumentar em muito a probabilidade de receber uma resposta satisfatória. E lembre-se, se precisar de ajuda com mais urgência com os componentes ou os aplicativos ACBr, você pode contratar o ACBrSAC. Apenas lembre-se que alguns dos componentes em desenvolvimento ou específicos não são cobertos pelo ACBrSAC. Caso tenha alguma dúvida sobre isso, queira pesquisar ou perguntar no fórum.
  10. 6 likes
    Enviei uma alteração na revisão 13000. Acredito que resolva o caso apresentado. Uma NFe de 800 itens agora é gerada em menos de um segundo. Não foi necessário utilizar o TStringBuilder, alterar a propriedade para utilizar a função set|get e nem IFDEFs. Por favor queira testar. Ahhh... e quase ia esquecendo. Muito obrigado pelo report.
  11. 5 likes
    Parabéns Daniel por mais essa inovação no ACBr!
  12. 5 likes
    Bom dia, só pra avisar, IBPT publicou nova tabela 17.1.B https://deolhonoimposto.ibpt.org.br/ OBS: vigência a partir de (nada mais, nada menos que) HOJE. Att Ricardo
  13. 5 likes
    Bom dia Graça, Quando você diz "um aplicativo sem ACBr não está ocorrendo o erro", você esta se referindo a um outro aplicativo que emiti CT-e, correto? Como você fez testes com os certificados A1 e A3 acredito que esteja usando o Capicom, correto? Você configurou o componente para o libCapicom ou libCapicomDelphiSoap? Quanto as configurações vamos esclarecer para que serve cada uma delas. Logo após o envio do lote recebemos o numero do recibo, que atesta que a SEFAZ recebeu o lote. De posse do numero do Recibo podemos consultar para saber o resultado do processamento. A propriedade AguardarConsultaRet determina o tempo (milissegundo) que o componente vai esperar para realizar a primeira consulta. Esse tempo de espera me refiro ao tempo entre o retorno do Envio e a primeira consulta. Se você atribuir o valor True a propriedade AjustaAguardaConsultaRet e antes de enviar, consulta o status de serviço, a propriedade AguardarConsultaRet será automaticamente configurada pelo componente através de uma informação retornada pela consulta ao status. Aconselho não adotar essa pratica, pois poderá ser incluída na lista de empresas que realizam consumo indevido do Web Service. E volto a informar que a SEFAZ estuda a possibilidade de acabar com o serviço de consulta ao status, sendo assim vamos deixar isso de lado. Ao realizar a primeira consulta podemos ter como resposta que o lote ainda se encontra em processamento, neste caso devemos aguardar um tempo e tentar novamente. O tempo de espera (milissegundo) entre uma consulta e outra devemos estabelecer na propriedade IntervaloTentativas e a quantidade de consultas a serem realizadas devemos definir em Tentativas. Depois de refrescar a memória sobre as propriedades, eu deixaria elas com a seguinte configuração: ACBrCTe1.Configuracoes.WebServices.Tentativas := 10; ACBrCTe1.Configuracoes.WebServices.IntervaloTentativas := 2000; ACBrCTe1.Configuracoes.WebServices.AguardarConsultaRet := 2000; ACBrCTe1.Configuracoes.WebServices.AjustaAguardaConsultaRet := False; Aconselho a parametrizar esses valores, ou seja, você deve ter uma tabela no banco de dados onde tem as configurações do componente, tais como UF, ambiente, PathSchemas, etc. É interessante incluir nessa tabela mais alguns campos para poder ter as configurações acima. Desta forma você pode mudar essa configurações em a necessidade de recompilar a aplicação.
  14. 4 likes
    until
    No dia 07/03 realizamos o primeiro Webinar do Projeto ACBr com o título "NFC-e e SAT - Como tratar a contingência". E no dia 21/03 iremos repetir o tema, se você não pode assistir ou ficou com dúvidas aproveite para participar, o tema será o mesmo mas o evento será ao vivo. Para participar, basta ser assinante do SAC do ACBr, no dia 21/03 pela manhã todos os usuários com conta ativa no SAC receberão um convite para o Webinar. Apresentado por @André Ferreira de Moraes
  15. 4 likes
    Adicionei ao SVN os fontes do novo componente ACBrSATWS. Lembrando que não é necessário o uso de certificados digitais para realizar a consulta, apenas da chave de segurança que pode ser obtida no SGR-SAT, mais informações em https://portal.fazenda.sp.gov.br/servicos/sat/Downloads/Manual para Consultar lotes enviados via Webservice (Estadual) v1 1.pdf
  16. 4 likes
    Boa noite a todos, Vou fechar este tópico pois já esta atingindo quase 380 postagens. Por favor criem um novo tópico tratando somente do NFeDistribuicaoDFe e se for o caso um outro sobre o NFeDownloadNF para que possamos separar as postagens uma vez que se tratam de Web Services diferentes e funções diferentes. Lembre-se que a função do NFeDistribuicaoDFe é fornecer uma lista que a principio são resumos de notas ou eventos, para que a empresa possa realizar a manifestação do destinatário, por exemplo. Se a empresa realizar a manifestação do destinatário e posteriormente realizar uma nova consulta no NFeDistribuicaoDFe vai constar na lista a nota completa, que neste caso o componente se encarrega de descompactar e salvar em disco automaticamente. Por outro lado a função do NFeDownloadNF é simplesmente retornar o XML completo de uma nota que foi previamente manifestada. O problema é a SEFAZ alterou a forma de retorno, ou seja, agora o XML completo da nota esta vindo compactado como ocorre no NFeDistribuicaoDFe, a diferença é que o NFeDownloadNF ainda não foi alterado para realizar a descompactação. Se alguém tiver afim de regaçar as mangas e realizar essa alteração toda a equipe ACBr agradece. Desde já agradeço a compreensão de todos pelo fechamento deste tópico.
  17. 3 likes
    Enviei a Unit para o SVN... essa nova implementação para ser mais correta...
  18. 3 likes
    Estamos há algum tempo trabalhando e desenvolvendo algumas de nossas soluções em ambiente C e com isso adquirimos know-how e hoje compilamos nossas libs para Windows, Linux e ARM (32 e 64) bits. Percebi que poderíamos ajudar no item 2 do tópico: http://www.projetoacbr.com.br/forum/topic/35727-bye-bye-capicom/ Resolvemos preparar um passo a passo de como criar desde o ambiente até a compilação das libs libxmlsec e libxml2 e disponibilizar para o ACBr. Com isso qualquer um que se interessar poderá compilar as libs no ambiente Windows 32 e 64 bits e disponibilizar para o uso das libs atuais. ps: Não consegui postar no tópico de que se trata esse assunto.
  19. 3 likes
    Alterações aqui citadas, já implementadas no ACBrMonitorPLUS versão 1.1.0, disponível para downloads dos usuários do SAC no link abaixo.
  20. 3 likes
    Boa Tarde Prezados, Também resolvi o problema atualizando o certificado da Autoridade Certificadora Raiz Brasileira v5 no seguinte repositório "Autoridades de Certificação Raiz Confiáveis" Segue anexo ICP-Brasilv5.crt
  21. 3 likes
    Prezados, Debati com a SEFA a validação de que não pode vigorar a regra de que a partir do mês que vem, dia 03/04/2017, de informar o troco conforme o manual da NFCe versão 4.1, na página 14. Protocolo 807093 Acabo de receber retorno da SEFA/PR indicando que entraram em contato em a NFCe nacional e minha informação tem sentido, pois existe a regra de que o valor pago precisa ser igual ao valor da NFCe, portanto, nem troco teria como haver e, por consequencia, o novo modelo de NFCe conforme a página 14 do Manual de Especificações Técnicas da NFCe não tem condições técnicas, por própria validação da SEFAZ, de ser aplicada. Tive o retorno que nova nota técnica será criada postergando o valor do troco para quando ele for efetivo na NFe/NFCe, ou seja, em agosto de 2017. Eu realmente não havia confundido as coisas. Cheguei a duvidar da minha própria lógica proposicional, mas... insisti e estava certo. Tudo de bom.
  22. 3 likes
    Foi anunciado pelo Ministro da Fazenda Henrique Meirelles no dia 15/12/2016 Nota Fiscal de Serviços Eletrônica (NFS-e) – Implementação nacional Instituir a NFS-e nacionalmente em todos os municípios inspirado no sucesso da nota fiscal eletrônica para mercadorias (fisco estaduais) Simplificação do documento fiscal de serviços eletrônicos e sua utilização em larga escala, buscando um padrão nacional; aumento na segurança da gestão tributária; melhoria da análise de restituição de créditos tributários. Prazo: projeto-piloto em Belo Horizonte, Porto Alegre, São Paulo, Rio de Janeiro e Marabá até dez/2017 e ampliação para os demais municípios.
  23. 3 likes
    Boa tarde! nosso colega @André Ferreira de Moraes já começou a implementação do componente e daqui alguns dias teremos algo para a comunidade!
  24. 3 likes
    Boa tarde. Estou com um problema na geração do xml da NF-e com muitos itens, fiz uma simulação utilizando o ACBrNFe_demo, segue tomada de tempos. 100 itens = 2 segundos 200 itens = 4 segundos 300 itens = 7 segundos 400 itens = 14 segundos Para simular, onde o ACBrNFe_demo popula os itens, fiz um for de 1 até o número de itens desejados. Com algumas modificações no arquivo pcnGerador para utilizar a classe TStringBuilder, nenhum dos testes acima chegou a 1 segundo. Ressalto que mantive a compatibilidade com o delphi 7, porém não consigo testar com o Lazzarus. Entendo perfeitamente a complexidade de alterar esta unit, porém a diferença de tempo é absurda. Fiz vários testes e todos geram o xml corretamente. Gostaria de saber o que vocês acham sobre essa possível modificação? pcnGerador.pas
  25. 3 likes
    Eu que agradeço a oportunidade de poder contribuir com o Projeto, atualmente é a forma a qual tenho possibilidade de contribuir para o crescimento do projeto.
  26. 3 likes
    Nem comente com o homologador... pois isso pode gerar uma confusao desnecessária... homologar o MD5 do MonitorPLUS deixará sua aplicação muito travada em atualizações
  27. 3 likes
    Já que essas certificadoras afirmam que o conteudo do certificado está sendo apagado por aplicativo de terceiros, também deveriam explicar o porquê de serem tão vulnerávels e apresentar o log que comprove quando e como isso ocorreu. Isso pra mim é desculpa esfarrapada e uma tremenda falta de ética profissional para encobrir falhas do produto que comercializam. Que inventem meios de tornar os certificados mais seguros.
  28. 3 likes
    Boa tarde, amigos, Segue o vídeo que me auxiliou na instalação do ACbr Monitor Plus: Abraços!
  29. 3 likes
    Prezados, boa tarde. Me deparei com esse problema hoje em um dos meus clientes no seguinte cenário: Sistema operacional Windows 10 e Impressora não fiscal Epson TM-T20. Consegui fazer funcionar setando a impressora como Vender Class pelo software da EPSON e associando a porta LPT1 (COM1, COM2, etc não funcionou). Fica a dica caso alguém passe pelo mesmo problema. Abraços.
  30. 3 likes
    Verifique na página da Sefaz a ultima versão do Software Básico do fabricante que você utiliza. http://www.fazenda.sp.gov.br/sat/consultas_publicas/modelos_reg.asp Att Cristiano Abbud
  31. 3 likes
    Já resolveu seu problema ? pq se não resolveu a receita mudou como vem a captcha, agora ela vem numa string binária que é de fácil encode, se ainda tiver o problema entra em contato que te mando o código. VLW
  32. 3 likes
    Quanto a não existir software gratuitos, existe sim bons softwares, o VNC é um deles, inclusive possui ferramenta para personalizar o software client com sua logomarca, endereço, telefone, etc, etc. Agora minha opnião, porque não utilizar a versão paga do Teamviewer? Não é caro, o software é muito bom, cheio de recursos e com uma estrutura que não deixa ninguém na mão. Se você ganha dinheiro com teu software porque não pagar pelo deles para uso profissional? Eu particularmente tenho aqui a versão corporativa com 3 canais, me atende muito bem e foi um senhor investimento perto do que já passei com diversas outras soluções.
  33. 2 likes
    fiz as devidas alteracoes para contemplar as especificacoes tecnicas versao 4.1 da danfe NFCe com fortes report em anexo arquivos mofificados para analise e manual ACBrDANFCeFortesFr.dfm ACBrDANFCeFortesFr.pas manual-de-especificacoes-tecnicas-do-danfe-nfc-e-qr-code-versao-4-1.pdf
  34. 2 likes
    Bom dia, Fiz uma alteração na cobrança CECRED CNB 240, baseada nos fontes do @Andre Cristiano Ittner Pois a multa estava sempre em percentual, e eu necessitava que estivesse em Real. Fiz o testes com e foi homologado pelo banco, inclusive usando a negativação via Serasa. Os fontes estão em anexo, caso queiram analisar para subir ao SNV. Tanto do CECRED como o Itáu foi feito os ajustes para a negativação via Serasa. Dercide. ACBrBancoCecred.pas AcbrBoleto.pas ACBrBancoItau.pas
  35. 2 likes
    A nova versão do MonitorPLUS, já usa uma janela própria, para selecionar o certificado... portanto, isso não deverá mais ser um problema...
  36. 2 likes
    @Daniel Simoes obrigado pela ajuda. Pelo que eu entendo,serà possivel usar a nova biblioteca WinCrypt apenas com os certificados digitais A1, correto? Quando serà possivel usar WinCrypt para todos os tipos de certificado (A3)? Tenho outra dúvida: no caso de TLS 1.2 também é necessário usar MinGW com WinCrypt? Acho que não, certo? Grazie Andrea
  37. 2 likes
    Olá Daniel. Fiz novamente aqui, alterei linha citada acima "(FGerador.wCampo(tcInt, '', 'COO', 6, 6, 1, COO)." e deu certinho. Precisava que ficasse dessa forma: (FGerador.wCampo(tcInt, '', 'COO', 9, 9, 1, COO) Como sou novato hehehe aqui, não sei como fazer para enviar a minha sugestão de alteração. Estou anexando aqui o fonte alterado. Att, Matheus Orlandi ACBrBlocoX_ReducaoZ.pas
  38. 2 likes
    Olá Pessoal, empsuporte, no grupo [ICMSXXX], onde você está informando a tag: ICMS = 18, precisa ser: pICMS = 18 (pICMS e não apenas ICMS). No grupo [COFINSXXX] como disse o colega Ricardo, altere para pCOFINS. (está como pPIS). O restante está ok. Altere e teste que deve funcionar.
  39. 2 likes
    Obrigada, já percebi o erro. conforme o manual do SPED "Este registro deve ser gerado para abertura do bloco H, indicando se há registros de informações no bloco. Obrigatoriamente deverá ser informado “0” no campo IND_MOV no período de referência fevereiro de cada ano.Contribuinte que apresente inventário com periodicidade anual ou trimestral, caso apresente o inventário de 31/12 na EFD ICMS IPI de dezembro ou janeiro, deve repetir a informação na escrituração de fevereiro. No registro H005 Atribuir valor Zero ao inventário significa escriturar sem estoque. Se não houver registro H010, o valor do campo VL_INV do H004 deve ser “0” (zero).".
  40. 2 likes
    http://forum.lazarus.freepascal.org/index.php/topic,36052.0.html?PHPSESSID=garas3geojsthlrt395dsi3gn6
  41. 2 likes
    A sugestão faz sentido... o retorno não está de acordo com a sintaxe de um arquivo INI @Celso, poderia por favor verificar ?
  42. 2 likes
    Bom dia Pessoal! Na programação, segui o exemplo do SAT, deixei um campo para alteração do parâmetro da versão do Layout, eu tambem estava com problemas de versão de Layout e foi apenas mudar o valor de 0.06 para 0.07 e funcionou perfeitamente.
  43. 2 likes
    Concordo contigo, verifique a imagem, está de acordo com o manual do Itau..
  44. 2 likes
    Assisti hoje um transmissão o pessoal explicando sobre as mudanças os prazos são Liberação Ambiente de Homologação: 01/06/2017 Liberação Ambiente de Envio Oficial : 01/08/2017 Fim do Uso da NF-e 3.10 : 01/11/2017 Bom temos um prazo até a liberação dos servidores de homologações, e também vi que vai ter mudanças na parte de validações com uma maneira mais fácil de e padronizada de erros referente a NF-e, creio que isso para nos desenvolvedores será muito melhor!!! bom não sei se posso publicar o link mais qualquer coisa eu retiro, se acaso vocês quiserem ver o que há de mudança mais rápido e facíl! segue o link: https://www.eventials.com/tecnospeed/vem-ai-a-4-geracao-da-nf-e/?utm_source=transactional&utm_medium=email&utm_campaign=transactional_webinar_reminder&utm_content=full_url_link
  45. 2 likes
    Boa tarde pessoal, estou com o seguinte problema ao enviar uma NFS-e com retenção de ISS.. Campo ValorISSRetido informado incorretamente Valor do ISS informado incorretamente Servico.Valores.IssRetido := stRetencao; Servico.ResponsavelRetencao := ptTomador; ValorRetido := Servico.Valores.BaseCalculo * (Servico.Valores.Aliquota / 100); ValorISS := 0.00; Servico.Valores.ValorIss := ValorISS; Servico.Valores.ValorIssRetido := RoundTo5(ValorRetido, -2); Segue em anexo XML com as informações.. 72-env-lot-soap.xml
  46. 2 likes
    Bom dia Marco, Esquece o ConsNFeDest, passe a usar o DistribuicaoDFe. Este último permite você obter uma lista das notas emitidas contra o seu CNPJ dos últimos 3 meses. Dentro da pasta: ...\Exemplos\ACBrDFe\ACBrNFe você encontra um fragmento de código chamado: DistribuicaoDFe. Estude ele para que você possa implementa-lo na sua aplicação. O funcionamento do DistribuicaoDFe é semelhante ao do ConsNFeDest só que traz inúmeras vantagens. Aconselho a ler a NT: 2014/002 versão 1.01 que trata sobre o Distribuição DF-e Espero ter ajudado.
  47. 2 likes
    Bom dia pessoal, Estou com esse problema ao enviar CT-e no estado de MG, O buffer do usuário não é válido para a operação solicitada. - URL:https://cte.fazenda.mg.gov.br/cte/services/CteRetRecepcao - SOAPAction:http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao/cteRetRecepcao O CT será salvo para posterior envio. Caso alguém tenha passado por esse problema e conseguiu resolver fico no aguardo da resposta, desde já agradeço.
  48. 2 likes
    https://github.com/project-jedi/jcl
  49. 2 likes
    Juliomar, os dois posts estão no mesmo tópico mas um dos posts foi em resposta de outra pergunta. Desculpe. Mas não estou aqui para criar caso e sim para somar no grupo. Quero ajudar o projeto crescer. E o que mais importa é que esclareceu minha dúvida e com certeza de muitas outras pessoas. Obrigado mesmo. Daniel.
  50. 2 likes
    Depois de algum tempo falando com a Bematech consegui os dados, vou deixar aqui para que possa ajudar os demais, segue: Emitente: CNPJ:82373077000171 IE: 111111111111 Código de Ativação: bema1234 Software House: CNPJ: 16716114000172 Assinatura: SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT