Diogo Loff Postado 16 Fevereiro Postado 16 Fevereiro 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 Juliomar Marchetti Postado 16 Fevereiro Consultores Postado 16 Fevereiro 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 Juliomar Marchetti Ajude o Projeto ACBr crescer - Seja Pro discord: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br 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 !!
Diogo Loff Postado 16 Fevereiro Autor Postado 16 Fevereiro (editado) Valeu Julio, estou já testando aqui. Esta dando erro. Estou fazendo a consulta por Chave depois de pegar a situação. 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 16 Fevereiro por Diogo Loff Faltou um passo
Diogo Loff Postado 16 Fevereiro Autor Postado 16 Fevereiro 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.
Diogo Loff Postado 17 Fevereiro Autor Postado 17 Fevereiro (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 17 Fevereiro por Diogo Loff Faltou um passo
Diogo Loff Postado 17 Fevereiro Autor Postado 17 Fevereiro Value @Juliomar Marchetti, tirando a questão do encoding ali, todo o passo a passo seu resolveu o problema da Betha, agora tenho a NFSe e a Impressão no formato Nacional.
Consultores EMBarbosa Postado 17 Fevereiro Consultores Postado 17 Fevereiro 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. 1 1 []'s Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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 Diogo Loff Postado 17 Fevereiro Autor Solution Postado 17 Fevereiro 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 EMBarbosa Postado 17 Fevereiro Consultores Postado 17 Fevereiro 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 Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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.
Recommended Posts