Ir para conteúdo
  • Cadastre-se

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


Ver Solução Respondido por Italo Giurizzato Junior,

Recommended Posts

Postado

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

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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

Postado

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>

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

  • Consultores
  • Solution
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 anos depois...
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...