Ir para conteúdo
  • Cadastre-se

dev botao

Calcular de olho no imposto NFCE


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

Recommended Posts

Boa tarde pessoal,

estou utilizando a tabela ibpt para calcular o de olho no imposto mais não sei se esta certo gostaria da opinião de vocês

fiz essa rotina para calcular item a item baseado em que encontrei aqui no fórum

veja como ficou

 

/////////////////////////////////////////////////
//Função utilizada para truncar um valor real
/////////////////////////////////////////////////
Function Truncar(Value:Real;Casas:Integer):Real;
/////////////////////////////////////////////////
Var sValor:String;
    nPos:Integer;
begin
   //Transforma o valor em string
   sValor := FloatToStr(Value);

   //Verifica se possui pondo decimal
   nPos := Pos(DecimalSeparator,sValor);
   If ( nPos > 0 ) Then begin
      sValor := Copy(sValor,1,nPos+Casas);
   End;

   Result := StrToFloat(sValor);
end;
//função para calcular impostos federal, estadual e municipal
function CalculaTributos(vTotalItem : Double; NCM : String; servico : Boolean;
                         fci : String; ex : String) : Double;
var
  qryConsulta : TZQuery;
  vTributosF, vTributosE, vTributosM : Double;
begin
  try
    qryConsulta := TZQuery.Create(Application);
    with qryConsulta do
      begin
        Active := False;
        Connection  := frmmodulo.conexao;
        SQL.Clear;
        SQL.Add('SELECT COALESCE(ALIQNACIONAL_IBPT,0) AS ALIQNACIONAL_IBPT,');
        SQL.Add('COALESCE(ALIQINTERNACIONAL_IBPT,0) AS ALIQINTERNACIONAL_IBPT,');
        SQL.Add('COALESCE(ALIQESTADUAL_IBPT,0) AS ALIQESTADUAL_IBPT,');
        SQL.Add('COALESCE(ALIQMUNICIPAL_IBPT,0) AS ALIQMUNICIPAL_IBPT');
        SQL.Add('FROM NCM WHERE NCM = :NCM AND EX_IBPT = :EX_IBPT');
        SQL.Add('AND TABELA_IBPT = :TABELA_IBPT;');
        ParamByName('NCM').AsString    := StringReplace(NCM, '.', '',
                          [rfReplaceAll, rfIgnoreCase]);
        ParamByName('EX_IBPT').AsString       := ex;
        if servico then
          ParamByName('TABELA_IBPT').AsString := '1'
        else
          ParamByName('TABELA_IBPT').AsString := '0';
        Active := True;
        First;
      end;
    if qryConsulta.Eof then
    begin
      vTributosF := 0;
      vTributosE := 0;
      vTributosM := 0;
    end
    else
      begin
      if fci = '' then
        begin
            vTributosF := Truncar((vTotalItem * qryConsulta['ALIQNACIONAL_IBPT']) / 100, 2);

            vTributosE := Truncar((vTotalItem * qryConsulta['ALIQESTADUAL_IBPT']) / 100, 2);
            vTributosM := Truncar((vTotalItem * qryConsulta['ALIQMUNICIPAL_IBPT']) / 100, 2);
        end
          else
          begin
            vTributosF := Truncar((vTotalItem * qryConsulta['ALIQINTERNACIONAL_IBPT']) / 100, 2);

            vTributosE := Truncar((vTotalItem * qryConsulta['ALIQESTADUAL_IBPT']) / 100, 2);
            vTributosM := Truncar((vTotalItem * qryConsulta['ALIQMUNICIPAL_IBPT']) / 100, 2);
          end;
      end;

    Result := vTributosF + vTributosE + vTributosM;
  except
    Result := 0;
  end;
end;

para obter o resultado fiz assim sera que é isso mesmo?

          with Imposto do
          begin

            TributosIBPTitem:= CalculaTributos(qrnota_item.fieldbyname('unitario').asfloat, //Valor do item
            Prod.NCM, //Ncm
            false, //serviço
            qrnota_item.fieldbyname('NUM_FCI').AsString, //Fci
            qrnota_item.fieldbyname('EX_IBPT').AsString); //Exepção

          if TributosIBPTitem <= 0 then
          begin
            if MessageDlg('Existe produto sem NCM ou não encontrado na tabela IBPT'+#13#10+
            'Codigo: '+qrnota_item.fieldbyname('codproduto').asstring+#13#10+
            'Nome: '+qrnota_item.fieldbyname('produto').asstring+#13#10+
            'Deseja continuar',mtInformation,[mbYes,mbno],0)= mrNo then
            begin
            Abort;
            end;
          end;
            // lei da transparencia nos impostos
            vTotTrib := vTotTrib + TributosIBPTitem;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • 2 semanas depois ...
