Ir para conteúdo
  • Cadastre-se

dev botao

Ajuste na Alíquota para o provedor Thema


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

Recommended Posts

Postado

Boa tarde amigos!

Na emissão de NFSe para o provedor Thema, o componente identifica que o valor informado na Alíquota do serviço deve ser dividido por 100 ao ser gravado no XML. Porém ao carregar o XML, esta alíquota deveria ser multiplicada por 100 para ter o valor original, e isso não está ocorrendo. Ao carregar um XML e em seguida gerá-lo novamente, o problema já aparece.

Eu fiz uma pequena alteração no arquivo pnfsNFSeR.pas da seguinte forma:

if (Leitor.rExtrai(4, 'Valores') <> '') or
         (Leitor.rExtrai(3, 'Valores') <> '') then
      begin
        NFSe.Servico.Valores.ValorServicos          := Leitor.rCampo(tcDe2, 'ValorServicos');
        NFSe.Servico.Valores.ValorDeducoes          := Leitor.rCampo(tcDe2, 'ValorDeducoes');
        NFSe.Servico.Valores.ValorTotalRecebido     := Leitor.rCampo(tcDe2, 'ValorTotalRecebido');
        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.IssRetido              := StrToSituacaoTributaria(ok, Leitor.rCampo(tcStr, 'IssRetido'));
        NFSe.Servico.Valores.ValorIss               := Leitor.rCampo(tcDe2, 'ValorIss');
        NFSe.Servico.Valores.OutrasRetencoes        := Leitor.rCampo(tcDe2, 'OutrasRetencoes');
        NFSe.Servico.Valores.BaseCalculo            := Leitor.rCampo(tcDe2, 'BaseCalculo');
        NFSe.Servico.Valores.Aliquota               := Leitor.rCampo(tcDe3, 'Aliquota');

        //Adicionado aqui
        if (FProvedor in [proThema]) then
          NFSe.Servico.Valores.Aliquota := (NFSe.Servico.Valores.Aliquota * 100);
        //--

        NFSe.Servico.Valores.ValorLiquidoNfse       := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
        NFSe.Servico.Valores.ValorIssRetido         := Leitor.rCampo(tcDe2, 'ValorIssRetido');
        NFSe.Servico.Valores.DescontoCondicionado   := Leitor.rCampo(tcDe2, 'DescontoCondicionado');
        NFSe.Servico.Valores.DescontoIncondicionado := Leitor.rCampo(tcDe2, 'DescontoIncondicionado');
      end;

Peguei por base o mesmo padrão usado em outros arquivos do fonte.

Segue em anexo o arquivo alterado para análise. Obrigado!

pnfsNFSeR.pas

Postado

Pelo que vi, esta modificação também se aplica aos demais provedores que usam a divisão por 100.

A rotina acima é a LerRPS_ABRASF_V1, mas também tive que alterar a LerNFSe_ABRASF_V1.

Postado

Boa tarde Ítalo,

Você fez as alterações mas manteve comentado na função LerNFSe_ABRASF_V1. Nos meus testes, estes deveriam estar descomentados para que funcione corretamente. Encontrou algum problema para deixar comentado?

Obrigado!

Postado
Em 21/01/2020 at 15:35, Italo Jurisato Junior disse:

Boa tarde Leandro,

Se não me falha a memória no caso do XML da NFS-e o tratamento de multiplicar ou não a alíquota por 100 é feito pelo componente de impressão do DANFSE.

Obrigado por responder Ítalo!

Mas neste caso, o interessante não seria os dados serem tratados na fonte em vez da impressão? Desta forma o componente ainda gera um XML com erro se der um Load e depois um Save. Penso que a informação já deva estar correta no componente e apenas ser passada para a impressão, e não ser tratada na impressão. Isso procede?

Muito obrigado!

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