Ir para conteúdo
  • Cadastre-se

dev botao

NFe 4.00 erro ao gerar xml produto com lote


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

Recommended Posts

  • Membros Pro

Bom dia

Estou utilizando o componente TACBrNFe para gerar o XML da NFe.

No meu codigo fonte está assim :

var
  NFe: TACBrNFe;
  NF1: NotaFiscal;
begin
  NFe := TACBrNFe.Create(nil);
  NFe.NotasFiscais.Clear;
  NFe.Configuracoes.Geral.FormaEmissao := teNormal;
  NFe.Configuracoes.Geral.ModeloDF := moNFe;
  NFe.Configuracoes.Geral.VersaoDF := ve400;
  NF1 := NFe.NotasFiscais.Add;
  ...
  ...
  NFe.NotasFiscais.GerarNFe;
end;
 

Quando chega em NFe.NotasFiscais.GerarNFe está dando o seguinte erro :

Argument out of range

Debugando, o erro acontece na seguinte linha :

Gerador.wCampo(tcStr, 'I81', 'nLote ', 01, 20, 1, nfe.Det.Prod.rastro[j].nLote, DSC_NLOTE);
Essa linha fica no pcnNFeW.pas e na procedure TNFeW.GerarDetProdRastro(const i: Integer);
É uma venda de um produto que tem lote

 

 

Link para o comentário
Compartilhar em outros sites

29 minutos atrás, sgeinformatica disse:

Bom dia

Estou utilizando o componente TACBrNFe para gerar o XML da NFe.

No meu codigo fonte está assim :

var
  NFe: TACBrNFe;
  NF1: NotaFiscal;
begin
  NFe := TACBrNFe.Create(nil);
  NFe.NotasFiscais.Clear;
  NFe.Configuracoes.Geral.FormaEmissao := teNormal;
  NFe.Configuracoes.Geral.ModeloDF := moNFe;
  NFe.Configuracoes.Geral.VersaoDF := ve400;
  NF1 := NFe.NotasFiscais.Add;
  ...
  ...
  NFe.NotasFiscais.GerarNFe;
end;
 

Quando chega em NFe.NotasFiscais.GerarNFe está dando o seguinte erro :

Argument out of range

Debugando, o erro acontece na seguinte linha :

Gerador.wCampo(tcStr, 'I81', 'nLote ', 01, 20, 1, nfe.Det.Prod.rastro[j].nLote, DSC_NLOTE);
Essa linha fica no pcnNFeW.pas e na procedure TNFeW.GerarDetProdRastro(const i: Integer);
É uma venda de um produto que tem lote

 

 

Bom.
Não se trata de erro propriamente dito.

O que há é uma regra de validação de rastreabilidade do produto, que, no caso não se sabe qual, porém pelo que dispõe o manual, trata-se de produto sujeito a regulações sanitárias.
Você preencheu as tags relativas ao grupo I80? p. 10 NT_2016_002_v1.00, disponível em: https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=c4S6yXTKpXY=.

 

 

_____________

Prates, Agnaldo

Link para o comentário
Compartilhar em outros sites

  • Moderadores
46 minutos atrás, sgeinformatica disse:

Argument out of range

Debugando, o erro acontece na seguinte linha :

Gerador.wCampo(tcStr, 'I81', 'nLote ', 01, 20, 1, nfe.Det.Prod.rastro[j].nLote, DSC_NLOTE);
Essa linha fica no pcnNFeW.pas e na procedure TNFeW.GerarDetProdRastro(const i: Integer);

Realmente tem um erro nesse método.

Citar

  for j := 0 to nfe.Det.Prod.med.Count - 1 do

Faça a correção como segue:

procedure TNFeW.GerarDetProdRastro(const i: Integer);
var
  j: Integer;
begin
  for j := 0 to nfe.Det[i].Prod.rastro.Count - 1 do
  begin
    Gerador.wGrupo('rastro', 'I80');
    Gerador.wCampo(tcStr, 'I81', 'nLote ', 01, 20, 1, nfe.Det[i].Prod.rastro[j].nLote, DSC_NLOTE);
    Gerador.wCampo(tcDe3, 'I82', 'qLote ', 00, 11, 1, nfe.Det[i].Prod.rastro[j].qLote, DSC_QLOTE);
    Gerador.wCampo(tcDat, 'I83', 'dFab  ', 10, 10, 1, nfe.Det[i].Prod.rastro[j].dFab, DSC_DFAB);
    Gerador.wCampo(tcDat, 'I84', 'dVal  ', 10, 10, 1, nfe.Det[i].Prod.rastro[j].dVal, DSC_DVAL);
    Gerador.wCampo(tcStr, 'I85', 'cAgreg', 01, 20, 0, nfe.Det[i].Prod.rastro[j].cAgreg, DSC_CAGREG);

    Gerador.wGrupo('/rastro');
  end;
  if nfe.Det[i].Prod.rastro.Count > 500 then
    Gerador.wAlerta('I80', 'rastro', DSC_NITEM, ERR_MSG_MAIOR_MAXIMO + '500');
end;

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
Em 17/08/2017 at 12:18, BigWings disse:

Realmente tem um erro nesse método.

Faça a correção como segue:


procedure TNFeW.GerarDetProdRastro(const i: Integer);
var
  j: Integer;
begin
  for j := 0 to nfe.Det[i].Prod.rastro.Count - 1 do
  begin
    Gerador.wGrupo('rastro', 'I80');
    Gerador.wCampo(tcStr, 'I81', 'nLote ', 01, 20, 1, nfe.Det[i].Prod.rastro[j].nLote, DSC_NLOTE);
    Gerador.wCampo(tcDe3, 'I82', 'qLote ', 00, 11, 1, nfe.Det[i].Prod.rastro[j].qLote, DSC_QLOTE);
    Gerador.wCampo(tcDat, 'I83', 'dFab  ', 10, 10, 1, nfe.Det[i].Prod.rastro[j].dFab, DSC_DFAB);
    Gerador.wCampo(tcDat, 'I84', 'dVal  ', 10, 10, 1, nfe.Det[i].Prod.rastro[j].dVal, DSC_DVAL);
    Gerador.wCampo(tcStr, 'I85', 'cAgreg', 01, 20, 0, nfe.Det[i].Prod.rastro[j].cAgreg, DSC_CAGREG);

    Gerador.wGrupo('/rastro');
  end;
  if nfe.Det[i].Prod.rastro.Count > 500 then
    Gerador.wAlerta('I80', 'rastro', DSC_NITEM, ERR_MSG_MAIOR_MAXIMO + '500');
end;

 

Correção no SVN - Revisão: 13741

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...