Ir para conteúdo
  • Cadastre-se

dev botao

AcbrNFSE Não esta saindo valor liquido


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

Recommended Posts

  • Membros Pro

Bom Dia Amigos...

estou com um problemao e espero que possam me ajudar...

eu uso a NFSE com provedor WebiSS V2.

e quando emito a nfse ele nao esta vendo na impressao o valor liquido correto...

 

exemplo NFSE

valor 600,00
iss 2%

Valor ISS 12,00

totalLiquido = 588,00

 

o xml esta correto mas a impressao sao 600,00

 

como proceder ???

segue em anexo o xml...

 

desde ja obrigado

2018000000000801-nfse.xml

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

o problema esta nessa parte do codigo

if Leitor.rExtrai(3, 'ValoresNfse') <> '' then
  begin
    NFSe.ValoresNfse.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
    NFSe.ValoresNfse.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
    NFSe.ValoresNfse.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
    NFSe.ValoresNfse.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');

    if (FProvedor = proCoplan) then
    begin
      NFSe.Servico.Valores.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
      NFSe.Servico.Valores.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
      NFSe.Servico.Valores.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
      NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
    end;
  end; // fim ValoresNfse

no meu caso ele entra na primeira parte onde esta  NFSe.ValoresNfse.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');

E ESTA PUXANDO CERTINHO....

porem quando vai chamar o DANFE... ele esta puxando a linha NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');

que esta zerado...  isso ocorre nos 4 campos (BaseCalculo  ,Aliquota  ,ValorIss   ,ValorLiquidoNfse )ai que esta o problema....

como podemos corrigir isso ??

 

att

Tiago Passarella

Editado por tiagopassarella
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

resolvi da seguinte forma... nao sei se é a correta mas temporariamente funcionou... gostaria de ver com vcs... pra gente arrumar ja no SVN

no inicio da funcao

function TNFSeR.LerNFSe_ABRASF_V2: Boolean;

eu adicionei 4 linhas conforme abaixo;.....

fazendo o antes e depois....

///////////////////////////////////
// ANTES
///////////////////////////////////
if Leitor.rExtrai(3, 'ValoresNfse') <> '' then
  begin

    NFSe.ValoresNfse.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
    NFSe.ValoresNfse.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
    NFSe.ValoresNfse.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
    NFSe.ValoresNfse.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');


    if (FProvedor = proCoplan) then
    begin
      NFSe.Servico.Valores.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
      NFSe.Servico.Valores.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
      NFSe.Servico.Valores.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
      NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
    end;
  end; // fim ValoresNfse

/////////////////////////////
// DEPOIS
/////////////////////////////

if Leitor.rExtrai(3, 'ValoresNfse') <> '' then
  begin
    NFSe.Servico.Valores.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo'); // adicionei
    NFSe.Servico.Valores.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');  // adicionei
    NFSe.Servico.Valores.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');  // adicionei
    NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');  // adicionei

    NFSe.ValoresNfse.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
    NFSe.ValoresNfse.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
    NFSe.ValoresNfse.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
    NFSe.ValoresNfse.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');


    if (FProvedor = proCoplan) then
    begin
      NFSe.Servico.Valores.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
      NFSe.Servico.Valores.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
      NFSe.Servico.Valores.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
      NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
    end;
  end; // fim ValoresNfse

E ALTEREI TBM A SEGUINTE PARTE DO CODIGO ABAIXO TBM MOSTRANDO O ANTES E DEPOIS...

 

/////////////////////////////
//ANTES
/////////////////////////////