Em 09/12/2015 at 08:07, maurozb disse:

Delmar, só uma dúvida, na função CalcularTributos o primeiro argumento é o ValorTotalItem, mas ao chamar o método você informou apenas o valor unitário, confere?

Desculpe só vi seu comentário hoje, confere sim a função ta dentro de um Loop somando item a item

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 9 meses depois ...
Em 16/09/2015 at 13:16, Delmar Grande disse:

Boa tarde pessoal,

estou utilizando a tabela ibpt para calcular o de olho no imposto mais não sei se esta certo gostaria da opinião de vocês

fiz essa rotina para calcular item a item baseado em que encontrei aqui no fórum

veja como ficou

 


/////////////////////////////////////////////////
//Função utilizada para truncar um valor real
/////////////////////////////////////////////////
Function Truncar(Value:Real;Casas:Integer):Real;
/////////////////////////////////////////////////
Var sValor:String;
    nPos:Integer;
begin
   //Transforma o valor em string
   sValor := FloatToStr(Value);

   //Verifica se possui pondo decimal
   nPos := Pos(DecimalSeparator,sValor);
   If ( nPos > 0 ) Then begin
      sValor := Copy(sValor,1,nPos+Casas);
   End;

   Result := StrToFloat(sValor);
end;
//função para calcular impostos federal, estadual e municipal
function CalculaTributos(vTotalItem : Double; NCM : String; servico : Boolean;
                         fci : String; ex : String) : Double;
var
  qryConsulta : TZQuery;
  vTributosF, vTributosE, vTributosM : Double;
begin
  try
    qryConsulta := TZQuery.Create(Application);
    with qryConsulta do
      begin
        Active := False;
        Connection  := frmmodulo.conexao;
        SQL.Clear;
        SQL.Add('SELECT COALESCE(ALIQNACIONAL_IBPT,0) AS ALIQNACIONAL_IBPT,');
        SQL.Add('COALESCE(ALIQINTERNACIONAL_IBPT,0) AS ALIQINTERNACIONAL_IBPT,');
        SQL.Add('COALESCE(ALIQESTADUAL_IBPT,0) AS ALIQESTADUAL_IBPT,');
        SQL.Add('COALESCE(ALIQMUNICIPAL_IBPT,0) AS ALIQMUNICIPAL_IBPT');
        SQL.Add('FROM NCM WHERE NCM = :NCM AND EX_IBPT = :EX_IBPT');
        SQL.Add('AND TABELA_IBPT = :TABELA_IBPT;');
        ParamByName('NCM').AsString    := StringReplace(NCM, '.', '',
                          [rfReplaceAll, rfIgnoreCase]);
        ParamByName('EX_IBPT').AsString       := ex;
        if servico then
          ParamByName('TABELA_IBPT').AsString := '1'
        else
          ParamByName('TABELA_IBPT').AsString := '0';
        Active := True;
        First;
      end;
    if qryConsulta.Eof then
    begin
      vTributosF := 0;
      vTributosE := 0;
      vTributosM := 0;
    end
    else
      begin
      if fci = '' then
        begin
            vTributosF := Truncar((vTotalItem * qryConsulta['ALIQNACIONAL_IBPT']) / 100, 2);

            vTributosE := Truncar((vTotalItem * qryConsulta['ALIQESTADUAL_IBPT']) / 100, 2);
            vTributosM := Truncar((vTotalItem * qryConsulta['ALIQMUNICIPAL_IBPT']) / 100, 2);
        end
          else
          begin
            vTributosF := Truncar((vTotalItem * qryConsulta['ALIQINTERNACIONAL_IBPT']) / 100, 2);

            vTributosE := Truncar((vTotalItem * qryConsulta['ALIQESTADUAL_IBPT']) / 100, 2);
            vTributosM := Truncar((vTotalItem * qryConsulta['ALIQMUNICIPAL_IBPT']) / 100, 2);
          end;
      end;

    Result := vTributosF + vTributosE + vTributosM;
  except
    Result := 0;
  end;
end;

para obter o resultado fiz assim sera que é isso mesmo?

