Ir para conteúdo
  • Cadastre-se

NFSe Betha - XML da NFSe, Impressão e Envio de Email


Ver Solução Respondido por Diogo Loff,

Recommended Posts

Postado

Ola

Deixei esta semana para resolver o problema da Betha no meu sistema devido a muitas incosistencias que estavam acontecendo.

Pelo que testei esta funcionando já de uma forma minima viavel.

 

O que eu me deparei.

1 - Não estão mais retornando a NFSe

2 - Não temos mais a impressão, pois era baseada na NFSe, por acaso tem algum modo de impressão baseado somente no RPS?

3 - Como estão fazendo a impressão se não tiver algo pronto, e também o envio de email pelo sistema?

 

Quem estiver trabalhando com a Betha e puder compartilhar a estratégia feita, agradeço.

 

Eu agora somente estou conseguindo enviar o RPS, e ler a situação.

 

  • Consultores
Postado
4 minutos atrás, Diogo Loff disse:

1 - Não estão mais retornando a NFSe

se pega o a chave do DPS e consulta ela até retornar OK

e então com a chave da NFSe consulta e retorna o xml da NFSe

5 minutos atrás, Diogo Loff disse:

Não temos mais a impressão, pois era baseada na NFSe, por acaso tem algum modo de impressão baseado somente no RPS?

impressão só existe de NFSe , se usava rps estava errado. não temos nada local mas é possível baixar do padrão nacional ela pronta

5 minutos atrás, Diogo Loff disse:

Como estão fazendo a impressão se não tiver algo pronto, e também o envio de email pelo sistema?

como citado acima

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)

Valeu Julio, estou já testando aqui. Esta dando erro.

Estou fazendo a consulta por Chave depois de pegar a situação.
image.png.3358c8c05497a90f345f061febd9d344.png

Na linha DocumentXml.LoadFromXml(NFSeXml); em procedure TACBrNFSeProviderPadraoNacional.TratarRetornoConsultaNFSeporChave

 

Aparentemente os dados estão vindo certos quando estou debugando, não sei porque esta dando erro de encoding.

Editado por Diogo Loff
Faltou um passo
Postado

Descomentei uma linha em ACBrXmlDocument.pas

procedure TACBrXmlDocument.LoadFromXml(AXmlDocument: string);

// a linha abaixo foi comentada pois segundo o DSA consome muito a CPU e causa lentidão
  AXmlDocument := NativeStringToUTF8(AXmlDocument);

Linha 1364

Esta linha estava comentada, eu descomentei e funcionou, mas não vou manter descomentado, pois não sei que impactos podem ter já que pelo que vi é um procedimento usado de forma ampla pelo componente.

Postado (editado)

Fiz uma correção no provider, e creio que definitva, inclusive resolvi definitivamente outro problema da consulta do nacional quando o ambiente é direto, que inclusive tem um tópico só sobre ele aqui no forum, e que vocês estariam tentando soluções possiveis sobre o problema do encoding. Eu usei uma técnica que já uso em outras funções de integrações com outros sistemas no meu ERP, quando tem arquivos com problema de encoding que nunca se resolvem.

 

Arquivo alterado "PadraoNacional.Provider"


procedure TACBrNFSeProviderPadraoNacional.TratarRetornoConsultaNFSeporChave

Linha 595

         if NFSeXml <> '' then
        begin
            NFSeXmlFile := DeCompress(DecodeBase64(NFSeXml));

            if IsUTF8String(NFSeXmlFile) then
                NFSeXml := UTF8ToAnsi(NFSeXmlFile)
            else
                NFSeXml := NFSeXmlFile;
        end;

O que estou fazendo! O arquivo estou recebendo como esta, então para isto criei um atributo NFSeXmlFile, este uso somente para DocumentXml.LoadFromXml(NFSeXmlFile); já que irá usar como espelho para salvar o arquivo. E a variavel para fazer os tratamentos necessários continuo usando a que estava ali, mas só converto se realmente o que veio no arquivo for UTF8, a função IsUTF8String vem da uses WideStrUtils.

Segue anexo o arquivo fonte.

PadraoNacional.Provider.pas

Editado por Diogo Loff
Faltou um passo
  • Consultores
Postado
20 horas atrás, Diogo Loff disse:

Arquivo alterado "PadraoNacional.Provider"


procedure TACBrNFSeProviderPadraoNacional.TratarRetornoConsultaNFSeporChave

Linha 595

         if NFSeXml <> '' then
        begin
            NFSeXmlFile := DeCompress(DecodeBase64(NFSeXml));

            if IsUTF8String(NFSeXmlFile) then
                NFSeXml := UTF8ToAnsi(NFSeXmlFile)
            else
                NFSeXml := NFSeXmlFile;
        end;

O que estou fazendo!

Uma possível solução que acho que tem o mesmo efeito é alterar o segundo parâmetro da função DecodeToString para False:

//linha594
        if NFSeXml <> '' then
          NFSeXml := DecodeToString(DeCompress(DecodeBase64(NFSeXml)), False); 

E outra que o @Gabriel Bonzanini compartilhou no outro tópico relacionado foi alterar adicionando ACBrAnsiToUTF8:

        if NFSeXml <> '' then
          NFSeXml := ACBrAnsiToUTF8(DecodeToString(DeCompress(DecodeBase64(NFSeXml)), True));

Mas tenho receio qualquer uma dessas possa vir a causar quebras de códigos em outras situações, como lazarus ou Delphi 7.

Precisamos validar todas as opções e isso é o que mais tem dado trabalho.

Mas obrigado pela sugestão.

  • Curtir 1
  • Obrigado 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Solution
Postado

Poise @EMBarbosa é complexo isto, acho que até pode encerrar este tópico pois estamos tratando a mesma coisa lá no outro do encoding.

 

Mas estas coisas de encoding sempre da problema, eu que trabalho com diversas integrações de outros sistemas, geralmente quando tem leitura de um arquivo para criar outro o certo e não mudar nada, não tratar nada. E só tratar a variavel se tiver que pegar dados para preencher algum atributo específico.

  • Consultores
Postado
7 minutos atrás, Diogo Loff disse:

Poise @EMBarbosa é complexo isto, acho que até pode encerrar este tópico pois estamos tratando a mesma coisa lá no outro do encoding.

Vamos fazer isso. Obrigado pela compreensão.

7 minutos atrás, Diogo Loff disse:

Mas estas coisas de encoding sempre da problema, eu que trabalho com diversas integrações de outros sistemas, geralmente quando tem leitura de um arquivo para criar outro o certo e não mudar nada, não tratar nada. E só tratar a variavel se tiver que pegar dados para preencher algum atributo específico.

Eu concordo.

O complicado no nosso caso é que nós não temos escolha, já que precisamos manipular o conteúdo desses arquivos e precisamos fazer isso em IDEs e versões diferentes (Delphi 7 a 13/FPC) e também plataformas diferentes (linux/Windows).

Moderação: Fechando, continuar sobre o problema de UTF-8 no tópico:

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.