ECF - incrementando tabela IBPT

14/01/2014

0

Pessoal boa tarde , preciso incrementar os vlr dos impostos no cupom fiscal alguem pode me dar uma ideia para iniciar uso delphi 7 e firebird 2.5
Rodrigo Bernal

Rodrigo Bernal

Responder

Posts

07/02/2014

Leonardo Rehder

Pessoal boa tarde , preciso incrementar os vlr dos impostos no cupom fiscal alguem pode me dar uma ideia para iniciar uso delphi 7 e firebird 2.5

Boa tarde, RCBernal. Tudo bem?

Eu fiz desta forma, quem sabe te ajuda. Só que trabalho com postgres.

Baixe os arquivo no site do IBPT, segue o link abaixo.
http://deolhonoimposto.ibpt.org.br/

Cria uma tabela no banco de dados com a seguinte estrutura.

-- Table: tri_ncmsh_fonte_ibpt

-- DROP TABLE tri_ncmsh_fonte_ibpt;

CREATE TABLE tri_ncmsh_fonte_ibpt
(
cncmsh character varying(10) NOT NULL, -- Indica se o código da tabela da nomenclatura comum do mercosul.
codexp integer NOT NULL, -- Indica se o código do exemplo da nomenclatura comum do mercosul.
codtab integer NOT NULL, -- Indica se o código da tabela da nomenclatura comum do mercosul.
dncmsh character varying(1000) NOT NULL, -- Indica se o descrição da nomenclatura comum do mercosul.
alinac numeric(6,2) NOT NULL DEFAULT 0.00, -- Indica se a alíquota de mercadorias nacionais.
aliimp numeric(6,2) NOT NULL DEFAULT 0.00, -- Indica se a alíquota de mercadorias importadas.
CONSTRAINT tri_ncmsh_fonte_ibpt_pkey PRIMARY KEY (cncmsh, codexp, codtab)
)
WITH (
OIDS=FALSE,
autovacuum_enabled=true
);
ALTER TABLE tri_ncmsh_fonte_ibpt OWNER TO postgres;
GRANT ALL ON TABLE tri_ncmsh_fonte_ibpt TO public;
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.cncmsh IS 'Indica se o código da tabela da nomenclatura comum do mercosul.';
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.codexp IS 'Indica se o código do exemplo da nomenclatura comum do mercosul.';
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.codtab IS 'Indica se o código da tabela da nomenclatura comum do mercosul.';
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.dncmsh IS 'Indica se o descrição da nomenclatura comum do mercosul.';
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.alinac IS 'Indica se a alíquota de mercadorias nacionais.';
COMMENT ON COLUMN tri_ncmsh_fonte_ibpt.aliimp IS 'Indica se a alíquota de mercadorias importadas.';

Faz um rotina que o usuário posso importar esta tabela de tempo em tempo caso seja necessário.

No seu cadastro de produtos.
Cria um campo que o usuário possa informar ou pesquisar na tabela descrita acima o código do ncm/sh.
Você também precisara de um campo para o usuário informar se a mercadoria e nacional ou importada que a alíquota de carga tributaria tem diferença entre a origem da mercadoria.

Feito isso. Após o usuário ter informado o ncm/sh e a origem uma função passando este parâmetros que retorna a alíquota da carga tributaria.

No DDChannel9 da Daruma tem um vídeo muito bom ensinando como calcular o imposta na hora da impressão do cupom fiscal. Segue o link abaixo.
http://www.youtube.com/watch?v=YtwmET8V_Lc

Bom acredito que seja isso. Qualquer dúvida e só postar, que tentamos ajudar da melhor forma possível! rs
Espero que te ajude, forte abraço ate mais ver!
Responder

24/03/2014

Daniel Qualhato

Bom já eu fiz assim:
o primeiro passo você precisa acrescentar na sua tabela de cadastro de produtos o campo cst para saber qual o destino da mercadoria, se é nacional ou importado.

se você for observar na tabela IBPT a dois campos de alíquota: AliqNasc e AliqImp. E é justamente através do campo cst que você irá identificar se a mercadoria é nacional ou importada. veja meu exemplo:

procedure TfrmSaidas.tbl_itensSaidaBeforePost(DataSet: TDataSet);
var Alq:Currency;
begin
    if((tbl_localizaProdEST_CST.AsInteger <> 0)and
      (tbl_localizaProdEST_CST.AsInteger <> 3)and
      (tbl_localizaProdEST_CST.AsInteger <> 4)and
      (tbl_localizaProdEST_CST.AsInteger <> 5))then
       Alq :=  tbl_localizaProdEST_ALIQIMP.AsCurrency
    else
    Alq :=  tbl_localizaProdEST_ALIQNASC.AsCurrency;
    tbl_itensSaidaISAI_VALORIMPOSTO.AsCurrency := (tbl_itensSaidaISAI_TOTAL.AsCurrency * Alq);

end;


Observe que eu acrescentei um campo na minha tabela de itensSaidaProdutos(Tabela filha) o campo VALORIMPOSTO este campos vai pegar o valor total do item que é (Quantidade * valor do item) e multiplicar pela alíquota do produto referente a tabela IBPT.

Depois é só calcular o campo VALORIMPOSTO. Veja meu exemplo:

    PercentualImposto := frmSaidas.TotalImposto / valorTotal;
    frmSaidas.TotalImposto := frmSaidas.TotalImposto / 100;
    if(frmSaidas.tbl_saidasSAI_CLIENTE_ID.AsInteger > 0)then
       begin
          NomeCliente := ColocaTextoEsq('Cliente: ' + tbl_listaClientesCLI_NOME.AsString, 48, ' ');
          if(tbl_listaClientesCLI_CPF.AsString <> '')then
             CpfCnpj := ColocaTextoEsq('CPF: ' + tbl_listaClientesCLI_CPF.AsString, 48, ' ')
          else
          CpfCnpj := ColocaTextoEsq('CNPJ: ' + tbl_listaClientesCLI_CNPJ.AsString, 48, ' ');
          MsgTributo := ColocaTextoEsq('Val Aprox dos Tributos R$ ' + FormatFloat('0.00', frmSaidas.TotalImposto) + ' (' + FormatFloat('0.00', PercentualImposto) + '%)', 48, ' ');
          MsgPromocao  := ColocaTextoEsq('Agradecemos a Preferência. Volte Sempre!', 48, ' ');
          Msg := #27 + #69 + MsgTributo + #27 + #70 + ColocaTextoEsq('-',48,'-') + NomeCliente + CpfCnpj + ColocaTextoEsq('-',48,'-') + MsgPromocao;
       end
    else
    begin
        MsgTributo := ColocaTextoEsq('Val Aprox dos Tributos R$ ' + FormatFloat('0.00', frmSaidas.TotalImposto) + ' (' + FormatFloat('0.00', PercentualImposto) + '%)', 48, ' ');
        MsgPromocao  := ColocaTextoEsq('Agradecemos a Preferência. Volte Sempre!', 48, ' ');
        Msg := #27 + #69 + MsgTributo + #27 + #70 + ColocaTextoEsq(' ',48,' ') + MsgPromocao;
    end;


Nu tem muito segredo na implantação não. o difícil mesmo é entender a logica de calculo desse imposto.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar