Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 21-08-2019 em todas as áreas

  1. Visulizar Arquivo Binários da ACBrLibSerial. Win32, Win64, StdCall, Cdecl, Linux ACBrPosPrinter - Biblioteca para comunicação com impressoras não fiscais usando EscPos ACBrETQ - Biblioteca para impressão de Etiquetas usando PPLA/PPLB/ZPL2 ACBrBAL - Biblioteca para leitura de balança Autor Daniel Simoes Enviado 20-08-2019 Categoria ACBrLibSerial
    4 pontos
  2. Boa tarde a todos, Já esta disponível em nossa biblioteca a Nota Técnica 2019/001 versão 1.20 que trata sobre as alterações nas regras de validação. Essa nova versão é uma complementação da anterior que inclusive o seu resumo se encontra aqui. Resumo da NT:  • Remoção da Regra 1C03-10 (A Regra 1C03-10 exigia que Razão Social do emitente informada na tag emit\xNome fosse exatamente igual ao cadastro da SEFAZ, o que se demonstrou problemático). • Correção na Descrição da Regra de Validação N12-90 (Retirada informação de aplicação somente em casos de operação interna). Se CST de ICMS = (20, 30, 40, 41, 50, 70 ou 90): - Verificar se informado o valor do ICMS desonerado (tag:vICMSDeson) e o Motivo da Desoneração (tag: motDesICMS). • Torna facultativas as regras N18-10 e N18-20 (Os tempos de implementação destas regras variam muito entre as diversas Sefaz autorizadoras, por isto a partir da versão 1.20 desta nota técnica estas regras são de aplicação facultativa). N18-10: Se o campo modBCST = “4” Margem Valor Agregado, obrigatório o preenchimento do campo pMVAST. N18-20: Se o campo modBCST <> “4” Margem Valor Agregado, não deverá ser preenchido o campo pMVAST . • Criado novo Valor para o Campo N18 (A tag modBCST passa a aceitar a opção “6=Valor da Operação”). Datas previstas para entrada em vigor: 26/08/2019 - Ambiente de Homologação; 02/09/2019 - Ambiente de Produção. Alterações no componente: Criado o valor dbisValordaOperacao, para o campo modBCST. Alterações na aplicação do desenvolvedor: Prever o uso do novo valor para os CST 10 e 30. Para quem utiliza o ACBrMonitor, basta atribuir o valor 6 ao campo modBCST para os CST 10 e 30 quando for o caso. Foi publicada uma nova tabela: cBenef x CST atualizada até 19/08/2019, a qual pode ser baixada aqui, além dos novos schemas para atender o novo valor do modBCST. Até o final desta semana estaremos disponibilizando os novos schemas para que semana que vem, vocês possam iniciar os testes em ambiente de homologação.
    4 pontos
  3. Esses campos não fazem parte do grupo IPI. Informe desta forma: [Produto001] pDevol=100.00 vIPIDevol=30.00 ou [det001] pDevol=100.00 vIPIDevol=30.00
    3 pontos
  4. Boa tarde. Segue definição do estado do Paraná quanto as regras a critério da UF.
    3 pontos
  5. Boa tarde a todos, Foi alterado e enviado para o repositório um novo arquivo ACBrNFeServicos.ini Conforme sugestão do Daniel no dia 02/09/2019 devemos alterar esse arquivo e salvar ele na mesma pasta que se encontra o EXE da sua aplicação nas maquinas dos seus clientes. Faça uma atualização de todos os fontes de todas as pastas e abra o arquivo ACBrNFeServicos.ini e veja como ele esta no que se refere a SEFAZ-PA. Ele tem que estar conforme abaixo: [NFe_PA_P] ; A partir do dia 02/09/2019 devemos comentar ou excluir a primeira linha abaixo, e descomentar a próxima linha; ; pois a SEFAZ-PA vai deixar de utilizar a SVAN - SEFAZ-Virtual do Ambiente Nacional e passará para a ; SVRS - SEFAZ-Virtual do Rio Grande do Sul. Usar=NFe_SVAN_P ;Usar=NFe_SVRS_P [NFe_PA_H] ; A partir do dia 02/09/2019 devemos comentar ou excluir a primeira linha abaixo, e descomentar a próxima linha; ; pois a SEFAZ-PA vai deixar de utilizar a SVAN - SEFAZ-Virtual do Ambiente Nacional e passará para a ; SVRS - SEFAZ-Virtual do Rio Grande do Sul. Usar=NFe_SVAN_H ;Usar=NFe_SVRS_H Como deverá ficar no dia 02/09/2019 para ser salvo na mesma pasta do EXE da sua aplicação: [NFe_PA_P] Usar=NFe_SVRS_P [NFe_PA_H] Usar=NFe_SVRS_H Observação: Para aqueles que não tem Clientes contribuintes no Pará não precisam se preocuparem com essas alterações. A partir do dia 02/09/2019 os fontes do repositório estarão com as mudanças e o ACBrMonitorPlus também. Lembrando que o procedimento de copiar o arquivo INI com a alteração para a pasta do EXE da sua aplicação se faz necessário caso não seja possível em tempo hábil disponibilizar uma nova versão EXE em seus clientes.
    2 pontos
  6. Boa tarde, Já tentou da seguinte forma: ACBrNFe1.DANFE.Cancelada := True; ACBrNFe1.NotasFiscais.Items[0].EnviarEmail(Para, Assunto, .....); ACBrNFe1.DANFE.Cancelada := False;
    2 pontos
  7. Foi isso mesmo Ricardo, obrigado pela dica..!!
    2 pontos
  8. Parece que sim. . Vou tentar entrar em contato com o provedor e ver se eles tem alguma explicação de como gerar o link..
    2 pontos
  9. Olá pessoal, Descobri o problema, em um outro tópico eu disse que estava com problema no arquivo ent.txt, me sugeriram fazer alguns procedimentos e um deles foi esse: "O Parâmetro de Impressora, passe aspas duplas duas vezes (,"",) para abrir e encerrar o parâmetro, ou não passe nada deixe vazio: (,,)" Então fiz de com a última orientação, deixar vazio: NFe.EnviarNFe(c:\sitex\nfce\arquivos\Assinados\26190822038686000142650100000001141000001150-nfe.xml, 94,0,1,,1,0,0) Alterei pra fazer como antes: "NFe.EnviarNFe(c:\sitex\nfce\arquivos\Assinados\26190822038686000142650100000001141000001150-nfe.xml, 94,0,1,",1,0,0)" o layout do arquivo voltou completo, desculpem-me pelo incômodo, favor fechar o tópico.
    2 pontos
  10. Daniel, funcionou perfeitamente. Muito obrigado pela atenção.
    2 pontos
  11. Quer se concentrar e escrever aquele código fonte que parece um poema ? Então pegue seus fones de ouvido, ligue uma musica (instrumental), e se desligue do mundo externo... ... sou fã dessa banda (pouco conhecida), e que achei graças às sugestões do Spotify...
    1 ponto
  12. Bom dia, Nas minhas análises concluí que o acbrValidador está fazendo algo errado ao conferir o prefixo de GTINs. Ao submetermos o código 0606529657802, o Acbr dá como prefixo inválido, mas não é. No portal nacional de notas eletrônicas, menu "Documentos -> Diversos -> Tabela Prefixo GS1" temos uma planilha com a listagem dos prefixos válidos, bem como uma planilha que demonstra como se extrai o prefixo de um código. Texto copiado da planilha/norma Como Identificar o "Prefixo GS1" O GTIN pode possuir 8, 12, 13 ou 14 algarismos, e segue abaixo uma forma prática de identificar o "Prefixo GS1": - Normalizar o tamanho do campo em 14 posições numéricas, com zeros não significativos; - Se primeiras 6 posições = Zeros ==> GTIN-8 -Prefixo GS1: posições 7 a 9 do GTIN normalizado; - Se primeiras 6 posições <> Zeros -Prefixo GS1: posições 2 a 4 do GTIN normalizado; Geração do prefixo segundo normas acima: - GTIN normlizado: 00606529657802 - posições 2 a 4 do GTIN normalizado: 060 -> prefixo válido Já o AcbrValidador gera um prefixo = 606 e, nesse caso seria um prefixo inválido. Mas esse cálculo do Acbr está incorreto, na minha opinião. Sugestão para correção (.pas corrigida em anexo) Trocar a rotina: if (StrToInt(Copy(CodigoNormalizado, 1, 6)) = 0) then //gtin8 sPrefixo := copy(CodigoNormalizado, 7, 3) else if StrToInt(Copy(CodigoNormalizado, 1, 2)) = 0 then //gtin12 sPrefixo := copy(CodigoNormalizado, 3, 3) else sPrefixo := copy(CodigoNormalizado, 2, 3); Por esta: if (StrToInt(Copy(CodigoNormalizado, 1, 6)) = 0) then //gtin8 sPrefixo := copy(CodigoNormalizado, 7, 3) else sPrefixo := copy(CodigoNormalizado, 2, 3); Obrigado ACBrValidador.pas
    1 ponto
  13. Bom dia, detectei um detalhe na impressão do evento (Fortes - TfrlDANFeEventoRLRetrato), dependendo do tamanho da justificativa, ela é cortada pelo fato do componente ser do tipo TRLLabel. Alterei o fonte, apenas no Lazarus (.pas e .lfm), substituindo o componente de rllJustificativa: TRLLabel para rlmJustificativa: TRLMemo Segue abaixo imagens do antes e depois... Segue em anexo os fontes alterados para análise. OBS: acho que esse ajuste pode resolver outro problema que vi no fonte, quando o tipo do evento é "cancelamento por substituição", ele insere uma quebra de linha para exibir abaixo o documento referenciado, porém imagino que esta segunda linha não esteja aparecendo. (ainda não implementamos este evento...) Att Ricardo ACBrNFeDANFeEventoRLRetrato.lfm ACBrNFeDANFeEventoRLRetrato.pas
    1 ponto
  14. Boa tarde! Realizamos uma pequena alteração para possibilitar o envio de requisições GET com WinHTTP. A motivação desta alteração é acessar endereços HTTPS com autenticação SSL/TLS. Segue units alteradas para análise. Obrigado. ACBrWinHTTPReqResp.pas ACBrWinReqRespClass.pas
    1 ponto
  15. Tópico movido para a área do SAC, para que o SLA de respostas seja considerado
    1 ponto
  16. Esse parece ser o site do real fabricante... http://www.zjiang.com/en/init.php/service/manual Notei que várias outras marcas, distribuem esse modelo... vou tentar implementar uma classe a anexo aqui...
    1 ponto
  17. Ao rodar o exemplo percebi que ele não exibia o que era enviado pelo Cliente, e ao verificar descobri que o evento onRecebeDados esta com a assinatura diferente ( provavel o exemplo foi feito em uma versão ainda inicial ) procedure ACBrTCPServer1RecebeDados(const TCPBlockSocket: TTCPBlockSocket; Recebido: String; var Enviar: String); onde deveria ser procedure ACBrTCPServer1RecebeDados(const TCPBlockSocket: TTCPBlockSocket; const Recebido: AnsiString; var Enviar: AnsiString);
    1 ponto
  18. Talvez você possa usar as Observações... https://acbr.sourceforge.io/ACBrMonitor/CHQSetObservcao.html
    1 ponto
  19. Bom dia. Verifique se esta passando na sessão Conta a tag DigitoVerificadorAgenciaConta. Verifique se esta passando na sessão TituloXXX a tag ValorMoraJuros. Att.
    1 ponto
  20. Olá, Tente esse comando: PostMessage(frm_pdv.Handle, WM_CLOSE, 0, 0); Abraço
    1 ponto
  21. Boa tarde pessoal, Talvez já saibam, mas de qualquer forma lá vai, li que a partir do dia 2 de setembro as Notas Fiscais Eletrônicas (NF-e) e Notas Fiscais Avulsas Eletrônicas (NFA-e), emitidas por contribuintes do Pará, passarão a ser autorizadas por meio da SEFAZ Virtual do Rio Grande do Sul (SVRS). Fonte: http://www.folhadoprogresso.com.br/em-setembro-sefa-do-para-muda-ambiente-de-autorizacao-de-nf-e-e-nfa-e/ As novas URL's serão: SEFA Virtual Rio Grande do Sul (SVRS) – Produção Serviços Versão URL Nfelnutilização 4,00 https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx NfeConsultaProctoc 4,00 https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeNfeConsulta4.asmx NfeStatusServico 4,00 https://nfe.svrs.rs.gov.br/ws/NfeStatudServivo/NfeStatusServico4.asmx NfeConsultaCadastro 4,00 https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro4.asmx RecepcaoEvento 4,00 https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx NFeAutozicao 4,00 https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao4.asmx NFrRetAutorização 4,00 https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
    1 ponto
  22. Aqui esta teu erro... vc chamou 3x o método Add... revisa isso ai... Att Ricardo
    1 ponto
  23. Sistema Nota Fiscal Eletrônica Nota Técnica 2019.001 Criação e Atualização de Regras de Validação Versão 1.20 – Agosto de 2019:  Remoção da Regra 1C03-10  Correção na Descrição da Regra de Validação N12-90  Torna facultativas as regras N18-10 e N18-20  Criado novo Valor para o Campo N18 Fonte: http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=tW+YMyk/50s=
    1 ponto
  24. Bom Dia Suas sugestões foram disponibilizadas nos fontes do Projeto ACBr. Obrigado pela contribuição!
    1 ponto
  25. Bom dia Luciano. Conforme pode ser acompanhado nas postagens anteriores, houveram questões importantes que ficaram pendentes, as quais impedem a inclusão destes fontes ao Projeto ACBr. Att.
    1 ponto
  26. @Felipe E. Resende Mesquita que site show de bola. Valew pelas informações Obrigado
    1 ponto
  27. Está certo, acabei de testar aqui com a tag pRedBC zerada e validou, no PR.
    1 ponto
  28. Entao Angelice, eu estou enviando da forma abaixo: Foi a unica forma q encontrei para as notas serem aprovadas... Assim q virar o mes o contador vai receber esses xml´s e ai vamos ver no que da... Marcos, posta ai como esta a tag cst51 do seu xml por favor, sem o 0.01% q vc coloca..
    1 ponto
  29. Bom dia, Daniel, realizei o procedimento indicado, estou acompanhando diariamente o cliente e até o presente momento o problema não voltou a ocorrer. Grato Luciano
    1 ponto
  30. Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
    1 ponto
  31. 1 ponto
  32. RESOLVIDO Tratava-se do código do município... O exemplo diz.... // Para o provedor ISS.NET em ambiente de Homologação // o Codigo do Municipio tem que ser '999' desta forma o acbr acabava selecionando o provedor incorreto..
    1 ponto
  33. Boa tarde. Obrigada pela análise, adicionado para validação. Att.
    1 ponto
  34. Boa noite Italo, Era isso mesmo, apos alterar o código da aplicação para não gerar o XML novamente, e carregar o XML de autorização a tarja de cancelamento foi atribuída normalmente. Muito Obrigado.
    1 ponto
  35. 1 ponto
  36. Atualizei o Monitor e Realmente Resolveu. Pode Fechar Topico Obrigado.
    1 ponto
  37. Bom dia, Andremomb. Veja o link abaixo: https://www.oobj.com.br/bc/article/orientações-de-preenchimento-de-campos-do-layout-do-cf-e-sat-481.html
    1 ponto
  38. Boa noite, É impressão minha ou os valores de prestador e nota estão criptografados? Ai o bicho pega.
    1 ponto
  39. Bom dia, Não encontrei nenhum outro fórum compatível, logo me desculpem se postei em local impróprio. No uso do componente ACBrPonto precisei implementar o processamento do arquivo da AFDT também, visto que posso importar este arquivo com as batidas tratadas. Segue em anexo caso queiram adicionar ao projeto. ACBrPonto.pas
    1 ponto
  40. Usando o Editor de Política de Grupo Local (gpedit.msc), alterei a seguinte propriedade: Política Computador Local > Configuração do Computador > Modelos Administrativos > Sistema > Gerenciamento de Comunicação da Internet > Desativar Atualização Automática de Certificados Raiz. Defini esta regra como "Habilitado". Em seguida no prompt de comando executei o seguinte comando: gpupdate /force Estamos monitorando a 10 dias e não voltou a ocorrer.
    1 ponto
  41. Boa tarde a todos, Já esta disponível em nossa biblioteca a Nota Técnica 2019/001 que trata sobre novas regras de validação. Resumo da NT: · Dificultar utilização de código de segurança fraco · Melhorar o controle de documentos referenciados e da identificação do destinatário · Descrever benefícios fiscais e informações da tributação do ICMS com mais precisão · Criação de valor máximo para a base de cálculo do ICMS, por unidade federada · Melhor gerenciamento de informações sobre o destinatário, tanto no serviço de autorização de NF-e quanto no serviço de registro de EPEC Datas previstas para entrada em vigor: 01/07/2019 - Ambiente de Homologação; 02/09/2019 - Ambiente de Produção. Alterações no componente: Nenhuma, visto que essa NT trata de novas regras de validação a serem implementadas pelas SEFAZ-Autorizadoras. Novas Regras de Validação: Criada a Regra de Validação B03-10, para dificultar a utilização de um código de segurança fraco, ou seja, o valor de cNF não vai poder ser igual ao valor de nNF e sim um numero aleatório. Criadas regras de validação a documentos referenciados:  Regra de Validação BA10-40 foi alterada, possibilitando a utilização do CNPJ 8 (somente os 8 primeiros dígitos) com o objetivo de identificar que a nota foi emitida pelo mesmo contribuinte, a critério da unidade federada. Criada a Regra de Validação BA10-50, exigindo que uma contranota de produtor rural somente possa referenciar uma nota emitida por outro produtor rural, a critério da unidade federada. Criada a Regra de Validação BA20-20, impedindo que seja referenciado um documento fiscal de uso exclusivo para operações internas em uma operação destinada a outra unidade federada ou para o exterior. Criada a Regra de Validação BA20-30, impedindo referência a um Cupom Fiscal, a critério da unidade federada. Criadas regras de identificação do destinatário: Criada a Regra de Validação E03a-30, impedindo o uso simultâneo de IE e de identificação de estrangeiro para o destinatário. Criada a Regra de Validação E14-30, impedindo informação de país de destino “Brasil” em operações destinadas ao estrangeiro. Criada a Regra de Validação E16a-40, exigindo a indicação de “operação com consumidor final” quando se indica que a operação é destinada a não contribuinte. Criadas regras de validação tornando obrigatória a informação do Motivo da Desoneração e do Valor do ICMS desonerado, caso seja informado o Código do Benefício Fiscal: Criada a Regra de Validação I05f-10, impedindo a informação de um código de benefício fiscal juntamente com um CST que não prevê benefício fiscal, a critério da unidade federada. Criada a Regra de Validação I05f-20, impedindo a informação de um código de benefício fiscal que não corresponda ao CST utilizado, a critério da unidade federada. Criada a Regra de Validação I05f-30, exigindo que seja informado o valor do ICMS desonerado ou o motivo de desoneração quando se utiliza um código de benefício fiscal, a critério da unidade federada. Criada a Regra de Validação N07-10, exigindo informações sobre o diferimento quando se utiliza um CST de diferimento, a critério da unidade federada. Criada a Regra de Validação N12-84, exigindo o código de benefício fiscal quando se utiliza um CST de benefício fiscal, a critério da unidade federada. Criada a Regra de Validação N12-88, exigindo que o CST corresponda ao tipo de código de benefício fiscal informado, a critério da unidade federada. Criada a Regra de Validação N12-90, exigindo valor do ICMS desonerado e o motivo da desoneração, a critério da unidade federada. Criada a Regra de Validação N18-10, exigindo a informação do percentual da margem de valor Adicionado do ICMS ST Informada caso a modalidade de determinação da BC da ST seja MVA, a critério da unidade federada. Criada a Regra de Validação N18-20, não permitindo informação do percentual da margem de valor Adicionado do ICMS ST Informada caso a modalidade de determinação da BC da ST não for MVA, a critério da unidade federada. Criada a Regra de Validação W03-20, impedindo a informação de um valor de Base de Cálculo superior ao valor máximo estabelecido pela respectiva SEFAZ. Emitente: Criada a Regra de Validação 1C03-10, impedindo a informação de Razão Social do emitente diferente da existente no cadastro da SEFAZ. Destinatário: Criadas as Regras de Validação 5E17-10, 5E17-20, 5E1730, 5E17-40, 5E17-43, 5E17-46, 5E17-50, 5E17-60, 5E17-63, 5E17-70 e 5E17-80, para verificar se o destinatário está sendo informado corretamente ou se está em situação que o impeça de constar na NF-e como destinatário na operação com mercadoria ou prestação de serviços.  Serviço Autorização EPEC: Criadas as Regras de Validação 6P31-10, 6P31-20, 6P31-30, 6P31-40, 6P31-43, 6P31-46, 6P31-50, 6P31-60 e 6P31-63, para verificar se o destinatário está sendo informado corretamente ou se está em situação que o impeça de constar na NF-e como destinatário na operação com mercadoria ou prestação de serviços.
    1 ponto
  42. Obrigado @Italo Jurisato Junior... ficou um ótimo resumo
    1 ponto
  43. 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
    1 ponto
  44. Tive o mesmo problema com uma dll que migrei do Delphi 7 para o Delphi XE10. Resolvi incluindo Vcl no parâmetro "Unit scope names" em Project > Options > Delphi Compiler Antes: Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap Depois: Vcl;Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap
    1 ponto
×
×
  • 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.

The popup will be closed in 10 segundos...