Ir para conteúdo
  • Cadastre-se

dev botao

Erro no retorno da NFSe


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

Recommended Posts

  • Consultores

Gumercino,

O campo Quantidade tem 3 casas decimais?

Se sim quantos dígitos tem antes do ponto decimal?

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

  • Respostas 53
  • Created
  • Última resposta

Top Posters In This Topic

  • Consultores

Gumercino,

Favor atualizar os fontes, reinstalar os componentes com o ACBrInstall_Trunk2 e faça novos testes.

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 Gumercino,

Você esta com todos os fontes de todas as pastas atualizados?

Todos os ícones contem a bolinha verde?

Antes de iniciar a instalação, você marcou a opção para apagar os arquivos antigos?

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

Em 15/01/2018 at 11:47, Italo Jurisato Junior disse:

Gumercino,

Antes o retorno constava o código 1 ao consultar a situação do lote, agora esta retornando 4 que indica que o lote foi processado com sucesso.

Agora é preciso executar o método ConsultarLoteRps.

Vamos a um resumo do processo.

Após alimentar o componente com os dados da nota de serviço, devemos executar o método Enviar, em seguida executar o método ConsultarSituacao (depende do provedor), em seguida executar o método ConsultarLoteRps, se a situação do lote for 3 ao consultar o lote teremos como resposta o motivo da rejeição, agora se a situação for 4, teremos como resposta o XML da NFS-e.

Agora se você atribuir o valor True a propriedade de configuração: ConsultarLoteAposEnvio o componente se encarrega de realizar as consultas automaticamente, neste caso basta executar somente o método Enviar.

Este processo não funciona com o provedor ISSDSF, pois o mesmo retorna uma alerta "203 - Lote nao processado ainda", e o ACBr  exibie uma exceção e pára de executar a consulta. Esta mensagem retornada pelo provedor não significa que o lote está com erro, e sim para aguardar o final do processamento, existe alguma maneira de resolver isso?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Gumercino,

Muito obrigado pela colaboração, já esta no repositório.

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

22 horas atrás, hromao disse:

Este processo não funciona com o provedor ISSDSF, pois o mesmo retorna uma alerta "203 - Lote nao processado ainda", e o ACBr  exibie uma exceção e pára de executar a consulta. Esta mensagem retornada pelo provedor não significa que o lote está com erro, e sim para aguardar o final do processamento, existe alguma maneira de resolver isso?

@Italo Jurisato Junior, pode me ajudar?

Existe alguma maneira, estou fazendo alguma coisa errada?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite hromao,

Favor anexar o xml de retorno ao enviar o lote para que possamos analisar.

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

Em 19/01/2018 at 13:33, Gumercino disse:

Boa tarde Italo.

Já finalize toda parte de implementação necessária para o Provedor EL, assim que estiver disponível me avise para que eu te envie os arquivos e passe tudo que alterei para que seja avaliado o atualizado.

Gumercino, boa tarde.

Nessa implementação que você finalizou, realizou alguma alteração na Unit "pnfsNFSeR", em relação a última versão disponível?

Digo porque, ao utilizar a function TNFSeR.LerRps_EL: Boolean, estou tendo problema na linha "AValorTotal := NFSe.Servico.ItemServico.Items[I - 1].Quantidade *   NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario;"; antes havia uma linha que adicionava o item (with NFSe.Servico.ItemServico.Add do) e na última atualização ela não está mais presente, ocasionando o erro (não existem itens na lista).

Quero saber se posso realizar a alteração ou se você já acertou essa parte.

Obrigada.

Link para o comentário
Compartilhar em outros sites

Boa tarde NatyEb.

Essa alteração que fiz foi para que seja possível informar mais de 1 serviço para o provedor EL, sendo que no momento de alimentar o componente ACBrNFSe na parte dos serviços eu incluo vários, e não utilizo o método "Serviço.ItemServico.Add" e sim o faço um loop com "Serviço.ItemServico.Insert(Index: Integer)" e passando os valores, então alterei a function TNFSeR.LerRps_EL para ler vários serviços também.

