Ir para conteúdo
  • Cadastre-se

dev botao

DANFSE ISSSaoPaulo não está sendo descontado as retenções do valor líquido.


Ver Solução Respondido por FabioTellini,
  • Este tópico foi criado há 855 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde.

Na impressão da DANFSE, unit ACBrNFSeXDANFSeFR, procedure CarregaServicos, o dataset está recebendo os valores de NFSe.Servico.Valores, até essa parte do código o campo FieldByName('ValorLiquidoNfse').AsFloat está sendo considerado as retenções, mas na sequência tem o seguinte trecho:

with ANFSe.ValoresNfse do
begin
  if ValorIss > 0 then
  begin
    FieldByName('ValorServicos').AsFloat          := BaseCalculo;
    FieldByName('ValorIss').AsFloat               := ValorIss;
    FieldByName('BaseCalculo').AsFloat            := BaseCalculo;
    FieldByName('Aliquota').AsFloat               := Aliquota;

    if ValorLiquidoNfse = 0 then
      ValorLiquidoNfse:= BaseCalculo;

    FieldByName('ValorLiquidoNfse').AsFloat       := ValorLiquidoNfse;
  end;
end;

ANFSe.ValoresNfse.ValorLiquidoNfse, na leitura do xml não foi descontado os valores das retenções da forma que foi feito com NFSe.Servico.Valores e com isso o valor liquido está sendo impresso sem descontar as retenções.

Analisando a unit ISSSaoPaulo.LerXml, percebi que os valores de NFS.Servico.Valores recebem os valores de NFSe.ValoresNfse.
Fiquei na dúvida se teria a necessidade de ter o trecho do código citado acima. 
(Obs: só analisei a leitura do xml do provedor ISSSaoPaulo, não sei se esse trecho do código é por causa de algum outro provedor)


Ou se na unit ISSSaoPaulo.LerXml, na leitura do xml a NFSe.ValoresNfse.ValorLiquidoNfse já não poderia ter os valores das retenções descontadas, da forma que está sendo feito com a NFSe.Servico.Valores.ValorLiquidoNfse.

  with NFSe.ValoresNfse do
  begin
    ValorLiquidoNfse := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorServicos'), tcDe2);
    BaseCalculo      := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorServicos'), tcDe2);
    Aliquota         := ObterConteudo(AuxNode.Childrens.FindAnyNs('AliquotaServicos'), tcDe2);
    ValorIss         := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorISS'), tcDe2);

    Aliquota := (NFSe.ValoresNfse.Aliquota * 100);
  end;

  aValor := ObterConteudo(AuxNode.Childrens.FindAnyNs('CodigoServico'), tcStr);

  SetxItemListaServico(aValor);

  NFSe.Servico.Discriminacao := ObterConteudo(AuxNode.Childrens.FindAnyNs('Discriminacao'), tcStr);

  aValor := ObterConteudo(AuxNode.Childrens.FindAnyNs('ISSRetido'), tcStr);

  with NFSe.Servico.Valores do
  begin
    ValorServicos := NFSe.ValoresNfse.ValorLiquidoNfse;
    BaseCalculo   := NFSe.ValoresNfse.BaseCalculo;
    Aliquota      := NFSe.ValoresNfse.Aliquota;
    ValorIss      := NFSe.ValoresNfse.ValorIss;
    ValorPis      := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorPIS'), tcDe2);
    ValorCofins   := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorCOFINS'), tcDe2);
    ValorInss     := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorINSS'), tcDe2);
    ValorIr       := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorIR'), tcDe2);
    ValorCsll     := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorCSLL'), tcDe2);

    if aValor = 'false' then
      IssRetido := stNormal
    else
      IssRetido := stRetencao;

    ValorLiquidoNfse := ValorServicos -
                        (ValorPis + ValorCofins + ValorInss + ValorIr + ValorCsll +
                         ValorDeducoes + DescontoCondicionado +
                         DescontoIncondicionado + ValorIssRetido);
  end;

  Obrigado.

NFSe.png

Postado

Para não alterar a unit ACBrNFSeDANFse que é usada por todos os provedores, eu fiz uma pequena alteração na ISSSaoPaulo.LerXml.

Na procedure LerXmlNfse eu deixei da seguinte forma:

  with NFSe.Servico.Valores do
  begin
    ValorServicos := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorServicos'), tcDe2);
    BaseCalculo   := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorServicos'), tcDe2);
    Aliquota      := ObterConteudo(AuxNode.Childrens.FindAnyNs('AliquotaServicos'), tcDe2);
    ValorIss      := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorISS'), tcDe2);
    ValorPis      := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorPIS'), tcDe2);
    ValorCofins   := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorCOFINS'), tcDe2);
    ValorInss     := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorINSS'), tcDe2);
    ValorIr       := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorIR'), tcDe2);
    ValorCsll     := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorCSLL'), tcDe2);


    if aValor = 'false' then
      IssRetido := stNormal
    else
      IssRetido := stRetencao;

    ValorLiquidoNfse := ValorServicos -
                        (ValorPis + ValorCofins + ValorInss + ValorIr + ValorCsll +
                         ValorDeducoes + DescontoCondicionado +
                         DescontoIncondicionado + ValorIssRetido);
  end;

  with NFSe.ValoresNfse do
  begin
    ValorLiquidoNfse := NFSe.Servico.Valores.ValorLiquidoNfse;
    BaseCalculo      := NFSe.Servico.Valores.BaseCalculo;
    Aliquota         := NFSe.Servico.Valores.Aliquota;
    ValorIss         := NFSe.Servico.Valores.ValorIss;

    Aliquota := (NFSe.Servico.Valores.Aliquota * 100);
  end;

Apenas inverti a ordem da leitura, NFSe.Servico.Valores recebe os valores do XML e NFSe.ValoresNfse recebe o valor de NFSe.Servico.Valores.

Nos meus testes aqui ficou certo a impressão.

Obs: Não estou com a última versão dos fontes do ACBr, mas comparei a minha versão com a última revisão e essa procedure está igual.

 

NFSe.png

  • Administradores
Postado

Boo tarde @ftellini

Obrigada pela análise, poderia por favor anexar o pas alterado?

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Administradores
Postado

Obrigado pela contribuição, em breve será validada para possível inclusão ao svn

TK-2922

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 855 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.