Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Respostas 53
  • Created
  • Última resposta

Top Posters In This Topic

  • Consultores
Postado

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

Araraquara - A era dos Trólebus

Postado

Italo.

Sim, apaguei todos os arquivos para garantir e baixei tudo novamente, todos estão com a bolinha verde e esta marcado a opção para remover os arquivos antigos.

Postado
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?

Postado

Italo,

Na unit pnfsNFSeW_EL as linhas 248 e 249 não foram alteradas, ainda estão como tcDe2, e deve ser pelo menos tcDe4 para esse provedor.

Estou enviando a unit alterada para que você possa fazer o merge.

Fico no aguardo de retorno.

pnfsNFSeW_EL.pas

Postado
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?

Postado

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.

Postado
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.

Postado

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;

Postado

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?

Postado

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

Postado (editado)

Beleza Gumercino, vou atualizar agora e testar.

Obrigada.

 

Gumercino, atualizei e a unit referida não veio no pacote de fontes atualizados. :huh:

Então deletei a unit e, ao receber novamente, está da forma antiga, com o erro.

Em anexo envio a mesma.

pnfsNFSeR.pas

Editado por NatyEb
Postado

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.

Postado

NatyEb, bom dia.

Verifiquei com Italo e os fontes estão corretos, apenas foi alterado a parte que você citou acima, tendo que passar para baixo a alimentação da variável "AValorToal".

Já fiz a alteração, encaminhei para Italo e ele vai atualizar.

Abraços

  • 2 semanas depois ...
  • Este tópico foi criado há 2519 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.