Ir para conteúdo
  • Cadastre-se

Augusto Knirsch

Membros
  • Total de ítens

    43
  • Registro em

  • Última visita

Tudo que Augusto Knirsch postou

  1. @Fabrício G. Araújo Normalmente quando ocorre esse problema é atualização do windows. Tenta logar com o certificado nesse link https://cav.receita.fazenda.gov.br/autenticacao/login talvez o problema seja o próprio certificado.
  2. Bom dia Fabrício, Utilize as seguintes configurações: FACBrNFe.Configuracoes.Geral.SSLLib := libWinCrypt; FACBrNFe.Configuracoes.Geral.SSLCryptLib := cryWinCrypt; FACBrNFe.Configuracoes.Geral.SSLHttpLib := httpWinHttp; FACBrNFe.Configuracoes.Geral.SSLXmlSignLib := xsMsXml; O único porém é que o windows realmente precisa ser atualizado, mas essa configuração serve até mesmo para os certificados A3. E verifique se as dlls da pasta: ACBr\DLLs\OpenSSL\1.0.2.13\x86 encontram-se atualizadas junto ao seu executável.
  3. Bom Dia Aldinei, Normalemnte ocorre erro nesse pacote quando o FortesReport não foi instalado. Segue o link: https://github.com/fortesinformatica/fortesreport-ce/trunk
  4. Boa Tarde Italo, Refiz os testes com a alteração no SVN e parece funcionar perfeitamente, obrigado pela atenção!
  5. Olá, gostaria de sugerir uma alteração no código. Quando tento imprimir uma nota de serviço utilizando o servidor ISSNet, não está aparecendo a hora no DANFe. Fiz a alteração que resolveu o problema, gostaria de envia-la para analise e possível inclusão no SVN. Segue em anexo a unit pnfsNFSeR.pas. O campo DataEmissao retorna o seguinte formado: <DataEmissao>2018-03-01T09:17:24</DataEmissao> Contemplando a hora, não sei se houve algum motivo especifico para buscar somente a data, mas até agora ocorreu tudo bem com os meus testes. Dês de já agradeço a atenção! pnfsNFSeR.pas
  6. O ACBr já disponibiliza essa funcionalidade, basta utilizar o componente ACBrCEP e alterar a propriedade WebService para wsCorreios. O componente irá utilizar a mesma URL que você usou no seu demo.
  7. Sim, aparentemente a receita alterou a estrutura da página. Não existe mais o elemento principal. Solução: No Evento WebBrowserDocumentComplete você utilizava o seguinte código, ou algo similar: Elem := GetElementByid(WebBrowser.Document, 'principal') as IHTMLElement; Terá que substituir por: Elem := GetElementByClassName(WebBrowser.Document, 'conteudo') as IHTMLElement; E declarar a classe GetElementByClassName: function GetElementByClassName(const Doc: IDispatch; const ClassName: string): IDispatch; var Document: IHTMLDocument2; Body: IHTMLElement2; Tags: IHTMLElementCollection; Tag: IHTMLElement; I: Integer; begin Result := nil; if not Supports(Doc, IHTMLDocument2, Document) then raise Exception.Create('Documento HTML inválido'); if not Supports(Document.body, IHTMLElement2, Body) then raise Exception.Create('BODY não encontrado'); Tags := Body.getElementsByTagName('*'); for I := 0 to Pred(Tags.length) do begin Tag := Tags.item(I, EmptyParam) as IHTMLElement; if (Tag._className <> '') then begin if AnsiSameText(Tag._className, ClassName) then begin Result := Tag; Break; end; end; end; end; Talvez precise de adaptações para o seu código.
  8. Bom dia, O Site https://receitaws.com.br/ disponibiliza uma API gratuita para consulta de CNPJ (O mesmo também tem a API paga, que tem algumas vantagens em relação a gratuita). Basta utilizar a URL https://www.receitaws.com.br/v1/cnpj/[CNPJ] que ele irá retornar um json. O ACBr teria interesse em adaptar o componente para a API? Se sim podemos faze-la.
  9. @Juliomar Marchetti O que eu sugeri foi ao invés de usar Exit caso a tentativa de login com o FTP não ocorra, que o componente use Exception.Create. De um dif com o arquivo que postei e o do repositório. É apenas para ele retornar uma exceção caso ocorra algum problema no login, como por exemplo o host estiver fora do ar. Da forma que está hoje com o Exit ele simplesmente sai do método e não retorna nada... O código RecebeArquivoFTP que postei foi para que se alguém quisesse reproduzir o problema. Mas mesmo assim muito obrigado pela resposta!
  10. Certo! Assim que possível adicionarei a opção do DANFe Condensado no DANFe já existente para possível inclusão ao projeto. Não foi feito assim logo de inicio pois não queríamos ter que mudar o código toda vez que atualizamos o ACBr.
  11. A principal vantagem seria a grande economia de papel... Observe a imagem. Meus fontes do ACBrDANFCeFortesFr estavam desatualizados. Segue em anexo os fontes atualizados. ACBrDANFCeFortesFr.dfm ACBrDANFCeFortesFr.pas ACBrDANFCeFortesFrCondensado.dfm ACBrDANFCeFortesFrCondensado.pas
  12. Boa Tarde! Gostaria de sugerir a inclusão de um novo DANFE para a NFC-e. Ele é mais compacto e economiza muito papel. Na chamada da impressão basta atribuir true para a propriedade DANFECondensado caso seja o DANFE desejado. FACBrDANFe.DANFECondensado := True; Peço desculpas por qualquer erro, ainda sou iniciante na programação... Segue os arquivos modificados e uma imagem do mesmo. ACBrDANFCeFortesFr.pas ACBrDANFCeFortesFrCondensado.pas ACBrDANFCeFortesFrCondensado.dfm
  13. Boa Tarde! Me deparei com a seguinte situação, preciso baixar alguns arquivos de um host FTP, porém quando a primeira opção estiver offline gostaria que ele tentasse baixar do segundo host, então escrevi a seguinte função. function RecebeArquivoFTP(const aArquivoFTP, aArquivoLocal: String; aHookMonitor: TAcbrDownloadHookMonitor = nil): Boolean; var ArquivoLocal: String; CaminhoDestino: String; ArquivoDestino: String; FACBrDownload: TACBrDownload; i: Integer; begin Result := False; FACBrDownload := TACBrDownload.Create(nil); try for i := 0 to Length(FTP_HOST) do begin try FACBrDownload.Protocolo := protFTP; FACBrDownload.FTP.FtpHost := FTP_HOST[i]; //constante, array de strings com as informações do hosts. FACBrDownload.FTP.FtpPort := FTP_PORT[i]; FACBrDownload.FTP.FtpUser := FTP_USER[i]; FACBrDownload.FTP.FtpPass := FTP_PASSWORD[i]; FACBrDownload.OnHookMonitor := aHookMonitor; ArquivoLocal := PadraoBarrasWindows(aArquivoLocal); //função para adequar o padrao das barras. CaminhoDestino := TPath.GetDirectoryName(ArquivoLocal); ArquivoDestino := TPath.GetFileName(ArquivoLocal); if not(DirectoryExists(ExtractFilePath(ArquivoLocal))) then ForceDirectories(ExtractFilePath(ArquivoLocal)); if (FileExists(ArquivoLocal +'.part')) then DeleteFile(ArquivoLocal +'.part'); if (FileExists(ArquivoLocal)) then DeleteFile(ArquivoLocal); FACBrDownload.DownloadDest := CaminhoDestino; FACBrDownload.DownloadNomeArq := aArquivoFTP; FACBrDownload.DownloadUrl := IncluirSeparadorDiretorio(FACBrDownload.FTP.FtpHost, '/') + aArquivoFTP; FACBrDownload.StartDownload; Result := (FACBrDownload.DownloadStatus = stDownload); if (Result) then Break; except // Não levanta a exceção, apenas tenta na próxima iteração end; end; finally FACBrDownload.Free; end; end; Porém, se por algum motivo ocorre alguma exceção na tentativa de login dentro do ACBr ele simplesmente da um exit como mostra o código abaixo. // FTP Login if not fFTPSend.Login then Exit; Minha sugestão seria ele criar uma exceção caso ocorresse algum problema no login: // FTP Login if not fFTPSend.Login then raise Exception.Create('Não foi possível efetuar o login!'); Peço desculpas por qualquer inconveniente ou confusão no código pois estou iniciando na programação... Segue em anexo o arquivo com a alteração. ACBrFTPDownload.pas
  14. Acabei de testar o código do Pedro Henrique Oliveira e esta funcionando. Obrigado Pedro!
  15. Bom Dia, ACBrDownload esta funcionando. Verifique o padrão de barras do host que seus arquivos estão hospedados, geralmente usam linux dê uma conferida. Verifique também as letras maiúsculas e minusculas. Quando acontece isso comigo geralmente é uma dessas coisas o problema.
  16. Desculpem reabrir o tópico, mas eu estava com esse problema. Aparentemente estava tudo configurado certo porém o componente baixava o arquivo com 0 byte. Eu estava errando no padrão de barras, pois esses servidores que contratamos (ex: HostGator) são linux, então o padrão de barras deve ser o do linux, e outra eles são case sensitive. Então fica a dica para alguém que tiver passando pelo mesmo problema, verifique o padrão das barras e as letras maiúsculas e minusculas.
×
×
  • 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.