Ir para conteúdo
  • Cadastre-se

dev botao

Importação de NFe via XML


James Willian
Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 1210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá pessoal, tenho algumas notas que não tem impostos(IPI, PIS, COFINS...), e ao importar o XML delas está sendo informado o CST 00 como padrão.

Teria uma forma de conferir e desconsiderar esses campos na importação quando o mesmo não tem no XML?

 

Ex.: Está sendo passado o CST do IPI para o campo do dataset.

cdsItensID_TBCSTIPI.AsString  := CSTIPIToStr(vNFe.Det.Items[x].Imposto.IPI.CST);

Neste caso, está sendo retornado 'ipi00', mesmo que na nota não tenha IPI.

Link para o comentário
Compartilhar em outros sites

o LoadFromFile já passa False por padrão para o segundo parâmetro.

function LoadFromFile(const CaminhoArquivo: String; AGerarNFe: Boolean = False): Boolean;

Tentei passar diretamente no código, mas continua retornando o 00.

 

Percebi que sempre ao utilizar a função CSTIPIToStr vai retornar um CST de acordo o enumerado passado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

A função realmente vai retornar ipi00 mesmo que não tenha IPI no XML.

Isso porque não existe um enumerado pra identificar o CST do IPI vazio.

Na geração do XML a rotina verifica se foi passado valor pra alguma tag, pra identificar como vazio, talvez você possa usar o mesmo conceito:

  //se valores padrão de quando não foi preenchido a TAG IPI
  if ((nfe.Det[i].Imposto.IPI.cEnq  = '') and
      (nfe.Det[i].Imposto.IPI.CST   = ipi00) and
      (nfe.Det[i].Imposto.IPI.vBC   = 0) and
      (nfe.Det[i].Imposto.IPI.qUnid = 0) and
      (nfe.Det[i].Imposto.IPI.vUnid = 0) and
      (nfe.Det[i].Imposto.IPI.pIPI  = 0) and
      (nfe.Det[i].Imposto.IPI.vIPI  = 0)) then
    Exit; //não deve preencher a TAG

 

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, BigWings disse:

A função realmente vai retornar ipi00 mesmo que não tenha IPI no XML.

Isso porque não existe um enumerado pra identificar o CST do IPI vazio.

Na geração do XML a rotina verifica se foi passado valor pra alguma tag, pra identificar como vazio, talvez você possa usar o mesmo conceito:


  //se valores padrão de quando não foi preenchido a TAG IPI
  if ((nfe.Det[i].Imposto.IPI.cEnq  = '') and
      (nfe.Det[i].Imposto.IPI.CST   = ipi00) and
      (nfe.Det[i].Imposto.IPI.vBC   = 0) and
      (nfe.Det[i].Imposto.IPI.qUnid = 0) and
      (nfe.Det[i].Imposto.IPI.vUnid = 0) and
      (nfe.Det[i].Imposto.IPI.pIPI  = 0) and
      (nfe.Det[i].Imposto.IPI.vIPI  = 0)) then
    Exit; //não deve preencher a TAG

 

Entendi, já estava considerando utilizar esta verificação direto no projeto. Só estava em dúvida se existia algo no ACBr que já tratasse isso.

Já estou implementando esta solução aqui, muito obrigado!

Link para o comentário
Compartilhar em outros sites

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