Ir para conteúdo
  • Cadastre-se

Valdir Dill

Membros Pro
  • Total de ítens

    935
  • Registro em

  • Última visita

  • Days Won

    5

Posts postados por Valdir Dill

  1. Bom dia,

    Estou com problema com o retorno do provedor IPM, mais especificamente para o município de Colombo-PR.

    O envio da nota e processamento no servidor está tudo certo. Apenas o XML que estou capturando de ACBrNFSe1.NotasFiscais.Items[0].NFSe.XML vem com tags HTML e outras informações. Aí não consigo imprimir a nota pelo Acbr.

    Em anexo estou enviando o XML retornado. Também fiz um teste abrindo esse retorno via browser. Aí ele gera a nota na tela. Para testar -> https://sistemagfil.com.br/testeNFSe.html

    Estou fazendo algo errado ou é um problema desse provedor mesmo? 

    Vi que tem dois posts do ano passado tratando desse problema, mas sem uma solução.

    Obrigado.

    retornoNFSeIPM.xml

  2. Bom dia,

    No caso da NFSe,  o grupo "with Servico.ItemServico.Add do" deve ser informado sempre ou depende do provedor?

    No demo Acbr está informado que "Somente o provedor SimplISS permite infomar mais de 1 serviço".
    Isso quer dizer que no caso desse provedor, posso .add mais de um serviço e nos demais não, certo?

    Mas e nos demais provedores, posso (ou devo) também informar UM serviço no ItemServico ou não devo informar nenhum?
    Notei que, no caso do ISSCuritiba, se eu informar ou não, não faz diferença, pois não é gravado nada no XML.
    O próprio acbr controla se essa informação vai para o XML ou não, é isso?

     

    Obrigado.

  3. Bom dia,

    Depois de muita lida e ajuda de todos, ao que tudo indica, o problema está resolvido.
    Para registro vou explicar o que estava fazendo e, segundo a dica passada pelo @Daniel Simoes, não era a forma ideal. 

    Vamos lá:

    O que preciso é que sejam alimentadas duas variáveis (VCNPJCert e VVctoCert) para uso em outras rotinas. Isso precisa ser feito antes de qualquer outra operação relacionada a documentos fiscais.

    Logicamente que primeiro são alimentadas todas as propriedades SSL do componente ACBrNFe1 e que não precisa detalhar aqui.

    Forma que eu estava (errada)
    - ACBrNFe1.SSL.NumeroSerie := SerieDoCertGravadaEmIni;
    - VVctoCert := ACBrNFe1.SSL.CertDataVenc; //esta linha e a próxima, disparavam a rotina ACBrNFe1.SSL.SelecionarCertificado, a qual, além de ser mais lenta, gerava o problema depois quando a aplicação era encerrada e destruía o componente ACBrNFe1, que foi o problema inicial deste post.
    - VCNPJCert := ACBrNFe1.SSL.CertCNPJ;

     

    Forma ideal (correta)
    - ACBrNFe1.SSL.LerCertificadosStore;
    - for I := 0 to ACBrNFe1.SSL.ListaCertificados.Count-1 do
       With ACBrNFe1.SSL.ListaCertificados do
         begin
          if NumeroSerie = SerieDoCertGravadaEmIni then //se é o certificado que o usuário selecionou no módulo de parametrização 
           begin
            VVctoCert := DataVenc;
            VCNPJCert := CNPJ;
           end;
         end;

     

    Obrigado a todos.

    • Curtir 3
    • Obrigado 1
  4. 8 minutos atrás, Daniel Simoes disse:

    Essa janela do Windows consome muito recursos...

    Não use ela... veja no Demo do ACBrNFe como você pode criar a sua própria janela de escolha de certificados 

    Não é minha aplicação que chama essa janela do Windows. Ela aparece sozinha, hehe!

    Estou investigando e percebi que a situação ocorre no encerramento da minha aplicação porque é neste momento que a aplicação destroi o dataModule e nele estã o componente ACBrNFe1 que carregou o certificado ao enviar a nota.

    Se, ao invés de fechar a aplicação, eu apenas fizer um ACBrNFe1.Free, acontece o mesmo problema, ou seja, aparecerá essa janela do Windows pedindo o certificado. Esse ACBrNFe1.Free chama TDFeWinCrypt.DescarregarCertificado.

    Debugando percebi que a janela abre ao ser executado SetCertContextPassword( FpCertContext, '' ) da procedure TDFeWinCrypt.DescarregarCertificado;    

  5. 1 minuto atrás, EMBarbosa disse:

    Olá Valdir,

       Essa mensagem não é levantada pelo componente em si. Note que a mensagem é do Windows. Na barra de título está escrito "Segurança do Windows". Como você deve saber, os certificados A3 usando WinCrypt são acessados via Windows.

       Não sou especialista em certificados, mas pelo que você descreveu imagino que o Windows está detectando que o usuário removeu o certificado enquanto ainda em uso. Seria algo semelhante a remover o pendrive enquanto está rodando o chkdsk nele. Daí o Windows percebe que está errado e avisa o único que pode corrigir a situação - o usuário.

       Se o cenário for realmente esse, talvez exista alguma maneira de dizer ao Windows que não se está mais usando o certificado. Digamos que isso seja possível, não posso afirmar que seria viável ao componente.

    Sim, também acho que seja isso, ou seja, é uma interceptação do Windows. Mas o estranho é que ocorre somente quando tento encerrar minha aplicação, entende?

    Se o usuário desplugar o certificado e a minha aplicação ficar 2 horas ativa, nada vai acontecer até que ela não seja encerrada.

    Mas tranquilo, eu imaginei que houvesse alguém que já tivesse passado por situação parecida. A ideia seria justamente isso que você mencionou, ou seja, alguma função que "dissesse" ao Windows que o certificado já não estaria mais em uso.

    Obrigado.

  6. 2 horas atrás, Italo Jurisato Junior disse:

    Bom dia Valdir,

    Para resolver esse problema basta trocar essa porcaria de A3 pelo A1.

     

    Obrigado pela sugestão @Italo Jurisato Junior , mas não ajuda muito.

    Eu também penso assim, ou seja, que o usuário deve usar certificado A1. Mas não posso obrigar centenas de usuários a comprar o hardware que EU quero.

    O que podemos fazer é sempre orientamos a usar A1, mas nossos clientes são livres para fazer como acharem melhor.

    Se fosse tão simples, o próprio Acbr já poderia ter esse bloqueio e não aceitar A3, que tal? Não seria viável, pois, apesar do A3 ser essa porcaria, temos que aceitar que existe.

    Nosso papel como desenvolvedor é orientar, mas o usuário também pode ter seus critérios de escolha, segurança, etc. Nosso papel é tentar facilitar o processo, sempre que possível. Isso é o que penso!

    Abraços.

    • Curtir 1
  7. Bom dia,

    Está ocorrendo uma situação estranha: após emitir uma nota fiscal e, por consequência estabelecer uma conexão dos componente Acbr com o certificado digital, ao se encerrar nosso sistema, está abrindo a tela do Windows pedindo que se conecte o certificado (print anexo).

     Isso só ocorre se, após emitida a nota fiscal e antes de fechar o sistema, se desplugar o usb da leitora do certificado.

    Usamos :     
    - Certificado A3 
    - ACBrNFe1.SSL.SSLType := LT_TLSv1_2;
    - ACBrNFe1.Configuracoes.Geral.SSLCryptLib := cryOpenSSL; 
    - ACBrNFe1.Configuracoes.Geral.SSLHttpLib := httpOpenSSL; 
    - ACBrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

    Pelo que entendi, algum procedimento precisa do token conectado, mas qual e quando?


    Isso é normal ou há alguma rotina (algum componente.free, não sei) que deveria ser feito e de repente não estamos fazendo?

    É claro que esse procedimento (desplugar o token) não é recomendável, mas nunca se sabe quando e o que o usuário faz. Então, quanto menos telas e erros forem apresentados a ele, melhor...

    ErroFecharSistema.png

  8. Bom dia,

    Ao executar um acbrNFe1.loadfromfile(arquivoanexo), ele está trazendo uns caracteres bem estranhos na stream.

    Fiz um teste com o conteúdo do xml no validador SEFAZ-RS e está ok.

    Fiz outro teste copiando o conteúdo e criando um novo arquivo (via bloco de notas) e salvei. Leu direitinho.

    Mas no arquivo original que meu cliente recebeu do fornecedor dele, não consegue ler.

    Imagino eu que seja problema do padrão com que o arquivo foi gravado.

    A dúvida é, como poderia interceptar isso ao tentar ler o arquivo e ver os dados da nota, ou seja, ao invés de dar um erro tipo "...argument out of range...", o sistema tentar confirmar se o arquivo é de fato válido. 

    Obrigado.

    NFe35200201771935000215550030011388711141123558.xml

  9. 19 minutos atrás, Juliana Tamizou disse:

    Boa tarde.

    Não acho que seja necessario varrer a lista novamente, você ir atualizando os dados em seu BD conforme percorre a lista, já que em ambos os registros os dados de identificação do titulo serão os mesmos.

    Att.

    Agradeço a sugestão, mas não tenho como adotá-la porque preciso das informações antes de gravar no BD. Além disso, nos outros bancos a informações no arquivo de retorno vêm numa linha só. Aí, de toda forma precisaria de rotinas diferentes.

    A solução que encontrei foi essa. Deixo aqui para talvez ajudar alguém no futuro:

    for I := 0 to ACBrBoleto1.ListadeBoletos.Count - 1 do
      begin
        if (ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in [toRetornoLiquidado, toRetornoLiquidadoSemRegistro, toRetornoDebitoTarifas]) then
       begin
        if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo <> toRetornoDebitoTarifas then
         begin
           VNumBoleto := ACBrBoleto1.ListadeBoletos.Objects.NossoNumero;
           VValorRec := ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido;
         end;  

        if VBaixa.FTipoRet = cobSicred then //o sicred o retorno vem em duas linhas. 
          begin
           for M := 0 to ACBrBoleto1.ListadeBoletos.Count - 1 do
            begin
             if (ACBrBoleto1.ListadeBoletos.Objects[M].OcorrenciaOriginal.Tipo = toRetornoDebitoTarifas) and
              (ACBrBoleto1.ListadeBoletos.Objects[M].NossoNumero = ACBrBoleto1.ListadeBoletos.Objects.NossoNumero) then
              VTotTarifas :=  ACBrBoleto1.ListadeBoletos.Objects[M].ValorDespesaCobranca;
            end;
           end
          else VTotTarifas := ACBrBoleto1.ListadeBoletos.Objects[M].ValorDespesaCobranca;
         end;
       end;  
      end;  

    Obrigado.

    • Curtir 1
    • Obrigado 1
  10. 1 hora atrás, Juliana Tamizou disse:

    Bom dia.

    Se você utiliza o componente ACBrBoleto, ele já faz a leitura das informações.

    Att.

    Bom, eu uso o Acbr para ler o arquivo e, nos demais bancos funciona beleza, mas especificamente com o Sicredi não está dando certo.
    O problema é que o arquivo Sicredi vem as informações em duas linhas, enquanto que os demais bancos vem tudo numa única linha

    Veja como estou fazendo e por favor me diga se estou fazendo errado ou se poderia ser melhor.
       
    ACBrBoleto1.NomeArqRetorno := 'RetornoSicredi.CRT';
    ACBrBoleto1.DirArqRetorno := 'C:\Retornos\;
    ACBrBoleto1.LerRetorno();
                  
     for I := 0 to DM.ACBrBoleto1.ListadeBoletos.Count - 1 do

    if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in  [toRetornoLiquidado, toRetornoLiquidadoSemRegistro] then
     begin
       ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido));
       ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca + ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas));
     end;
    Nesse loop acima, o valor das tarifas será 0. Mas apenas no caso do Sicredi. Nos demais bancos (pelo menos os que uso), traz o valor certo.
    Isso porque o Sicredi traz duas linhas para cada boleto no arquivo de retorno, uma para o valor recebido e outra a tarifa.

    Aí eu teria que fazer algo mais ou menos assim:
    if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in  [ttoRetornoDebitoTarifas] then
     begin
       ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca + ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas));
     end;
     ou seja varrer a lista novamente.

    Obrigado.

  11. Bom dia,

    Analisando o arquivo de retorno SICREDI (arquivo anexo), notei que cada título vem com duas linhas de retorno. Uma para os dados  da baixa em si e outra linha para a tarifa.

    Eu particularmente nunca tinha notado isso, até porque outros bancos não é assim, ou seja, o valor da tarifa vem na mesma linha da baixa, o que logicamente facilita muito a leitura.

    Pergunto:
    1 - Isso (duas linhas) é algo novo no layout do retorno SICREDI ou sempre foi assim?

    2 - Como tratar isso na varredura para obter os títulos baixados e também a tarifa de baixa de cada um, tenho que varrer o arquivo duas vezes, uma vez para capturar os dados da baixa em si e outro loop para ver a tarifa de cada um dos títulos baixados?
    Qual a sugestão?

    Obrigado

     

    RetornoSicredi.CRT

  12. 20 horas atrás, Daniel Simoes disse:

    Você está usando algum componente ou classe para fazer HeapTrace ?

    Já vi sintoma similar... quando o HeapTrace estava ativado, e haviam problemas de vazamento de memória na aplicação... com isso o HeapTrace fica escrevendo o Log na Saída, por algum tempo 

    Bom dia,

    Entendi. Mas não é o caso. Não tem nada de adicional. Basicamente são componentes nativos e Acbr.

    De toda forma agradeço a dica. Vamos continuar tentando, rs...

    Obrigado.

  13. Bom dia,

    De antemão, já peço desculpas pelo off topic, mas talvez tenha alguma relação com componentes Acbr e não custa tentar, rs...

    É o seguinte: de uns tempos para cá nossa aplicação, quando é encerrada, ela demora uns 20 a 30 segundos (às vezes até mais que isso) para fechar a tela e encerrar de fato.
    O mais curioso é que essa demora no fechamento só acontece se a aplicação ficou aberta por um tempo superior a 2 minutos.
    Se, por exemplo, abrir a aplicação e fechá-la após 30 segundos, fecha rapidinho.

    Já tentei executar application.terminate, halt, ...em mais de um local (onclose, desstroy, ...), mas nada teve efeito.
    Tirei inclusive tudo que é rotina do onClose, onDestroy e onClosequery do formulario principal e nada.

    Tudo que tenha relação com tempo (timers, por exemplo) foi desabilitado, mas não surtiu efeito.

    Imagino eu que talvez possa ser algum (ou alguns) compoenentes que são destruídos pela aplicação e essa destruição gere esse tempo longo, não sei. Não teria muita lógica, pois, se fosse isso, mesmo que a aplicação ficasse só 20 segundos "no ar", isso também deveria ocorrer.
    O grande problema é que não sei mais o que debugar para tentar descobrir onde (qual rotina) exatamente que acontece essa demora.

    Se alguém tiver alguma sugestão/dica, agradeceria muito, pois já estou tentando achar uma solução há meses...

    Usamos Delphi Rio 10.3.3. Mas já ocorria em versão anterior.

    Obrigado!

  14. 29 minutos atrás, André Ferreira de Moraes disse:

    Onde foi enviado este comunicado? Está disponível em algum site oficial da SEFAZ? Os campos cMsg e xMsg não são tratados no retorno síncrono.

    Também não achei nada no site da SEFAZ. Mas arquivo que enviei na abertura do post é o e-mail recebido por uma empresa de lá e que encaminhou a nós.

     

  15. Boa tarde,

    A SEFAZ-MS está implementando a "Nota Fiscal Premiada" onde será necessário imprimir no Danfe algumas dezenas que concorrerem a prêmios e que o cliente recebe na NFCe. Prazo 31/12/2019. 

    Em anexo o texto enviado pela SEFAZ aos contribuintes.

    ACBr já tem algo em mente sobre isso?

    Em princípio parece algo até relativamente simples de fazer. Acho que seria pegar o retorno, gravar isso no banco de dados do sistema e depois incluir no Danfe antes de imprimir. Como se fazia com o troco antes dessa tag fazer parte do  XML da NFCe.
    Logicamente que o Acbr implementar seria melhor, pois ficaria uma padrão geral.

    Obrigado.

     

    SEFAZ_MS

    • Curtir 2
  16. 36 minutos atrás, EMBarbosa disse:

    Muito estranho mesmo. Me parece problema na renderização da impressora, mas não tenho certeza de exatamente onde.

    Tentou Trocar de máquina? E trocar a impressora? Por exemplo usar uma impressora virtual que gera pdf como o PDFCreator?

    A impressão do PDF do componente funciona corretamente?

    Sim, já fiz esses testes e nada mudou em nenhum dos casos. O .pdf também gera com o problema.

    Não sei se é coincidência ou não, mas isso começou depois que foram feitos alguns ajustes pelo @Daniel Simoes-> 

    Estou anexando tanto o .pdf que gerei na impressora virtual, como o XML...Talvez lhes ajuda na análise.

    Obrigado.

    41191113971229000115550010000000411972950890-nfe.xml NFe.pdf

  17. Bom dia,

    Estou tendo problema ao imprimir NFe 55, mais especificamente nos dados adicionais.

    O que ocorre é que no preview mostra corretamente, mas ao imprimir em papel, o texto das informações complementares ultrapassa o seu quadro e adentra no quadro "Reservado ao Fisco".

    Os prints anexos dá para ver bem isso.

     

    O que poderia ser isso? Configurações da impressora? Estranho pois é a mesma impressora e nada foi mudado nas configurações.

    print.png

    preview.png

×
×
  • 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.