Ir para conteúdo
  • Cadastre-se

dev botao

Problema para obter o código de serviço da NFSe.


gerasoft

Recommended Posts

Estou importando o NFSe do anexo utilizando NFSeX com o código abaixo e não estou conseguindo capturar o código do serviço.

var
  ACBrNFSeX: TACBrNFSeX;
begin
  ACBrNFSeX := TACBrNFSeX.Create(nil);
  try
    ACBrNFSeX.SetProvedor(proIPM, ve100);
    ACBrNFSeX.NotasFiscais.LoadFromFile(Edit1.Text, False);
    ACBrNFSeX.NotasFiscais.Items[0].NFSe.Servico.ItemListaServico; //Retorna em branco.
    ACBrNFSeX.NotasFiscais.Items[0].NFSe.Servico.ItemServico[0].CodServ; //Retorna em branco.
    ACBrNFSeX.NotasFiscais.Items[0].NFSe.Servico.ItemServico[0].ItemListaServico; //Retorna 0702. --> O que mais se aproxima é esse aqui, porém retorna um 0 a mais.
    ACBrNFSeX.NotasFiscais.Items[0].NFSe.Servico.ItemServico[0].CodLCServ; //Retorna em branco.
  finally
    ACBrNFSeX.Free;
  end;
end;

Arapongas.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia @gerasoft,

Para você entender o porque de que alguns campos estão zerados ou vazios, basta abrir o XML e verificar se a informação existe no XML.

Outra coisa, abra a unit IPM.LerXml (uma vez que o provedor é IPM versão 1.00) e verifica se nessa unit tem alguma linha que lê alguma tag do XML e armazena o seu conteúdo no campo CodLCServ (por exemplo).

Se não tem a linha isso explica o motivo desse campo estar retornando uma string vazia.

No que se refere ao campo ItemListaServico devemos sempre ao alimentar o componente para emitir a nota, informar esse campo no formato xx.yy o componente vai remover o ponto ou o zero a esquerda se assim o provedor exige.

Portanto ao ler essa informação do XML se estiver 702, o componente formata essa informação deixando-a no formato xx.yy dai temos como resposta 07.02

Espero ter ajudado.

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

Temos um XML de Guarapuava, que está em anexo, com um código de serviço de 5 digitos <21009>, porém o IPM retorna apenas 4 digitos <2100> conforme o código abaixo retirado do IPM.LerXml:

          aValor := ObterConteudo(ANodes[i].Childrens.FindAnyNs('codigo_item_lista_servico'), tcStr);
          ItemListaServico := PadLeft(aValor, 4, '0');

NFSe Guarapuava.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia @gerasoft,

E qual seria o serviço cujo código é 21009 ?

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

O código de serviço correto é 1009 (Segundo o contador que consultei), porém no sistema da IPM é permitido digitar 5 digitos, devendo ser ignorado o primeiro. Porém o IPM.LerXml está ignorando o último.

Código no XML <21009>

Está Retornando <2100>

Deveria Retornar <1009>

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia @gerasoft,

Se o provedor IPM permite informar um código de até 5 dígitos devendo ser ignorado o primeiro, o código 21009 tem que ser informando como sendo 1009 (primeiro digito ignorado).

Informando somente 1009, no meio entendimento vai constar esse código tanto no XML a enviado quanto no de retorno.

Chegou a fazer esse teste?

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

  • Consultores

Bom dia @gerasoft,

Você fez o teste que eu sugeri acima?

Se sim, qual foi o resultado?

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

  • Consultores

Boa tarde @gerasoft,

Desculpe pela demora, vamos fazer o seguinte teste:

Na unit que faz a leitura do XML (IPM.LerXml temos o seguinte:

          aValor := ObterConteudo(ANodes[i].Childrens.FindAnyNs('codigo_item_lista_servico'), tcStr);
          ItemListaServico := PadLeft(aValor, 4, '0');

altere para:

          aValor := ObterConteudo(ANodes[i].Childrens.FindAnyNs('codigo_item_lista_servico'), tcStr);
          ItemListaServico := aValor;

Salve a unit alterada, reinstale o ACBr e faça um novo teste.

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

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.