Acredito que dessa forma seja melhor para trabalhar, pois foi passado para mim como dica por um técnico da EL e logo depois passei para Italo.

Peço que dê um retorno se posicionando referente ao mesmo para que possamos deixar o componente da melhor maneira possível para utilização de todos.

Segue exemplo:

        FMovNFSe.fdqryServicos.First;
        while not FMovNFSe.fdqryServicos.Eof do
        begin
          Servico.ItemServico.Insert(FMovNFSe.fdqryServicos.RecNo - 1);
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Descricao              := FMovNFSe.fdqryServicosNOME_SERVICO.AsString;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Discriminacao          := FMovNFSe.fdqryServicosNOME_SERVICO.AsString;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].CodServ                := FMovNFSe.fdqryNFSeSERVICO_MUNICIPAL.AsString;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].CodLCServ              := FMovNFSe.fdqryNFSeSERVICO_MUNICIPAL.AsString;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Unidade                := FMovNFSe.fdqryServicosUNIDADE.AsString;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Quantidade             := FMovNFSe.fdqryServicosQUANTIDADE.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorUnitario          := FMovNFSe.fdqryServicosVL_UNITARIO.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorServicos          := FMovNFSe.fdqryServicosVL_UNITARIO.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].DescontoCondicionado   := 0;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].DescontoIncondicionado := 0;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorDeducoes          := 0;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorPis               := FMovNFSe.fdqryServicosVL_PIS.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorCofins            := FMovNFSe.fdqryServicosVL_COFINS.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorInss              := FMovNFSe.fdqryServicosVL_INSS.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorIr                := FMovNFSe.fdqryServicosVL_IR.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorCsll              := FMovNFSe.fdqryServicosVL_CSLL.AsCurrency;
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorTotal             := RoundTo(FMovNFSe.fdqryServicosQUANTIDADE.AsCurrency *
                                                                                          FMovNFSe.fdqryServicosVL_UNITARIO.AsCurrency, - 2);
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].BaseCalculo            := RoundTo(FMovNFSe.fdqryServicosQUANTIDADE.AsCurrency *
                                                                                          FMovNFSe.fdqryServicosVL_UNITARIO.AsCurrency, - 2);
          Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Aliquota               := vDadosNFSe.rAliqISS;

          case FMovNFSe.fdqryNFSeTIPO_ISS.AsInteger of
            2: Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorIss := FMovNFSe.fdqryServicosVL_ISS_RET.AsCurrency
          else
            Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].ValorIss := FMovNFSe.fdqryServicosVL_ISS.AsCurrency;
          end;

          if vDadosNFSe.rAliqISS > 0 then
            Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Tributavel := snSim
          else
            Servico.ItemServico[FMovNFSe.fdqryServicos.RecNo - 1].Tributavel := snNao;

          FMovNFSe.fdqryServicos.Next;
        end;

Link para o comentário
Compartilhar em outros sites

Gumercino, entendi.

Creio que o único erro foi a posição da linha "AValorTotal := NFSe.Servico.ItemServico.Items[I - 1].Quantidade * NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario;":

Citar

 

// Dados dos Serviços
    if (Leitor.rExtrai(2, 'Servicos') <> '') then
    begin
      // Total máximo de 12 serviços na prefeitura
      for I := 1 to 12 do
      begin
        if (Leitor.rExtrai(3, 'Servico', 'Servico', I) <> '') then
        begin
          NFSe.Servico.ItemListaServico := OnlyNumber(Leitor.rCampo(tcStr, 'CodigoServico116'));

          AValorTotal := NFSe.Servico.ItemServico.Items[I - 1].Quantidade *
                         NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario;

          NFSe.Servico.ItemServico.Insert(I - 1);
          NFSe.Servico.ItemServico.Items[I - 1].CodServ       := Leitor.rCampo(tcStr, 'CodigoServico116');
          NFSe.Servico.ItemServico.Items[I - 1].CodLCServ     := Leitor.rCampo(tcStr, 'CodigoServico116');
          NFSe.Servico.ItemServico.Items[I - 1].Quantidade    := Leitor.rCampo(tcInt, 'Quantidade');
          NFSe.Servico.ItemServico.Items[I - 1].Unidade       := Leitor.rCampo(tcStr, 'Unidade');
          NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario := Leitor.rCampo(tcDe2, 'ValorServico');
          NFSe.Servico.ItemServico.Items[I - 1].Descricao     := Leitor.rCampo(tcStr, 'Descricao');
          NFSe.Servico.ItemServico.Items[I - 1].Aliquota      := Leitor.rCampo(tcDe2, 'Aliquota');
          NFSe.Servico.ItemServico.Items[I - 1].ValorServicos := Leitor.rCampo(tcDe2, 'ValorServico');
          NFSe.Servico.ItemServico.Items[I - 1].ValorIss      := Leitor.rCampo(tcDe4, 'ValorIssqn');
          NFSe.Servico.ItemServico.Items[I - 1].ValorTotal    := RoundTo(AValorTotal, - 2);
        end
        else
          Break;
      end;
    end; // fim Servicos

 