if (Leitor.rExtrai(Nivel+1, 'Valores') <> '') then
      begin
        NFSe.Servico.Valores.ValorServicos   := Leitor.rCampo(tcDe2, 'ValorServicos');
        NFSe.Servico.Valores.ValorDeducoes   := Leitor.rCampo(tcDe2, 'ValorDeducoes');
        NFSe.Servico.Valores.ValorPis        := Leitor.rCampo(tcDe2, 'ValorPis');
        NFSe.Servico.Valores.ValorCofins     := Leitor.rCampo(tcDe2, 'ValorCofins');
        NFSe.Servico.Valores.ValorInss       := Leitor.rCampo(tcDe2, 'ValorInss');
        NFSe.Servico.Valores.ValorIr         := Leitor.rCampo(tcDe2, 'ValorIr');
        NFSe.Servico.Valores.ValorCsll       := Leitor.rCampo(tcDe2, 'ValorCsll');
        NFSe.Servico.Valores.OutrasRetencoes := Leitor.rCampo(tcDe2, 'OutrasRetencoes');
        NFSe.Servico.Valores.ValorIss        := Leitor.rCampo(tcDe2, 'ValorIss');
        NFSe.Servico.Valores.BaseCalculo            := Leitor.rCampo(tcDe2, 'BaseCalculo');
        NFSe.Servico.Valores.Aliquota        := Leitor.rCampo(tcDe3, 'Aliquota');

        if (FProvedor in [proActconv202]) then
          NFSe.Servico.Valores.Aliquota := (NFSe.Servico.Valores.Aliquota * 100);

        if (FProvedor in [proActconv202, proISSe, proVersaTecnologia, proNEAInformatica, proFiorilli, proPronimv2, proVitoria]) then
        begin
          if NFSe.Servico.Valores.IssRetido = stRetencao then
            NFSe.Servico.Valores.ValorIssRetido := Leitor.rCampo(tcDe2, 'ValorIss')
          else
            NFSe.Servico.Valores.ValorIssRetido := 0;
        end
        else
          NFSe.Servico.Valores.ValorIssRetido := Leitor.rCampo(tcDe2, 'ValorIssRetido');

///////////////////////////////
//DEPOIS
////////////////////////////////
if (Leitor.rExtrai(Nivel+1, 'Valores') <> '') then
      begin
        NFSe.Servico.Valores.ValorServicos   := Leitor.rCampo(tcDe2, 'ValorServicos');
        NFSe.Servico.Valores.ValorDeducoes   := Leitor.rCampo(tcDe2, 'ValorDeducoes');
        NFSe.Servico.Valores.ValorPis        := Leitor.rCampo(tcDe2, 'ValorPis');
        NFSe.Servico.Valores.ValorCofins     := Leitor.rCampo(tcDe2, 'ValorCofins');
        NFSe.Servico.Valores.ValorInss       := Leitor.rCampo(tcDe2, 'ValorInss');
        NFSe.Servico.Valores.ValorIr         := Leitor.rCampo(tcDe2, 'ValorIr');
        NFSe.Servico.Valores.ValorCsll       := Leitor.rCampo(tcDe2, 'ValorCsll');
        NFSe.Servico.Valores.OutrasRetencoes := Leitor.rCampo(tcDe2, 'OutrasRetencoes');
       // NFSe.Servico.Valores.ValorIss        := Leitor.rCampo(tcDe2, 'ValorIss');  // comentei essa linha
//        NFSe.Servico.Valores.BaseCalculo            := Leitor.rCampo(tcDe2, 'BaseCalculo'); // comentei essa linha
       // NFSe.Servico.Valores.Aliquota        := Leitor.rCampo(tcDe3, 'Aliquota'); // comentei essa linha

        if (FProvedor in [proActconv202]) then
          NFSe.Servico.Valores.Aliquota := (NFSe.Servico.Valores.Aliquota * 100);

        if (FProvedor in [proActconv202, proISSe, proVersaTecnologia, proNEAInformatica, proFiorilli, proPronimv2, proVitoria]) then
        begin
          if NFSe.Servico.Valores.IssRetido = stRetencao then
            NFSe.Servico.Valores.ValorIssRetido := Leitor.rCampo(tcDe2, 'ValorIss')
          else
            NFSe.Servico.Valores.ValorIssRetido := 0;
        end
        else
          NFSe.Servico.Valores.ValorIssRetido := Leitor.rCampo(tcDe2, 'ValorIssRetido');

 

pra mim funcionou assim... esta correta a solução acima ?

Editado por tiagopassarella
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
35 minutos atrás, Italo Jurisato Junior disse:

Boa tarde Tiago,

Favor anexar a unit alterada para que possamos analisar as alterações.

segue a unit que eu alterei ... lembrando que eu so alterei o abrasfv2

acredito que deverao ser colocado pra todoss....

 

pnfsNFSeR.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Tiago,

