Ir para conteúdo
  • Cadastre-se

dev botao

ACBrEDI - NOTFIS


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

Recommended Posts

Boa tarde.

Ao gerar o arquivo EDI - NOTFIS aqui na empresa nos deparamos com o seguinte erro:

EACBrTXTClassErro with message 'Parâmetro "Value" não possui um valor numérico.'

A solução que encontramos foi modificar a unit ACBrEDINotaFiscal alterando o método GerarItensNF de:

procedure TACBrEDINotaFiscais.GerarItensNF( Registro: TItensNF ) ;
var
  I: Integer ;
begin
  // Registros 511 ou 314 Itens da Nota Fiscal
  for i := 0 to Registro.Count - 1 do
  begin
    with Registro.Items[i] do
    begin
      if Versao = ve50 then
      begin
        Conteudo.Add( IdRegistro +
                      FTxt.VLFill(qVolumes ,  6, 2, '0') +
                      FTxt.RFill(xEspecie  , 15) +
                      FTxt.RFill(cItem     , 20) +
                      FTxt.RFill(xDescricao, 50) +
                      FTxt.LFill(CFOP      ,  4) +
                      FTxt.RFill(nroLote   , 20) +
                      FTxt.LFill(dtValidade, 'ddmmyyyy', false) +
                      FTxt.RFill(xMarca    , 50) +
                      FTxt.RFill(nroVolume , 50) +
                      FTxt.RFill(nroLacre  , 50) +
                      FTxt.VLFill(nroPedido, 20) +
                      FTxt.VLFill(Filler   , 22) ) ;
      end
      else
      begin
        Conteudo.Add( IdRegistro +
                  FTxt.VLFill(qVolumes ,  5, 2, '0') +
                  FTxt.RFill(xEspecie  , 15) +
                  FTxt.RFill(xDescricao, 30) +
                  FTxt.VLFill(Filler   , 29) ) ;
      end;
    end;
  end;
end;
 

para:

procedure TACBrEDINotaFiscais.GerarItensNF( Registro: TItensNF ) ;
var
  I: Integer ;
begin
  // Registros 511 ou 314 Itens da Nota Fiscal
  for i := 0 to Registro.Count - 1 do
  begin
    with Registro.Items[i] do
    begin
      if Versao = ve50 then
      begin
        Conteudo.Add( IdRegistro +
                      FTxt.VLFill(qVolumes ,  6, 2, '0') +
                      FTxt.RFill(xEspecie  , 15) +
                      FTxt.RFill(cItem     , 20) +
                      FTxt.RFill(xDescricao, 50) +
                      FTxt.LFill(CFOP      ,  4) +
                      FTxt.RFill(nroLote   , 20) +
                      FTxt.LFill(dtValidade, 'ddmmyyyy', false) +
                      FTxt.RFill(xMarca    , 50) +
                      FTxt.RFill(nroVolume , 50) +
                      FTxt.RFill(nroLacre  , 50) +
                      FTxt.VLFill(nroPedido, 20) +
                      FTxt.RFill(Filler    , 22) ) ;
      end
      else
      begin
        Conteudo.Add( IdRegistro +
                  FTxt.VLFill(qVolumes ,  5, 2, '0') +
                  FTxt.RFill(xEspecie  , 15) +
                  FTxt.RFill(xDescricao, 30) +
                  FTxt.RFill(Filler    , 29) ) ;
      end;
    end;
  end;
end;
 

Identificamos que nas linhas 2141 e 2149 o Filler estava sendo tratado com numérico e não como string, por isso em ambas as linhas substituímos FTxt.VLFill por FTxt.VLFill e então o arquivo foi gerado com sucesso.

Segue anexo a unit alterada para análise.

Desde já agradeço.

ACBrEDINotaFiscal.pas

Link para o comentário
Compartilhar em outros sites

Boa tarde @Juliomar Marchetti

Tenho sim, segue anexo NOTFI 31.pdf

Nesse caso especificamente trata-se da versão 3.1 do layout.

Foi necessário fazer mais alterações na classe ACBrEDINotaFiscal, as quais detalho no anexo Alteracoes_ACBrEDINotaFiscal.txt.

