Problema de imposto - CST

Delphi

19/10/2011

Desculpe-me os moderadores, mas é porque nao sei onde postar esta minha duvida:

Estou com problemas com relação ao CST - Codigo de situação tributária.
Eu não estou sabendo onde é melhor gravar este campo.
Primeiramente eu gravei no cadastro do produto.
Depois vi, que no mesmo produto posso ter 2 CSTs diferentes um para dentro do UF e outro para FORA da uf
Ex. 000 fora da UF e 020 PARA DENTRO da UF

Agora tem um cliente meu, que mesmo dentro da UF ele pode usar 2 CSTs diferentes.
Um quando o cliente dele, tiver redução 020 e outro quando não tiver 000

Tenho uma tabela de CFOPS pensei em colocar lá, será que é ideal?

Como é que vcs estão, que trabalhao com NF estão tratando este problema?

Hoje tenho as seguintes tabelas:
Cadastro de produto - onde cadastrei os CST
Cadastro de UF - Onde defino se tem ICMS, se tem redução,
Cadastro de CFOP - Onde penso em colocar os CST
Cadastro do cliente - Onde coloco se o cliente tem ICMS diferente do que está definido para o UF

Desde já agradeço a todos,


Atenciosamente,



Dirceu Morais


Dirceu Morais

Dirceu Morais

Curtidas 0

Respostas

Geversom Sousa

Geversom Sousa

19/10/2011

Penso que o ideal é construir uma tabela de CST separada, ligada à tabela de produtos, até por existe CST de diversos impostos e tributos (ICMS, PIS, COFINS, etc).

espero ter ajudado.

Abraço
GOSTEI 0
Ricardo Rodrigues

Ricardo Rodrigues

19/10/2011

Boa noite, possuo um sistema comercial e existe diversos casos quando se trata de icms, por exemplo : o cliente pode vender o mesmo produto com cst diferente, exemplo, cliente consumidor é um e um atacadista é outro, como resolvi isso, criei uma tabela produto_cst vinculada a tabela de produto, ae o cliente inlcuir na mesma informando qual o estado, qual a cst, % de icms se tiver, % de redução e assim por diante, ae na ela de venda o sistema identifica se tem mais de uma trinutação, caso tenha ele deixa o usuario selecionar a cst correta, se não pega que existe.


espero ter dado uma luz.
GOSTEI 0
Vagner Almeida

Vagner Almeida

19/10/2011

Cara, por conde de problemas como esse e outro que com certeza voce irá encontrar, eu montei três tabelas:

ClassFiscal - (classfiscal)
Operacoes e Impostos - (opimpostos)
Natureza operacao - (natop)

************** ClassFiscal **************
CREATE TABLE `classfiscal` (
`codigo` int(11) NOT NULL DEFAULT 0 COMMENT codigo corrente da tabela,
`codimp` char(3) DEFAULT NULL COMMENT codigo da impressora,
`descricao` varchar(20) DEFAULT NULL COMMENT descricao da classificacao fiscal,
`aliqest` decimal(6,2) DEFAULT NULL COMMENT aliquota estadual,
`aliqint` decimal(6,2) DEFAULT NULL COMMENT aliquota interestadual,
`reducaoest` decimal(6,2) DEFAULT NULL COMMENT reducao estadual,
`reducaoint` decimal(6,2) DEFAULT NULL COMMENT reducao interestadual,
`cst` char(2) DEFAULT NULL COMMENT codigo da situacao tributaria,
`modbascalst` char(1) DEFAULT NULL COMMENT modalidade base calculo icms st,
`modbascal` char(1) DEFAULT NULL COMMENT modalidade base calculo,
`origem` char(1) DEFAULT NULL COMMENT origem da mercadoria,
`tipo` char(1) DEFAULT NULL COMMENT T - ICMS\nS - ISS,
PRIMARY KEY (`codigo`),
UNIQUE KEY `clf_codigo_UNIQUE` (`codigo`)
)

