Ir para conteúdo
  • Cadastre-se

dev botao

Correções na geração do XML


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

Recommended Posts

  • Consultores

No fonte pcnNFeW da pasta ...\fontes\PCN2, contem um bug:

A linha a baixo esta com o primeiro parametro errado:

Gerador.wCampo(tcInt, 'I17b', 'indTot ', 01, 01, 1, indTotToStr(nfe.Det.Prod.IndTot), DSC_INDTOT);

O correto é:

Gerador.wCampo(tcStr, 'I17b', 'indTot ', 01, 01, 1, indTotToStr(nfe.Det.Prod.IndTot), DSC_INDTOT);

[]s

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Mas encontrei uma melhoria no codigo em pcnNFeR;

de

(*I17b*)NFe.Det.Prod.IndTot := StrToindTot(ok,Leitor.rCampo(tcDe2, 'indTot'));

Para

(*I17b*)NFe.Det.Prod.IndTot := StrToindTot(ok,Leitor.rCampo(tcInt, 'indTot'));

Alteracao

de tcDe2 === > tcInt

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Henrique,

O problema é o seguinte: o campo indTot (Página 122 do Manual) indica, se o valor do item (vProd) entra no valor total da NF-e ou não.

É um campo numérico de tamanho 1 e pode assumir os seguintes valores:

0 = o valor do item não compõe o valor total da NF-e;

1 = o valor do item compõe o valor total da NF-e;

Muito bem, foi criado um tipo e 2 funções no fonte: pcnConversao

Tipo:

TpcnIndicadorTotal = (itSomaTotalNFe, itNaoSomaTotalNFe );

Funções:

// 117b - Indicador de soma no total da NFe **************************************

function indTotToStr(const t: TpcnIndicadorTotal): string;

begin

result := EnumeradoToStr(t, ['0', '1'], [itNaoSomaTotalNFe, itSomaTotalNFe]);

end;

function StrToindTot(var ok: boolean; const s: string): TpcnIndicadorTotal;

begin

result := StrToEnumerado(ok, s, ['0', '1'], [itNaoSomaTotalNFe, itSomaTotalNFe]);

end;

Como você pode ver a primeira função converte os valores: itNaoSomaTotalNFe, itSomaTotalNFe nos caracteres: 0 e 1 respectivamente.

Já a segunda função realiza a operação inversa.

Apesar de estar escrito no manual que o campo é numérico o caracter zero representa o numero zero.

No fonte pcnNFeW (procedure GerarDetProd, campo indTot) é utilizado a função indTotToStr ou seja o retorno da função é String, portanto o primeiro paramentro do Gerardor.wCampo tem que ser tcStr.

Já no fonte pcnNFeR a linha:

(*I17b*)NFe.Det.Prod.IndTot := StrToindTot(ok,Leitor.rCampo(tcDe2, 'indTot'));

esta errada, porque a função Leitor.rCampo esta retornando um valor numérico com 2 casas decimais e esse valor esta sendo usado em uma função cujo dado de entrada é String.

Portanto o correto é:

(*I17b*)NFe.Det.Prod.IndTot := StrToindTot(ok,Leitor.rCampo(tcStr, 'indTot'));

No mesmo fonte (pcnNFeR) notei outros casos:

São eles:

(*B18*) NFe.Ide.NFref.RefNF.Modelo := StrToIntDef(Leitor.rCampo(tcInt, 'mod'),55);

(*N12a*)NFe.Det.Imposto.ICMS.CSOSN := StrToCSOSNIcms( ok,Leitor.rCampo(tcInt, 'CSOSN'));

Peço ao Daniel ou André que analise o caso.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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