Delmar, Obrigado pela proatividade, ajudou muito, só fiquei com uma duvida.
O que seria a variável FCI declarada na função , exemplo : 

if fci = '' then

Seria algo relacionado a origem do produto? 
Obrigado. 

Editado por @lessandro
Esqueci de mencionar uma pergunta.
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 9/23/2015 at 11:51, Delmar Grande disse:

É a descrição da lei ta errado mesmo 

errado

Informação dos Tributos Totais Incidentes (Lei Federal 12.742/2012):

 

certo

Informação dos Tributos Totais Incidentes (Lei Federal 12.741/2012):

 

https://regys.com.br/nova-tabela-ibpt-versao-15-2-a/

Delmar, sei q esse post é antigo.......  mas é o mais recente sobre a informação dos tributos aproximados.

notei em várias NFC-e q pego no comércio, imprime assim como o ACBr:    Tributos Incidentes Lei Federal 12.741/12 R$ 0,25

porém o manual do IBPT fala que deve ser informado dessa maneira: Trib aprox R$: 0,23 Federal e 0,02 Estadual. Fonte: IBPT Ar5Fr7

tentei encontrar a lei que fala sobre ser escrito dessa forma (Tributos Incidentes Lei Federal 12.741/12) mas não encontrei. Só vi essa frase em imagem de exemplo falando sobre a lei.

 

tenho dúvida qual a maneira correta..... já q o IBPT é quem fez fervo em relação a essa lei, acreditava ele sendo o mestre em falar alguma coisa.... mas não vejo quase ninguem seguindo eles.

será q essa lei é simples e tanto faz, é só jogar um valor total e pronto? Tanto faz?

o Regis fala sobre isso, porém na epoca q ele escreveu foi antes da lei mudar pedindo para separar os impostos em Federal, Estadual e Municipal.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Sobre a frase em si não é muito relevante, o importante é informar o valor referente federal e estadual (e se houver municipal e importação) e a versão do IBPT.
E o total já aparece na linha dos totais.
Eu informo assim:
Você pagou aproximadamente: R$ 15,12 de tributos federais R$ 17,42 de tributos
estaduais R$ 75,72 pelos produtos -> Fonte: IBPT/FECOMERCIO RS Ar5Fr7

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

  • Moderadores
12 minutos atrás, glacsius disse:

Delmar, sei q esse post é antigo.......  mas é o mais recente sobre a informação dos tributos aproximados.

notei em várias NFC-e q pego no comércio, imprime assim como o ACBr:    Tributos Incidentes Lei Federal 12.741/12 R$ 0,25

porém o manual do IBPT fala que deve ser informado dessa maneira: Trib aprox R$: 0,23 Federal e 0,02 Estadual. Fonte: IBPT Ar5Fr7

tentei encontrar a lei que fala sobre ser escrito dessa forma (Tributos Incidentes Lei Federal 12.741/12) mas não encontrei. Só vi essa frase em imagem de exemplo falando sobre a lei.

tenho dúvida qual a maneira correta..... já q o IBPT é quem fez fervo em relação a essa lei, acreditava ele sendo o mestre em falar alguma coisa.... mas não vejo quase ninguem seguindo eles.

será q essa lei é simples e tanto faz, é só jogar um valor total e pronto? Tanto faz?

o Regis fala sobre isso, porém na epoca q ele escreveu foi antes da lei mudar pedindo para separar os impostos em Federal, Estadual e Municipal.

O que diz a lei:

Citar

Art. 1º Emitidos por ocasião da venda ao consumidor de mercadorias e serviços, em todo território nacional, deverá constar, dos documentos fiscais ou equivalentes, a informação do valor aproximado correspondente à totalidade dos tributos federais, estaduais e municipais, cuja incidência influi na formação dos respectivos preços de venda.

Pela lei, só é preciso informar o valor total. Nos arquivos XML das NFC-e e NF-e só existe a tag vTotTrib par a informação do valor total dos tributos aproximados.

Como praticamente todos usam o IBTP para o cálculo, ele pede que seja feita a separação dos tributos por ele calculados entre estadual, federal e municipal.

O que eu faço:

- Uso a tag vTotTrib para armazenar e imprimir o valor total aproximado, como "Tributos incidentes", para atender à lei.

- Uso as informações adicionais da NFC-e/NF-e para incluir o texto contendo os tributos separadamente, a versão e fonte do cálculo, para atender o manual do IBPT.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

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