************** Operaoes e Impostos **************
CREATE TABLE `opimpostos` (
`classfiscal` int(11) NOT NULL COMMENT codigo da classificacao fiscal,
`natop` int(11) NOT NULL COMMENT codigo do cfop,
`cfopest` char(5) NOT NULL COMMENT cfop estadual,
`cfopint` char(5) NOT NULL COMMENT cfop interestadual,
`pis` char(2) DEFAULT NULL COMMENT codigo do pis,
`pisaliq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do pis,
`pispauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do pis,
`pisreducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do pis,
`pistva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do pis,
`cofins` char(2) DEFAULT NULL COMMENT codigo do cofins,
`cofinsaliq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do cofins,
`cofinspauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do cofins,
`cofinsreducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do cofins,
`cofinstva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do cofins,
`ipi` char(2) DEFAULT NULL COMMENT codigo do ipi,
`ipialiq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do ipi,
`ipipauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do ipi,
`ipireducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do ipi,
`ipitva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do ipi,
`ipirfb` varchar(6) DEFAULT NULL COMMENT valor do rfb do ipi,
PRIMARY KEY (`classfiscal`,`natop`),
KEY `fk_opimpostos_cfop1` (`natop`),
CONSTRAINT `fk_opimpostos_cfop1` FOREIGN KEY (`natop`) REFERENCES `natop` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_opimpostos_classfiscal1` FOREIGN KEY (`classfiscal`) REFERENCES `classfiscal` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
)

************** Natureza da Operacao **************
CREATE TABLE `natop` (
`codigo` int(11) NOT NULL DEFAULT 0 COMMENT codigo corretne da tabela,
`cfopest` char(5) DEFAULT NULL COMMENT codigo cfop estadual,
`cfopint` char(5) DEFAULT NULL COMMENT codigo cfop interestadual,
`descricao` varchar(150) DEFAULT NULL COMMENT descricao detalhada do cfop,
`natop` varchar(30) DEFAULT NULL COMMENT descricao da natureza da operacao,
PRIMARY KEY (`codigo`),
UNIQUE KEY `ope_codigo_UNIQUE` (`codigo`)
)

Como funciona:
Para a Tab ClassFiscal você cria um form. onde será cadastrado os tipos, variedades de CST e suas alíquotas, tanto(a)s quanto for usar.
Para a Tab NatOp voce também irá criar um form. onde será cadastrado as naturezas de operação e seus respectivos CFOPs.
Agora onde tudo faz sentido é aqui, na Tab Operações e Impostos, voce irá criar um form onde irá vincular o produto para cada Natureza de Operacao e CADA NATUREZA DE OPERACAO POSSUI UMA CLASSIFICACAO FISCAL COM SUA CONFIGURAÇÃO ESPECIFICA.

Então dessa forma, quando voce for pegar os dados dos impostos de um produto, irá sempre procurar na Tab OPIMPOSTOS, se o produto não estiver lá com a devida natureza de operaçao é porque o produto não foi configurado praquela NAtOP.

Espero ter ajudado....
GOSTEI 0
Dirceu Morais

Dirceu Morais

19/10/2011

Cara, por conde de problemas como esse e outro que com certeza voce irá encontrar, eu montei três tabelas:

ClassFiscal - (classfiscal)
Operacoes e Impostos - (opimpostos)
Natureza operacao - (natop)

************** ClassFiscal **************
CREATE TABLE `classfiscal` (
`codigo` int(11) NOT NULL DEFAULT 0 COMMENT codigo corrente da tabela,
`codimp` char(3) DEFAULT NULL COMMENT codigo da impressora,
`descricao` varchar(20) DEFAULT NULL COMMENT descricao da classificacao fiscal,
`aliqest` decimal(6,2) DEFAULT NULL COMMENT aliquota estadual,
`aliqint` decimal(6,2) DEFAULT NULL COMMENT aliquota interestadual,
`reducaoest` decimal(6,2) DEFAULT NULL COMMENT reducao estadual,
`reducaoint` decimal(6,2) DEFAULT NULL COMMENT reducao interestadual,
`cst` char(2) DEFAULT NULL COMMENT codigo da situacao tributaria,
`modbascalst` char(1) DEFAULT NULL COMMENT modalidade base calculo icms st,
`modbascal` char(1) DEFAULT NULL COMMENT modalidade base calculo,
`origem` char(1) DEFAULT NULL COMMENT origem da mercadoria,
`tipo` char(1) DEFAULT NULL COMMENT T - ICMS\nS - ISS,
PRIMARY KEY (`codigo`),
UNIQUE KEY `clf_codigo_UNIQUE` (`codigo`)
)

************** Operaoes e Impostos **************
CREATE TABLE `opimpostos` (
`classfiscal` int(11) NOT NULL COMMENT codigo da classificacao fiscal,
`natop` int(11) NOT NULL COMMENT codigo do cfop,
`cfopest` char(5) NOT NULL COMMENT cfop estadual,
`cfopint` char(5) NOT NULL COMMENT cfop interestadual,
`pis` char(2) DEFAULT NULL COMMENT codigo do pis,
`pisaliq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do pis,
`pispauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do pis,
`pisreducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do pis,
`pistva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do pis,
`cofins` char(2) DEFAULT NULL COMMENT codigo do cofins,
`cofinsaliq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do cofins,
`cofinspauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do cofins,
`cofinsreducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do cofins,
`cofinstva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do cofins,
`ipi` char(2) DEFAULT NULL COMMENT codigo do ipi,
`ipialiq` decimal(6,2) DEFAULT NULL COMMENT valor da aliquota do ipi,
`ipipauta` decimal(6,2) DEFAULT NULL COMMENT valor da pauta do ipi,
`ipireducao` decimal(6,2) DEFAULT NULL COMMENT valor da reducao do ipi,
`ipitva` decimal(6,2) DEFAULT NULL COMMENT valor do tva do ipi,
`ipirfb` varchar(6) DEFAULT NULL COMMENT valor do rfb do ipi,
PRIMARY KEY (`classfiscal`,`natop`),
KEY `fk_opimpostos_cfop1` (`natop`),
CONSTRAINT `fk_opimpostos_cfop1` FOREIGN KEY (`natop`) REFERENCES `natop` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_opimpostos_classfiscal1` FOREIGN KEY (`classfiscal`) REFERENCES `classfiscal` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
)