Infelizmente não vou poder aceitar a sua contribuição, por dois motivos:

1. O seus fontes estão desatualizados;

2. Você não pode comentar linhas sem saber se isso não vai gerar um efeito colateral em outros provedores.

Outra coisa, veja a sua implementação em : if Leitor.rExtrai(3, 'ValoresNfse') <> '' then

As linhas que você adicionou elas já existem mais abaixo, não seria interessante colocar o provedor em questão em:

if (FProvedor = proCoplan) then

alterar para:

if (FProvedor in [proCoplan, <acrescentar aqui o provedor>]) then

Favor atualizar os fontes e repense a sua implementação.
 

 

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
14 horas atrás, Italo Jurisato Junior disse:

Boa tarde Tiago,

Infelizmente não vou poder aceitar a sua contribuição, por dois motivos:

1. O seus fontes estão desatualizados;

2. Você não pode comentar linhas sem saber se isso não vai gerar um efeito colateral em outros provedores.

Outra coisa, veja a sua implementação em : if Leitor.rExtrai(3, 'ValoresNfse') <> '' then

As linhas que você adicionou elas já existem mais abaixo, não seria interessante colocar o provedor em questão em:

if (FProvedor = proCoplan) then

alterar para:

if (FProvedor in [proCoplan, <acrescentar aqui o provedor>]) then

Favor atualizar os fontes e repense a sua implementação.
 

 

entao italo na verdade eu fiz um QUEBRA GALHO so pra sanar o problemas do cliente que estava esperando... talvez eu tenha me expressado mau mas nem era pra atualizar no SVN o que eu fiz mesmo uma vez que nem tenho um conhecimento a fundo do componente. mas vou atualizar os fontes pra ver a sua correção e logo mais ja digo como ficou... mas obrigado pela explicação italo... e sempre bom poder contar com vcs...

 

att

Tiago

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
8 minutos atrás, tiagopassarella disse:

entao italo na verdade eu fiz um QUEBRA GALHO so pra sanar o problemas do cliente que estava esperando... talvez eu tenha me expressado mau mas nem era pra atualizar no SVN o que eu fiz mesmo uma vez que nem tenho um conhecimento a fundo do componente. mas vou atualizar os fontes pra ver a sua correção e logo mais ja digo como ficou... mas obrigado pela explicação italo... e sempre bom poder contar com vcs...

 

att

Tiago

bom dia italo...

nao funcionou apos atulizar os fontes voltou tudo como era antes.... sem aparecer os valores dos impostos... o valor liquido estar igual ao valor da base de calculo...

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Italo eu fiz umas alterações na UNIT que segue em anexo veja se assim pode ser aceito para colocar no SVN pois acredito que todos que estao usando o webissv2 estao com mesmo problema...

 

no inicio eu segui a sua recomendação realizando a seguinte alteração..

if (FProvedor in [proCoplan,proWebISSv2]) then

e mais no final as seguintes linhas

 

if NFSe.Servico.Valores.ValorIss = 0 then
        NFSe.Servico.Valores.ValorIss        := Leitor.rCampo(tcDe2, 'ValorIss');   // aalterei aki

//        NFSe.Servico.Valores.BaseCalculo            := Leitor.rCampo(tcDe2, 'BaseCalculo');
        if NFSe.Servico.Valores.Aliquota = 0 then
        NFSe.Servico.Valores.Aliquota        := Leitor.rCampo(tcDe3, 'Aliquota'); // alterei aki

 

 

alterei essa linha pois la no inicio do codigo ja e alimentado com os valores nesses pontos...porem quando chega ai embaixo ele estava zerando os valores uma vez que essas tags nao estavam sendo encontradas nesse nó (nivel+1).

entao coloquei que so entrar se ele for = 0. assim acredito que nao prejudica ninguem...

 

segue em anexo a unit alterada...

pnfsNFSeR.pas

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
25 minutos atrás, Italo Jurisato Junior disse:

Bom dia Tiago,

Muito obrigado pela colaboração, ainda hoje estarei enviando para o repositório.

ok obrigado italo... assim que estiver la se puder nos avisar... assim deixamos atualizado como tem de ser...

 

obrigado pela atenção de sempre...

Link para o comentário
Compartilhar em outros sites

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