Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 23-03-2017 em todas as áreas
-
Boa noite a todos, Desculpe pela demora, André já enviei para o repositório. Muito obrigado pela colaboração.2 pontos
-
2 pontos
-
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ções1 ponto
-
Humm.. pode ser algo com o controle de Energia de USB do Windows http://helpdeskgeek.com/windows-xp-tips/prevent-windows-from-powering-off-usb-device/1 ponto
-
Com certeza mas até agora não achei, desinstalei todo o acbr instalei novamente e nova pasta e o erro persiste. Galera, resolvi, na verdade desde ontem não mexi mais no projeto, agora que retomei achei outra rotina que tbm usava o componente e ele sim estava usando capicom ainda , falta de atenção e paciência para resolver. Agradeço a todos.1 ponto
-
Use a WinCrypt... evite as libs da CAPICOM AcbreNFe1.Configuracoes.Geral.SSLLib := libWinCrypt;1 ponto
-
Boa tarde você está com os fontes bem desatualizados! faça revert e atualize o svn e depois use o instalador! os componentes todos foram padronizados ícones do projeto.1 ponto
-
Juliomar e demais, O problema parece ser o fato do Gerador de Relatórios estar memorizando o tamanho da página do último relatório emitido, correto ? Qual o Gerador de Relatórios ? (Fortes ?) Como posso reproduzir o problema ? ( de preferência usando os Demo do ACBr..)1 ponto
-
Boa tarde, o André está certo, abaixo: 22/03/2017 15:55:02 - 22/03/2017 15:55:02 - NFe.ImprimirEvento(1101103517030014435100017655000000045508196936626001-procEventoNFe.xml,35170300144351000176550000000455081969366260-nfe.XML) 22/03/2017 15:55:03 - 22/03/2017 15:55:03 - OK: Evento Impresso com sucesso 22/03/2017 15:55:09 - 22/03/2017 15:55:09 - NFe.EnviarEmailEvento([email protected],1101103517030014435100017655000000045508196936626001-procEventoNFe.xml,35170300144351000176550000000455081969366260-nfe.xml,1) 22/03/2017 15:55:09 - Email: Iniciando processo de envio. 22/03/2017 15:55:09 - Email: Configurando o cabeçalho do e-mail. 22/03/2017 15:55:09 - Email: Logando no servidor de e-mail. 22/03/2017 15:55:14 - Email: Iniciando os envios. 22/03/2017 15:55:14 - Email: Processando lista de destinatários. 22/03/2017 15:55:14 - Email: Enviando dados. 22/03/2017 15:55:16 - Email: Fazendo Logout no servidor de e-mail. 22/03/2017 15:55:16 - Email: Enviado com sucesso 22/03/2017 15:55:16 - 22/03/2017 15:55:16 - OK: Email enviado com sucesso Sds, Ricardo.1 ponto
-
O CAMEX é o órgão que regulamenta toda a tabela NCM. http://www.camex.gov.br/legislacao/interna/id/1643 A EX é um complemento (exceção, melhor dizendo) ao NCM e faz parte da classificação do produto. Sendo assim, deve ser informado em todas as notas caso o item esteja classificado na exceção. Por serem poucos NCM que tem EX, o campo não é obrigatório, então não haverá rejeição se não for informada.1 ponto
-
Olá Daniel, td bem ? Obrigado pela ajuda. Atualizei o ACBr com a versão 13056 e fiz a alteração que você sugeriu. Fiz testes somente usando FPC em Linux e Win, funcionou normalmente. Não fiz testes no Delphi Só uma duvida, o SP.ini será disponibilizado no repositório ou devo mante-lo localmente ? Caso deseje colocar no repositório segue o SP.ini alterado. Abraços, SP.ini1 ponto
-
Segue em anexo conforme solicitado. Se achar mais fácil, incluímos um arquivo Patch, que deve ser colocado na raiz da pasta Fontes para que o SVN encontre os arquivos. Não temos os Delphi's intermediários (2009, por exemplo), mas estas modificações compilaram no Delphi 7 e no Delphi 10.1 Berlin. Apenas para o arquivo do SEF2 é que foi incluída uma diretiva, por causa do TDate ser declarado no Controls no Delphi 7. limpeza_uses.patch ACBrCTeDACTEFR.pas ACBrMDFeDAMDFEFR.pas ACBrMDFeDAMDFEFRDM.pas ACBrNFeDANFEFR.pas ACBrNFeDANFEFRDM.pas ACBrSEF2_BlocoE.pas1 ponto
-
Resolvido o problema da ultima linha de compilação do ACBR monitor plus @echo off setlocal EnableDelayedExpansion echo. echo. UTILITARIO PARA BAIXAR E COMPILAR O ACBR MONITOR PLUS echo. echo. PARA PROSSEGUIR VOCE PRECISARA: echo. - GIT INSTALADO echo. - SVN COM COMMAND LINE TOOLS echo. - LAZARUS 1.6 INSTALADO EM C:\LAZARUS echo. PAUSE set lazarus_home=c:\lazarus set path=%path%;%lazarus_home% set opts=--build-all --quiet --lazarusdir=%lazarus_home% set projects=^ fortesreport-ce\Packages\frce.lpk,^ powerpdf\pack_powerpdf.lpk,^ acbr\Pacotes\Lazarus\synapse\laz_synapse.lpk,^ acbr\Pacotes\Lazarus\ACBrComum\ACBrComum.lpk,^ acbr\Pacotes\Lazarus\ACBrDiversos\ACBrDiversos.lpk,^ acbr\Pacotes\Lazarus\PCNComum\PCNComum.lpk,^ acbr\Pacotes\Lazarus\ACBrOpenSSL\ACBrOpenSSL.lpk,^ acbr\Pacotes\Lazarus\ACBrSerial\ACBrSerial.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrTXTComum.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrConvenio115\ACBr_Convenio115.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrLFD\ACBr_LFD.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrPAF\ACBr_PAF.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrSEF2\ACBr_SEF2.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrSintegra\ACBr_Sintegra.lpk,^ acbr\Pacotes\Lazarus\ACBrTXT\ACBrSPED\ACBr_SPED.lpk,^ acbr\Pacotes\Lazarus\ACBrTCP\ACBrTCP.lpk,^ acbr\Pacotes\Lazarus\ACBrTEFD\ACBr_TEFD.lpk,^ acbr\Pacotes\Lazarus\ACBrBoleto\ACBr_Boleto.lpk,^ acbr\Pacotes\Lazarus\ACBrBoleto\FC\Fortes\ACBr_BoletoFC_Fortes.lpk,^ acbr\Pacotes\Lazarus\ACBrBoleto\FC\Laz\ACBr_BoletoFC_LazReport.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrDFeComum.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\ACBr_NFe.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\ACBr_CTe.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\ACBr_GNRE.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\ACBr_MDFe.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrNFSe\ACBr_NFSe.lpk,^ acbr\Pacotes\Lazarus\ACBrSAT\ACBr_SAT.lpk,^ acbr\Pacotes\Lazarus\ACBrSAT\Extrato\EscPos\ACBr_SAT_Extrato_ESCPOS.lpk,^ acbr\Pacotes\Lazarus\ACBrSAT\Extrato\Fortes\ACBr_SAT_Extrato_Fortes.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrBlocoX\ACBr_BlocoX.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\DAMDFE\Fortes\ACBr_MDFe_DAMDFeRL.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\GNRE\Fortes\ACBr_GNREGuiaRL.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrGNRE\GNRE\Laz\ACBr_GNREGuiaLazReport.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\DACTE\Fortes\ACBr_CTe_DACTeRL.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFCe\Fortes\ACBr_NFCe_DanfeRL.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFe\Fortes\ACBr_NFe_DanfeRL.lpk,^ acbr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFCe\EscPos\ACBr_NFe_DanfeESCPOS.lpk,^ "--build-mode=release acbr\Projetos\ACBrMonitorPLUS\Lazarus\ACBrMonitor.lpi" :init0 ( echo. choice /c SN /n /m "Deseja fazer o checkout dos fontes (apaga e baixa) ? [S/N]" if %errorlevel% EQU 1 goto :checkout if %errorlevel% EQU 2 goto :make ) :checkout ( rd /s /q fortesreport-ce git clone https://github.com/fortesinformatica/fortesreport-ce.git if %errorlevel% NEQ 0 goto :error rd /s /q powerpdf svn co svn://svn.code.sf.net/p/lazarus-ccr/svn/components/powerpdf powerpdf if %errorlevel% NEQ 0 goto :error rd /s /q acbr svn co svn://svn.code.sf.net/p/acbr/code/trunk2 acbr if %errorlevel% NEQ 0 goto :error ) :make ( for %%a in (%projects%) do ( call :compile %%~a if !RESULT! NEQ 0 goto :error ) ) echo. OK goto :eof :compile ( lazbuild %opts% %* set RESULT=%ERRORLEVEL% EXIT /B ) :error ( echo. FALHOU ! goto :EOF )1 ponto
-
Olá Pessoal O problema está no ACBrNFSeWebServices.pas nas linhas abaixo. {$IFDEF FPC} Texto := '<' + ENCODING_UTF8 + '>'; // Envelope já está sendo montado em UTF8 {$ELSE} Texto := ''; // Isso forá a conversão para UTF8, antes do envio {$ENDIF} Desta forma os XMLs ficam assim: <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> Duplicando o cabeçalho. Assim fiz as modificações abaixo {$IFDEF FPC} if Provedor <> proSP then Texto := '<' + ENCODING_UTF8 + '>'; // Envelope já está sendo montado em UTF8 {$ELSE} Texto := ''; // Isso forá a conversão para UTF8, antes do envio {$ENDIF} Fiz apenas para o provedor de SP pois não sei se outros provedores precisam desta linha. Também adicionei esta linha somente para o provedor de SP, pois o manual informa que as aspas devem ser substituidas por " // Alterações no conteudo de DadosMsg especificas para alguns provedores case FProvedor of proSP : DadosMsg:= StringReplace(DadosMsg, '"', '"', [rfReplaceAll]); Estou enviando o arquivo ACBrNFSeWebServices.pas com as correções Estou usando a revisão 13012 do ACBr, o ambiente que usei para testes foi FPC 3.0.2+Lazarus 1.6.4+Linux CentOs7 64 Abraços, ACBrNFSeWebServices.pas1 ponto
-
Boa tarde a todos, Com a versão 4.00 da NF-e/NFC-e a questão do troco vai esta resolvida, pois teremos uma tag para informarmos o troco. Logo a somatória dos tipos de pagamento menos o valor total da nota é igual ao troco.1 ponto
-
Iniciado ACBrCTe. Para converter o INI em objetos java vou fazer conforme aqui: http://www.juliomarmarchetti.com.br/2014/05/ct-e-200-campos-para-criar-usando.html Isso para versão 2.00 Alguém tem o INI da versão 3.00? Vlw.1 ponto
-
Colega, já que resolveu, seria bom então postar a solução para ajudar a outros que tiverem a mesma dúvida.1 ponto