Acredito que deveria ficar assim:

Citar

 

// Dados dos Serviços
    if (Leitor.rExtrai(2, 'Servicos') <> '') then
    begin
      // Total máximo de 12 serviços na prefeitura
      for I := 1 to 12 do
      begin
        if (Leitor.rExtrai(3, 'Servico', 'Servico', I) <> '') then
        begin
          NFSe.Servico.ItemListaServico := OnlyNumber(Leitor.rCampo(tcStr, 'CodigoServico116'));

          NFSe.Servico.ItemServico.Insert(I - 1);

          NFSe.Servico.ItemServico.Items[I - 1].CodServ       := Leitor.rCampo(tcStr, 'CodigoServico116');
          NFSe.Servico.ItemServico.Items[I - 1].CodLCServ     := Leitor.rCampo(tcStr, 'CodigoServico116');
          NFSe.Servico.ItemServico.Items[I - 1].Quantidade    := Leitor.rCampo(tcInt, 'Quantidade');
          NFSe.Servico.ItemServico.Items[I - 1].Unidade       := Leitor.rCampo(tcStr, 'Unidade');
          NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario := Leitor.rCampo(tcDe2, 'ValorServico');
          NFSe.Servico.ItemServico.Items[I - 1].Descricao     := Leitor.rCampo(tcStr, 'Descricao');
          NFSe.Servico.ItemServico.Items[I - 1].Aliquota      := Leitor.rCampo(tcDe2, 'Aliquota');
          NFSe.Servico.ItemServico.Items[I - 1].ValorServicos := Leitor.rCampo(tcDe2, 'ValorServico');
          NFSe.Servico.ItemServico.Items[I - 1].ValorIss      := Leitor.rCampo(tcDe4, 'ValorIssqn');

          AValorTotal := NFSe.Servico.ItemServico.Items[I - 1].Quantidade *
                         NFSe.Servico.ItemServico.Items[I - 1].ValorUnitario;

          NFSe.Servico.ItemServico.Items[I - 1].ValorTotal    := RoundTo(AValorTotal, - 2);
        end
        else
          Break;
      end;
    end; // fim Servicos

 

Concorda?

Link para o comentário
Compartilhar em outros sites

NatyEb,

Bem observado, concordo sim.

Vou alterar aqui e enviar para Italo fazer a atualização do componente.

Lembrando que também criei um arquivo .FR3 para o provedor que já esta disponível na versão atual do ACBr, que já vem preparada com o QRCode e demais campos.

Abraços

NatyEb,

Observei a unit aqui e já foi feito o ajuste da mesma e disponibilizada para atualização.

Atualize seu ACBr, faça o teste e me dê um retorno por gentileza.

Abraços

Link para o comentário
Compartilhar em outros sites

NatyEb.

Acabei de conversar com Italo, ele me disse que vai verificar com o pessoal se alguém voltou alguma versão, e vai me posicionar sobre a situação.

Assim que ele me posicionar eu te repasso.

Eu tenho as units aqui, pois antes de fazer a atualização agora eu fiz uma cópia do meu ACBr, caso vc queira para testar me avise que te envio.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Boa tarde hromao,

Favor atualizar os fontes e refaça os testes.

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á 2255 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...