Ir para conteúdo
  • Cadastre-se

Valdir Dill

Membros Pro
  • Total de ítens

    962
  • Registro em

  • Última visita

  • Days Won

    5

Tudo que Valdir Dill postou

  1. Obrigado pelo retorno Daniel, Me desculpe a ignorância, rs...Mas se fosse problema de .dll/TLS, não teria que problema logo na primeira tentativa, ou seja, quando o .txt ainda não existe? Se não existir arquivo de cache gravado na pasta da aplicação, o problema não ocorre e toda consulta ao WS é feita normalmente, trazendo o retorno da lista completa das cidades UF consultada. Obrigado.
  2. Bom dia, Fiz alguns testes e estou tendo um probleminha com a nova opção de cache. Não sei se de repente falta eu configurar/tratar algo... No primeiro teste, ou seja, quando o arquivo de cache (ACBrIBGE.txt) ainda não existe, consulto cidades (ACBrIBGE1.BuscarPorNome) de mais de uma UF sem fechar a aplicação. Ele vai me trazendo os resultados tudo certinho e também vai incluindo/salvando a lista das cidades de todas as UFs consultadas no arquivo de cache. Porém, se, ao iniciar uma nova consulta, já existir o ACBrIBGE.txt e, na lista do arquivo não existir a UF que vou consultar, aí dá erro "UF XX não encontrada". Obrigado!
  3. Bom dia, Que tal essa função? function GetIBGE(VUF, VCidade : String) : String; Var VConteudo : TStringList; I : Integer; VAcbrIBGE : TACBRIBGE; Const VURLBase = 'https://cidades.ibge.gov.br/brasil/'; begin VConteudo := TStringList.Create; VAcbrIBGE := TACBRIBGE.Create(nil); try VCidade := TiraAcentos(VCidade); VCidade := StringReplace(VCidade, ' ', '-', [rfReplaceAll]); //troca espaços por hífen para não dar erro no site na url final. VAcbrIBGE.HTTPGet(VURLBase + lowerCase(VUF) + '/' + lowerCase(VCidade) + '/panorama'); VConteudo.text := VAcbrIBGE.RespHTTP.Text; for I := 0 to VConteudo.Count-1 do begin if (trim(VConteudo[ i ] ) = 'Código do Município') and (pos('class="topo__valor">', VConteudo[I+2]) > 0) then result := trim(VConteudo[I+3]); end; finally freeAndNil(VConteudo); freeAndNil(VAcbrIBGE); end; end; Obs.: aceito sugestões para melhorar. Abraços!
  4. Boa noite, Vou postar nesse tópico porque acho que tem relação. Estou com o "Erro: Falha ao localizar o nó de Assinatura". Estou usando o seguinte trio e o certificado é A3 com cartão. AcbrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt; AcbrNFe1.Configuracoes.Geral.SSLHttpLib := httpWinHttp; AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; O erro acontece quando compila a seguinte rotina: if (SignNode = nil) then //esta é a linha 557 da ACBrDFeXsLibXml2.pas. A sentença dessa linha é verdadeira, o que dispara o except abaixo. raise EACBrDFeException.Create(cErrFindSignNode); Alguma sugestão? Obrigado!
  5. Perfeito, mudei para mapeamento e deu tudo certo. Obrigado pela dica Daniel.
  6. Boa tarde, Estou testando a seguinte configuração: AcbrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt; AcbrNFe1.Configuracoes.Geral.SSLHttpLib := httpWinHttp; AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; Está funcionando beleza, desde que os schemas estejam na mesma máquina onde está rodando o sistema. Como eu tenho a pasta \Schemas centralizada no computador servidor e todas as demais máquinas buscam os schemas nesse servidor, aí dá o erro abaixo if (schema = nil) then begin MsgErro := ACBrStr('Erro: Schema inválido'); <-- ocorre esse erro. Esta é a linha 366 da ACBrDFeXsLibXml2.pas Exit; end; O path dos schemas fica assim \\SERVIDOR\NomeCompartilhamento\Schemas\NFe\. O erro ocorre quando ele vai buscar o arquivo nfe_v3.10.xsd (string final = \\SERVIDOR\NomeCompartilhamento\Schemas\NFe\ nfe_v3.10.xsd). Verifiquei a pasta no servidor está tudo certo, compartilhada e acessível pela rede. Inclusive acessei e copiei esse arquivo nfe_v3.10.xsd vai rede, ou seja, a rede está dando acesso normal ao arquivo. A mesma rotina, porém colocando o path do schemas = C:\MeuSistema\Schemas\NFe\, aí tudo certo, sem erro. O problema na verdade ocorre na instrução schema := xmlSchemaParse(parser_ctxt) (linha 362 da ACBrDFeXsLibXml2.pas). Mas essa instrução não consigo debugar. O que poderia ser? Alguma dica? Obrigado
  7. Boa tarde, Não sei se vai ser de ajuda para os responsáveis pelos ajustes, mas, provisoriamente, estou fazendo assim para meus usuários terem um acesso mais rápido ao código. procedure AbreSiteIBGEConsulCodigo(VCidade, VUF : String); Var VLink : String; Const VURL = 'https://cidades.ibge.gov.br/brasil/'; begin VCidade := StringReplace(VCidade, ' ', '-', [rfReplaceAll]); //troca espaços por hífen para não dar erro no site na url final. VLink := VURL + lowerCase(VUF) + '/' + lowerCase(VCidade) + '/panorama'; HlinkNavigateString(nil, PChar(VLink)); end; Abraços.
  8. Bom dia, Agradeço a dica, mas essa seria a parte de popular o Acbr depois que o certificado já está gravado no banco de dados. Minha dúvida seria mais relacionada a parte de alimentar o banco de dados, ou seja, colocar o certificado no banco de dados. Eu abro o arquivo .pfx do certificado normal, como se fosse um .txt, por exemplo? E aí jogo esse conteúdo no campo da tabela do meu BD? Não precisa fazer alguma decodificação? Vi alguns artigos falando em codificação base64, mas não achei nada muito esclarecedor. Se puder me dar alguma dica nessa parte... Obrigado!
  9. Boa tarde, Obrigado Daniel. Eu não visto o vídeo. Muito bom. Realmente ajudou bastante. O vídeo também mostrou algo que eu ainda não conhecia e achei interessante. É a opção para guardar o certificado no banco de dados e depois alimentar a propriedade SSL.DadosPFX do componente. Aí veio uma dúvida: como eu capturo os dados do arquivo .pfx para uma string para popular o campo do banco de dados? Poderia me dar uma dica de como fazer isso? Obrigado.
  10. Bom dia, Então, no caso, quando eu for utilizar AcbrNFe1.Configuracoes.Geral.SSLLib = libWinCrypt, o ideal é que eu tenha também AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib = xsLibXml2, seria isso? Se positivo, não seria interessante o próprio componente já fazer isso automaticamente, ou seja, quando eu atribuir SSLLib = libWinCrypt, o componente já mudar também SSLXmlSignLib = xsLibXml2 ? Fiz um teste e, ao setar SSLLib = libWinCrypt, o componente seta automaticamente SSLXmlSignLib = xsMsXml. Obrigado!
  11. Então, na sua opinião, 09 não é liquidação e sim apenas baixa? Obrigado
  12. Bom dia, O retorno código 09 - toRetornoBaixaSimples - Bancoob - é de fato uma liquidação do título pelo pagador ou é apenas baixa? Segundo um cliente, o banco alega que esse retorno é de boleto baixado por decurso de prazo. Como identificar isso, ou seja, quando saber quando um título é de fato liquidado ou apenas baixado? Obrigado!
  13. Boa tarde, Marcos, me desculpe minha "carona" no teu tópico, pois o que eu preciso é um pouco fora da questão enunciada no teu tópico. Preciso é de uma consultoria para me ajudar a rever/finalizar o código relativo à implementação do TEF em meu sistema. Já tentei com dois consultores cadastrados aqui no ACBr, mas tá difícil. Acho que são muito ocupados, não sei. Mas o fato é que começamos os diálogos e depois fico meio que falando sozinho (sem o devido retorno). Então, se algum participante do fórum, com bons conhecimentos em TEF / ACBrTEFD estiver disposto a me ajudar com essa análise, por favor, me contate em pv. Abraços!
  14. Captei a mensagem mestre... Testado e aprovado. Obrigado!
  15. Bom dia, Atualizei os fontes e não fiquei um pouco perdido. A ACBrBoleto.pas era já para estar com alterações sugeridas pelo @Agnaldo Prates ? O que exatamente mudou nessa atualização em relação ao tamanho da conta? Pelo que eu havia entendido, a ideia seria para que pudéssemos mudar no componente a propriedade Banco.TamanhoConta, certo? Mas não é possível. Pelo menos nos testes que fiz não consegui. Obrigado!
  16. Bom dia, Sim. Talvez deixar a linha 1002 com um comentário avisando. Algo assim: nTamDescricao := maxCaracter - Length(LinhaItem); //não pode considerar o length de '[DesProd]' porque precisa ficar uma folga no final da linha tendo em vista q em algumas impressoras, a impressão ocupa mais espaço horizontal. Obrigado!
  17. Beleza. Obrigado. Só tem um detalhe que eu não havia percebido antes, rs... Depois que enviei a sugestão, pedi para um cliente fazer outro teste em outra impressora. Ele tem uma Epson TM-20 e a linha acabou cortando no final. Talvez essa folga que era deixada no final das linhas dos itens, era justamente por causa disso. Creio que o problema esteja na fonte que, no layout já pronto da aCBrDANFCeFortesFr.dfm está com Courier New. Se fizer um preview, fica correto. Mas quando a impressão de fato é feita na impressora, acaba cortando no final. A impressora assume outra fonte maior. Será que é possível forçar a impressora a usar a fonte configurada no fortes (Courier New)? Anexos a imagem do print e da impressão. Obrigado.
  18. Boa tarde, Anexei o arquivo errado. Desculpe-me. É Danfce mesmo. Agora vai o arquivo correto. Obrigado. ACBrDANFCeFortesFr.pas
  19. Bom dia, O Danfe da NFCe, quando impresso com o componente ACBrNFeDANFCeFortes, está fazendo um cálculo errado do tamanho das linhas dos itens, o que deixa um espaço em branco desnecessário no final, o qual poderia ser utilizado para aumentar descrição. No cálculo para chegar o tamanho total da descrição do item (linha 1002 da ACBrDANFCeFortesFr.pas) é obtido o tamanho final de sDecricao desconsiderando o literal '[DesProd]'. No meu entender, esses 9 dígitos devem ser computados pois já estão sendo considerados em LinhaItem e serão descartados depois no StringReplace(linha 1005). Sugestão de alteração da linha 1002 ACBrDANFCeFortesFr.pas - Como está: nTamDescricao := maxCaracter - Length(LinhaItem)); - Como deve ficar: nTamDescricao := maxCaracter - Length(LinhaItem) + length('[DesProd]'); ou nTamDescricao := maxCaracter - Length(LinhaItem) + 9; Essa alteração fará com que a impressão dos dados dos itens ocupe toda a largura da bobina (maxCaracter), da mesma forma com o que acontece na impressão dos títulos no beforePrint da banda rlbLegenda. Fiz as adequações aqui e funcionou beleza! Em anexo a unit já alterada. Obrigado. ACBrBoletoFCFortesFr.pas
  20. Boa tarde, Acabei de finalizar o desenvolvimento do TEF (por enquanto apenas Tef_Dial) no meu sistema utilizando o componente acbrTEFD. Apesar de ter estudado bastante o componente e o demo, acredito que eu ainda tenha bastante a aprender. A princípio está tudo funcionando, mas como sou iniciante nessa área, antes de partir para homologação, eu gostaria de um auxílio de algum colega que já tenha experiência com TEF e acbrTEFD para criticar as rotinas que implementei no sistema e ver se há algo que esteja faltando, errado ou que poderia ser melhorado. Quem interessar, por favor, contate em valdiralbertod@gmail.com. Obrigado.
  21. Bom dia Temos tido problemas idênticos. Em todos os casos que investigamos a causa do problema era conexão instável (internet do usuário lenta).
  22. Legal. Acho que entendi. Seria algo mais ou menos assim? procedure TForm2.ACBrTEFD1AntesFinalizarRequisicao(Req: TACBrTEFDReq); begin if Req.Header = 'CRT' then begin Req.GravaInformacao(800, 1, VMeuTipoCartao.toString); //0=crédito; 1=débito. Case VMeuTipoCartao of 0 : begin if VMinhaQtdeParc = 0 then Req.GravaInformacao(800, 2, '0') //0=à vista; 1=parcelado. else begin Req.GravaInformacao(800, 2, '1'); //parcelado Req.GravaInformacao(800, 3, VMeuTipoParcelado); //0=ADM (juros por conta do dono do cartão); 1=Loja (juros por conta da loja). Req.GravaInformacao(800, 4, VMinhaQtdeParc.ToString); end; end; 1 : Req.GravaInformacao(800, 2, '0'); //Se for C.D., só à vista. end; end; end; Obrigado!
  23. Bom dia, Certo, mas como eu alimento essa informação no acbrTEFD? Tem alguma propriedade já implementada no componente? Obrigado.
  24. Bom dia, Estou usando ACBrTEFD e gostaria de saber se é possível o AC enviar as informações de tipo de cartão, tipo de parcelamento e número de parcelas ao TEF? Quando executo um ACBrTEFD1.CRT, só posso enviar os parâmetros Valor, IndiceFPG_ECF, DocumentoVinculado e Moeda, certo? Como posso alimentar o tipo de cartão (800-001), o tipo de operação (800-002), tipo de parcelamento (800-003) e quantidade de parcelas (800-004)? Segundo o manual de integração, se eu enviar ao TEF esses dados, o operador não precisará informá-los lá no TEF. Como eu já tenho essas informações no meu aplicativo, gostaria de alimentál-los. É possível. Obrigado!
  25. Bom dia Juliomar, Analisei o demo e me pareceu que o ACBRTefD tem bastante vínculo de rotinas do AcbrECF. Além disso eu quis fazer tudo meio estilo Cobol antigo ("no braço") rs, para me estudar bem todas as rotinas que estarão envolvidas. Mas possivelmente, antes de liberar, vou utilizar o componente sim. Obrigado.
×
×
  • 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.