************** Natureza da Operacao **************
CREATE TABLE `natop` (
`codigo` int(11) NOT NULL DEFAULT 0 COMMENT codigo corretne da tabela,
`cfopest` char(5) DEFAULT NULL COMMENT codigo cfop estadual,
`cfopint` char(5) DEFAULT NULL COMMENT codigo cfop interestadual,
`descricao` varchar(150) DEFAULT NULL COMMENT descricao detalhada do cfop,
`natop` varchar(30) DEFAULT NULL COMMENT descricao da natureza da operacao,
PRIMARY KEY (`codigo`),
UNIQUE KEY `ope_codigo_UNIQUE` (`codigo`)
)

Como funciona:
Para a Tab ClassFiscal você cria um form. onde será cadastrado os tipos, variedades de CST e suas alíquotas, tanto(a)s quanto for usar.
Para a Tab NatOp voce também irá criar um form. onde será cadastrado as naturezas de operação e seus respectivos CFOPs.
Agora onde tudo faz sentido é aqui, na Tab Operações e Impostos, voce irá criar um form onde irá vincular o produto para cada Natureza de Operacao e CADA NATUREZA DE OPERACAO POSSUI UMA CLASSIFICACAO FISCAL COM SUA CONFIGURAÇÃO ESPECIFICA.

Então dessa forma, quando voce for pegar os dados dos impostos de um produto, irá sempre procurar na Tab OPIMPOSTOS, se o produto não estiver lá com a devida natureza de operaçao é porque o produto não foi configurado praquela NAtOP.

Espero ter ajudado....



Hum,

Tô quase entendendo Wagner.
No cadastro de produto vou vincula-lo com a natureza de operação?
Minha dúvida continua, porque um mesmo produto pode ter, SITUAÇÕES DIFERENTES, no mesmo UF.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/10/2011

você vincula somente no pedido ou na nota fiscal. não no cadastro de produtos.
GOSTEI 0
Andre Homa

Andre Homa

19/10/2011

coloquei dentro do CFOP...todas as aliquotas, cst´s , redução , percentual de mão de obra e insumos para no caso beneficiamento... e qdo vou fazer o pedido ou a nota fiscal ja atrelo o CFOP correto..

pelo menos até agora n tive reclamação...

GOSTEI 0
POSTAR