Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3192 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Estou com um probleminha de acentuação na inutilização da NFe, esta saindo ponto de interrogação ao inves da letra acentuada.
Sera que é um bug ou estou fazendo alguma coisa errada

Gostaria de saber também se no AcbrMonitorPlus tem algum comando que eu possa enviar para ele limpar a pasta C:\ACBrMonitorPLUS\Arqs
Se não tiver, existe a possibilidade de desenvolver ?
Seria bom que tivesse um parâmetro para pode excluir somente arquivos xml com mais de 30 dias por exemplo.

Obrigado

  • Membros Pro
Postado

function NFeImprimeInutilizacao(Filial, Sequencia: String): Boolean;
var
  XMLInu, S: String;
  NFe: TACBrNFe;
  NFeDANFEFR: TACBrNFeDANFEFR;
begin
  Result := True;
  try
    // Arquivo XML Initulização
    S := 'SELECT ARQUIVO_XML FROM NFE_INUT' +
         ' WHERE FILIAL = ' + Filial +
         '   AND SEQUENCIA = ' + Sequencia;
    XMLInu := CodigoExiste(S, 'ARQUIVO_XML');
    NFe := TACBrNFe.Create(nil);
    NFeDANFEFR := TACBrNFeDANFEFR.Create(nil);
    NFe.DANFE := NFeDANFEFR;
    NFe.DANFE.Sistema := SH;
    NFeDANFEFR.FastFileInutilizacao := LeParametros('RelatoriosSistema', PCodigoFilial) + 'INUTILIZACAO.fr3';
    NFeDANFEFR.MostrarPreview := True;
    NFeDANFEFR.MostrarStatus := True;
    NFeDANFEFR.ShowDialog := True;
    NFe.InutNFe.LerXMLFromString(XMLInu);
    NFe.ImprimirInutilizacao;
    FreeAndNil(NFe);
    FreeAndNil(NFeDANFEFR);
  except
    Result := False;
  end;
end;
 

estamos usando o AcbrMonitorPlus

  • Fundadores
Postado

Notei que o objeto de Inutilização não traduz de UTF8 para a String nativa da IDE... por isso o Delphi tem problema... (ele usa UNICODE e não UTF8)
Tente assim:
 

Uses ACBrUtil;
....

XMLStr := DecodeToString(XMLInu, True);    // Converte de UTF8 para a String nativa da IDE //
NFe.InutNFe.LerXMLFromString(XMLStr);

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Daniel, pelo jeito meu projeto inteiro ta com problema de acentuação.

O retorno do XML esta correto a acentuação, mas ai eu fui ver o pedido de inutilização, na justificativa já está ficando errado.

Na hora de enviar o comando NFE.InutilizarNFe( cCNPJ, cJustificativa, nAno, nModelo, nSerie, nNumInicial, nNumFinal)

a justificativa tem que fazer alguma conversão?

  • Membros Pro
Postado

Daniel, me desculpe a demora.

Nós estamos usando o ACBrMonitorPLUS para assinar o XML e enviar.

Quando ele autoriza, o XML é salvo na pasta C:\ACBrMonitorPLUS\Arqs

Nós recuperamos esse XML autorizado pelo comando NFe.LoadFromFile e gravamos no banco de dados (SQL SERVER)

A partir daí nós usamos o componente TAcbrNFe para imprimir o XML autorizado.

O XML que o ACBrMonitorPLUS salva na pasta C:\ACBrMonitorPLUS\Arqs está com acentuação correta.

O método NFe.LoadFromFile que está perdendo a acentuação.

Mas estamos desconfiados que o nosso cliente soket que comunica com o ACBrMonitorPLUS que não esta configurado para UTF8.

Você tem algum exemplo de comunicação por soket com o ACBrMonitorPLUS ?

  • Membros Pro
Postado (editado)

Delphi XE 10 Professional

Nós fizemos uma modificação em nosso TcpClient e conseguimos resolver o problema assim :

Client := TIdTCPClient.Create(Application);
UTF8Encoding := IndyTextEncoding_UTF8();
Client.IOHandler.DefStringEncoding := UTF8Encoding;

A resposta do webservice esta vindo com acento e ja conseguimos salvar o XML no banco de dados com acento.

Agora ficou somente um problema, que o ACBrMonitorPLUS está removendo o acento da justificativa 

NFE.InutilizarNFe( cCNPJ, cJustificativa, nAno, nModelo, nSerie, nNumInicial, nNumFinal)

Até o ponto que enviamos para o ACBrMonitorPLUS está com acento, a resposta já esta sem acento.

<xJust>
PROBLEMA TECNICO OU OPERACIONAL/Nao/Tem/Acentuacao/
</xJust>
 

Essa frase colocamos acento

Tenta fazer uma NFe de Inutilização com acentuação na justificativa que você já vai ver o problema.

Editado por sgeinformatica
  • Fundadores
Postado

Notei que o ACBrNFe, propositalmente removia os acentos... (herança do antigo "trunk") apliquei correções nos fontes

Citar

-- ACBrNFeWebServices, pcnInutNFe --
[-] Correção em "TNFeInutilizacao" e "TinutNFe", para permitir a geração de XMLs
    com acentos
[-] Modificado para que procedure TNFeInutilizacao.DefinirDadosMsg não modifique
    o valor configurado em "Configuracoes.Geral.ModeloDF"   

-- ACBrDFeWebService --
[+] Adicionado o método protegido "AjustarOpcoes", para permitir que o XML
    gerado pelo WebService, respeite RetirarAcentos e RetirarEspacos das Opções
    do componente pai (TACBrDFe). Ex: AjustarOpcoes( InutNFe.Gerador.Opcoes ); 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Daniel, obrigado pela solução da acentuação.

No começo do post, perguntei tambem sobre a possibilidade de desenvolver um comando no ACBrMonitorPLUS para limpar o conteudo da pasta C:\ACBrMonitorPLUS\Arqs

Se der certo, nao precisarei mais compartilhar a pasta do monitor.
No meu sistema apaga somente arquivos com mais de 30 dias e fiz mais ou menos assim :

var
  DataArq: TDateTime;
  PastaXml: String;
  A: Integer;
  TS: TStrings;
begin  
  PastaXml := 'C:\ACBrMonitorPLUS\Arqs'
  TS := TStringList.Create;
  TS.Clear;
  ArquivosSubDiretorio(PastaXML, TS);  // funcao que retorna todos os arquivos dentro da pasta
  for A := 0 to TS.Count-1 do
    begin
        DataArq := TFile.GetCreationTime(TS[a]);
        if (Now -  DataArq) > 30 then DeleteFile(TS[a]);
    end;
  TS.Free;
end;
 

O comando no monitor poderia passar como parametro a pasta e a qtde de dias

  • Fundadores
Postado

Por favor abra um novo tópico com esse asunto...

Preciso conversar com a equipe e ver a melhor maneira de implementar isso... poderia ser uma configuração na interface do Mmonitor... e ele faria a "limpeza" a cada inicializaççao...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Este tópico foi criado há 3192 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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