Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Alguns clientes passaram a relatar que está saindo no Danfe uma descrição da modalidade do frete errada, ex: '1 - DEST/REM', mesmo o XML sendo da versão 4.00. Identifiquei onde está o problema, mas não estou certo sobre a forma como deve ser corrigido, pois para isso teria que mudar o retorno da função GetVersaoStr.

Vou então relatar o que está ocorrendo:

1) O problema é: A função StrToNumerado quando usada para identificar qual a versão da NFe está retornando como sendo a ve200 e não a ve400, com isso, a função modFreteToDesStr() está usando o conjunto errado para retornar a descrição.

2) Isso está ocorrendo pois a função GetVersaoStr retorna uma string concatenada resultando em  "versao=4.00" e, com isso, a StrToEnumerado não encontra essa string no array para conversão, assumindo assim o primeiro elemento que é ve200

Segue as funções para explicar melhor:

Arquivo PcnConversaoNfe.pas :

function StrToVersaoDF(out ok: Boolean; const s: String): TpcnVersaoDF;
begin
  Result := StrToEnumerado(ok, s, ['2.00', '3.00', '3.10', '4.00'], [ve200, ve300, ve310, ve400]);
end;

Arquivo PcnNFe.pas :

function TinfNFe.GetVersaoStr: String;
begin
  if FVersao <= 0 then
     Result := V2_00
  else
     Result := 'versao="'+FloatToString(FVersao,'.','#0.00')+'"';
end;

Arquivo ACBrNFeDANFeRLRetrato.pas ( idem para o modo paisagem):

procedure TfrlDANFeRLRetrato.DefinirTransporte;
var
  i, j: Integer;
  RLLabel, RLLabelModelo: TRLLabel;
  ok: Boolean;
begin
  with fpNFe.Transp do
  begin
    rllTransModFrete.Caption := modFreteToDesStr(modFrete, StrToVersaoDF(ok, fpNFe.infNFe.VersaoStr));
    with Transporta do
    begin
      rllTransCNPJ.Caption := FormatarCNPJouCPF(CNPJCPF);
      rllTransNome.Caption := XNome;
      rllTransIE.Caption := IE;
      rllTransEndereco.Caption := XEnder;
      rllTransCidade.Caption := XMun;
      rllTransUF.Caption := UF;
    end;
  end;

....

3) Possível solução: Basta alterar a função do arquivo PcnNFe.pas para não concatenar nada na versão da NFe e simplesmente converter para a string, passaria a retornar "4.00", como está sendo testado no StrToEnumerado, ficando assim:

function TinfNFe.GetVersaoStr: String;
begin
  if FVersao <= 0 then
     Result := V2_00
  else
     Result := FloatToString(FVersao,'.','#0.00');
end;

O problema é que não sei se foi proposital essa concatenação e qual o impacto de retirar isso para deixar como coloquei no passo (3)...

  • Moderadores
Postado
2 horas atrás, Luishbr disse:

O problema é que não sei se foi proposital essa concatenação e qual o impacto de retirar isso para deixar como coloquei no passo (3)... 

A propriedade VersaoStr é usada na montagem dos XML então alterar o retorno causaria invalidação dos arquivos.

Enviei correção para o repositório, rev. 16351, favor reverter as suas alterações, atualizar os fontes e testar novamente.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado
2 horas atrás, BigWings disse:

A propriedade VersaoStr é usada na montagem dos XML então alterar o retorno causaria invalidação dos arquivos.

Enviei correção para o repositório, rev. 16351, favor reverter as suas alterações, atualizar os fontes e testar novamente.

Essa era a minha preocupação mesmo...

Acabei de atualizar os fontes e pelos testes está tudo certo agora.

Muito obrigado pela atenção.

  • Curtir 1
  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

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 !!

  • Este tópico foi criado há 2140 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.