Segue anexo também o arquivo ACBrEDINotaFiscal.pas, atualizado para avaliação.

O registro 314 não está com o tamanho esperado (240), mas esse ainda não conseguimos finalizar os ajustes para que ele fique conforme o tamanho especificado pelo layout.

Mais uma vez agradeço à toda equipe ACBr.

NOTFI 31.pdf Alteracoes_ACBrEDINotaFiscal.txt ACBrEDINotaFiscal.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não vou aplicar questões de copy em dados que deveriam vir corretos

outra coisa. tu tem aqui misturado , implementou da versão 5 e postou o manual da versão 3.1

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Bom dia @Juliomar Marchetti

Não estávamos encontrando o layout da versão 5.0 pois estávamos procurando como Proceda.

Até a versão 3.1 os layouts estão como Proceda, mas a versão 5.0 está como Tivit ( empresa criada em dezembro de 2004 com a fusão das empresas OptiglobeProceda ).

Por fim encontramos o layout da versão 5.0.

Segue anexo conforme solicitado.

Obrigado.

NOTFI31.pdf NOTFIS-50.pdf

Link para o comentário
Compartilhar em outros sites

Segui o manual sim @Juliomar Marchetti, e quanto às alterações que fiz, apenas apliquei a mesma regra de formatação utilizada nos demais campos. 

Por exemplo: o campo 14 - VALOR TOTAL DA NOTA consta no layout como N 13.2 e nesse mesmo trecho de código que você destacou pode-se ver que o campo vTotalNF é processado com a formatação 15,2, ou seja, somando-se ao valor inteiro as casas decimais.

Se os campos 13 - QTDE DE VOLUMES e 15 - PESO TOTAL DA MERCADORIA A TRANSP. forem processados com a formatação 5,2 e não com a formatação 7,2 o tamanho do registro fica 236, diferente do tamanho esperado, que é de 240.

Link para o comentário
Compartilhar em outros sites

Acho que você não entendeu a minha colocação.

Seguindo no mesmo exemplo do campo 14 - VALOR TOTAL DA NOTA, que citei para justificar as alterações feitas nos campos 13 - QTDE DE VOLUMES e 15 - PESO TOTAL DA MERCADORIA A TRANSP.:

Em TACBrEDINotaFiscais.GerarNotasFiscais é utilizado o método TACBrTXTClass.VLFill para a formatação dos 3 campos supracitados.

image.png.5129801ce0f2b74d98a540955779baba.png

Ocorre que o método TACBrTXTClass.VLFill retorna uma string com o tamanho passado no parâmetro Size.

image.thumb.png.f137f11caf645d985d4d4d63d890bab4.png

Veja que o campo 14 - VALOR TOTAL DA NOTA começa na posição 86 e vai até a 100, ou seja, deve ter o tamanho total de 15 (13 inteiros e 2 decimais).

image.thumb.png.220654d50a482ca8d21a2b4764234275.png

Todos os campos que no layout estão como N 13.2 no método TACBrEDINotaFiscais.GerarNotasFiscais já estavam sendo formatados com 15,2 na chamada ao método TACBrTXTClass.VLFill.

Os campos 13 - QTDE DE VOLUMES e 15 - PESO TOTAL DA MERCADORIA A TRANSP. estavam com a mesma formatação tanto no layout ( N 5,2 ) quanto na chamada ao método TACBrTXTClass.VLFill ( 5,2 ).

O que fiz foi apenas adequar a formatação dos campos 13 - QTDE DE VOLUMES e 15 - PESO TOTAL DA MERCADORIA A TRANSP. à formatação que já estava vigente para os demais campos, alterando de ( 5,2 ) para ( 7,2 ) na chamada ao método TACBrTXTClass.VLFill em TACBrEDINotaFiscais.GerarNotasFiscais.

Com isso os campos ocupam as posições corretas, conforme consta no layout e o tamanho do registro fica conforme o esperado: 240.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom subi

se começar a dar erros vamos retornar o código

não subi o copy que foi colocado no campo data

Obrigado pela contribuição

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1159 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.

The popup will be closed in 10 segundos...