TABELAS: Aliquotas ICMS de origem e destino completa

Poste aqui Tabelas sobre Legislação Fiscal e Tributária.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Itamar M. Lins Jr. »

Olá!
Oxi!!! tá incompleta, tem que ser da forma como está.
27x27
Ai no seu exemplo não tem nem a metade das possibilidades, ainda mais SP que sai para todas as UFs.
Depois entendi o seu exemplo, então coloca o ** para as demais UFs
Vc só colocou as diferenças, quando for igual é ** mas como a pessoa vai saber ?
Precisa colocar UF origem e UF destino, não tem como evitar, no caso do Cadastro de clientes vai colocar ** para UF destino ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

Tá certo.

Código: Selecionar todos

nPos := hb_ASCan( aList, { | e | ( e[ 1 ] == cUF1 .OR. e[ 1 ] == "**" ) .AND. ( e[ 2 ] == cUF2 .OR. e[ 2 ] == "**" ) } )
Se existir na lista, por exemplo SP/SP, pega esse 18%.
Se não existir na lista, mas origem é SP, pega SP/** que é 7%.
Se não existir em nenhum, pega **/** que é 12%

Por exemplo: AC/SP, não tem item pra ele, também não tem AC/**, então pega **/** 12% que é a genérica.
Isso eliminou quase tudo, porque quase tudo é 12%.

Inclusive... nem precisaria do IF, porque SEMPRE vai encontrar.
É que na primeira versão iniciei alíquota com 12%, e não tinha a **/**.
Depois coloquei na lista **/** pra lista conter todas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

Ou... vamos no passo a passo...

**/** - significa qualquer origem e qualquer destino, vai atender tudo que não estiver definido, 12%, isso já resolve quase toda tabela.

Agora vamos às exceções

SP/SP - UF pra ela mesma vai resolver a interna.

O que sobra?
UFs onde a maioria é 7%

UF/** - qualquer destino dessa UF, não definido, vai ser 7%

O que sobra agora?
Sobra aonde tem 12% mas a UF geral da alíquota é 7%
Não vai entrar o geral 12% porque SP/** não tem exceções, é tudo que sai de SP com 7%.

Então... nas UFs de 7%, é só definir aonde usa 12%, umas 4/5 UFs em cada uma.

de 27 X 27 = 729 tabelas = reduziu pra umas 40 ou 50.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

aliquota+interna2.jpg
Dê outra olhada na tabela.
A maioria é 12%.
Tem só 6 UFs que usam 7% na maioria.
Só precisei tratar o interno e as 6 UFs. Isso eliminou 21 UFs de tratamento, 21 X 27 = mais de 500 eliminadas.

Agora nessas UFs, olhe que a maioria é 7%, então só precisei tratar as exceções que são poucas, 5 exceções em cada ao invés de 27 UFs em cada.
22 tabelas eliminadas em cada uma das 6 = 21 x 6 = mais de 120 eliminadas.
aliquota+interna3.jpg
aliquota+interna3.jpg (9.53 KiB) Exibido 3641 vezes
Pois é... reduziu mesmo.
E o hb_ASCan() comparando com UF ou ** já pega a primeira que aparecer, ou a UF ou **

Só passar as duas siglas de UF e pronto.

Só não sei se acrescento EX, pra exterior/importação/exportação.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

Isso pode ser interessante na configuração de outros impostos, apesar que não uso.

** representa qualquer destino ou qualquer origem

Equivalentes (ou quase)

Em SQL

Código: Selecionar todos

SELECT * FROM TABELAICMS WHERE ( ORIGEM = "SP" OR ORIGEM = "**" ) AND ( DESTINO = "SP" OR DESTINO = "**" ) LIMIT 1
Em DBF

Código: Selecionar todos

LOCATE FOR ( ORIGEM = "SP" .OR. ORIGEM = "**" ) .AND. ( DESTINO = "SP" .OR. DESTINO = "**" )
Lembrando que a ordem vai fazer muita diferença, talvez precise algo mais nesses comandos SQL e DBF, pra não analisar fora de ordem.
Talvez substituir ** por ZZ, pra ficar no fim.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

Aproveitando novamente....

Sim, dá pra deixar tudo isso num array, e nem gravar no SQL.

Mas pense bem....

Deixando numa tabela, e criando uma rotina de cadastro pra ela...
NUNCA mais vai precisar mexer com DBASE ou HEIDISQL pra isso, pode deixar por conta de um usuário.

É assim que costumo fazer.
Não importa se é pra usar uma vez por ano, crie lá a rotina de cadastro, e pare de deixar tudo na dependência de você, ou de ferramentas externas ao aplicativo.
Muitos usuários Clipper/Harbour acostumam a usar ferramentas externas, e acabam criando trabalho extra pra si mesmo.

O cliente quer alterar? entra lá na rotina e altera, pronto, não precisei acessar remoto nem nada.

Os #include da Sefazclass são mais pra criar um cadastro default, e não pra uso contínuo.
Pode ser usado, mas....
Se estiver de férias, é só falar pra entrarem no cadastro, e não precisa alterar fonte, recompilar, instalar, etc.
E depois de avisar, é só continuar de férias.... rs (nem sei o que é isso)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Itamar M. Lins Jr. »

Olá!
O problema agora é entender como é o calculo dos campos.

Código: Selecionar todos

    <ICMS>
            <ICMS00>
                <orig>4</orig>
                <CST>00</CST>
                <modBC>3</modBC>
                <vBC>1000.00</vBC>
                <pICMS>7.00</pICMS>
                <vICMS>70.00</vICMS>
            </ICMS00>
        </ICMS>
...
        <ICMSUFDest>
            <vBCUFDest>1000.00</vBCUFDest>
            <pFCPUFDest>2.00</pFCPUFDest>
            <pICMSUFDest>17.00</pICMSUFDest>
            <pICMSInter>12.00</pICMSInter>
            <pICMSInterPart>40.00</pICMSInterPart>
            <vFCPUFDest>20.00</vFCPUFDest>
            <vICMSUFDest>20.00</vICMSUFDest>
            <vICMSUFRemet>30.00</vICMSUFRemet>
        </ICMSUFDest>
Esse campo pICMSUFDest é a aliquota da UF no caso para achar uso nAliquotaDestino := AliquotaICMS( "BA", "ES" ) ?

Depois a tal DIFAL...
Meio complicado, e mais o imposto do FCP destino... eu heinn...

Olhei no manual e esse tal pICMSInter só pode ser 7% ou 12%


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Fernando queiroz »

Itamar M. Lins Jr. escreveu:Olá!
O problema agora é entender como é o calculo dos campos.

Código: Selecionar todos

    <ICMS>
            <ICMS00>
                <orig>4</orig>
                <CST>00</CST>
                <modBC>3</modBC>
                <vBC>1000.00</vBC>
                <pICMS>7.00</pICMS>
                <vICMS>70.00</vICMS>
            </ICMS00>
        </ICMS>
...
        <ICMSUFDest>
            <vBCUFDest>1000.00</vBCUFDest>
            <pFCPUFDest>2.00</pFCPUFDest>
            <pICMSUFDest>17.00</pICMSUFDest>
            <pICMSInter>12.00</pICMSInter>
            <pICMSInterPart>40.00</pICMSInterPart>
            <vFCPUFDest>20.00</vFCPUFDest>
            <vICMSUFDest>20.00</vICMSUFDest>
            <vICMSUFRemet>30.00</vICMSUFRemet>
        </ICMSUFDest>
Esse campo pICMSUFDest é a aliquota da UF no caso para achar uso nAliquotaDestino := AliquotaICMS( "BA", "ES" ) ?

Depois a tal DIFAL...
Meio complicado, e mais o imposto do FCP destino... eu heinn...

Olhei no manual e esse tal pICMSInter só pode ser 7% ou 12%


Saudações,
Itamar M. Lins Jr.
da uma olhada aqui
https://facil123.com.br/blog/difal-dife ... uota-icms/
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Fernando queiroz »

Código: Selecionar todos

cUF	UF	Nome UF	Aliq_1	Aliq_2	Aliq_3	.	Observação
12	AC	ACRE	Fixo:0.00				UF não possui FCP
27	AL	ALAGOAS	Fixo:1.00	Fixo:2.00			UF com até 3 Alíquotas possíveis
16	AP	AMAPA	Fixo:0.00				UF não possi FCP
13	AM	AMAZONAS	Fixo:2.00	Fixo:1.90			UF com até 2 Alíquotas possíveis (2018)
29	BA	BAHIA	Fixo:2.00				Alíquota única de 2.00
23	CE	CEARA	Fixo:0.00				UF não aplica
53	DF	DISTRITO FEDERAL	Fixo:2.00				Alíquota única de 2.00
32	ES	ESPIRITO SANTO	Fixo:2.00				Alíquota única de 2.00
52	GO	GOIAS	Max:2.00				Alíquota máxima de 2.00 (default)
21	MA	MARANHÃO	Fixo:2.00				Alíquota única de 2.00
51	MT	MATO GROSSO	Max:2.00				Alíquota máxima de 2.00 (default)
50	MS	MATO GROSSO DO SUL	Fixo:2.00				Alíquota única de 2.00
31	MG	MINAS GERAIS	Fixo:2.00				Alíquota única de 2.00
15	PA	PARA	Fixo:0.00				UF não possi FCP
25	PB	PARAIBA	Fixo:2.00				Alíquota única de 2.00
41	PR	PARANA	Fixo:2.00				Alíquota única de 2.00
26	PE	PERNAMBUCO	Fixo:2.00				Alíquota única de 2.00
22	PI	PIAUI	Fixo:1.00	Fixo:2.00			UF com até 3 Alíquotas possíveis
33	RJ	RIO DE JANEIRO	Max:4.00				UF com alíquota máxima de 4.00
24	RN	RIO GRANDE DO NORTE	Fixo:2.00				Alíquota única de 2.00
43	RS	RIO GRANDE DO SUL	Fixo:2.00				Alíquota única de 2.00
11	RO	RONDONIA	Fixo:2.00				Alíquota única de 2.00
14	RR	RORAIMA	Max:2.00				Alíquota máxima de 2.00 (default)
42	SC	SANTA CATARINA	Fixo:0.00				UF não possi FCP
35	SP	SAO PAULO	Fixo:2.00				Alíquota única de 2.00
28	SE	SERGIPE	Fixo:2.00				Alíquota única de 2.00
17	TO	TOCANTINS	Fixo:2.00				Alíquota única de 2.00
tabela de FCP atualizada 2021
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Fernando queiroz »

Código: Selecionar todos

****************************************************************
FUNCTION AliquotaFCP( cUF )
****************************************************************
LOCAL nPos, nAliquota := 0
LOCAL aList := { ;
      { 12, "AC", 0.00, 0.00, 0.00 }, ;
      { 27, "AL", 1.00, 2.00, 0.00 }, ;
      { 16, "AP", 0.00, 0.00, 0.00 }, ;
      { 13, "AM", 2.00, 1.90, 0.00 }, ;
      { 29, "BA", 2.00, 0.00, 0.00 }, ;
      { 23, "CE", 0.00, 0.00, 0.00 }, ;
      { 53, "DF", 2.00, 0.00, 0.00 }, ;
      { 32, "ES", 2.00, 0.00, 0.00 }, ;
      { 52, "GO", 2.00, 0.00, 0.00 }, ;
      { 21, "MA", 2.00, 0.00, 0.00 }, ;
      { 16, "MT", 2.00, 0.00, 0.00 }, ;
      { 50, "MS", 2.00, 0.00, 0.00 }, ;
      { 31, "MG", 2.00, 0.00, 0.00 }, ;
      { 15, "PA", 0.00, 0.00, 0.00 }, ;
      { 25, "PB", 2.00, 0.00, 0.00 }, ;
      { 41, "PR", 2.00, 0.00, 0.00 }, ;
      { 26, "PE", 2.00, 0.00, 0.00 }, ;
      { 22, "PI", 1.00, 2.00, 0.00 }, ;
      { 33, "RJ", 4.00, 0.00, 0.00 }, ;
      { 24, "RN", 2.00, 0.00, 0.00 }, ;
      { 43, "RS", 2.00, 0.00, 0.00 }, ;
      { 11, "RO", 2.00, 0.00, 0.00 }, ;
      { 14, "RR", 2.00, 0.00, 0.00 }, ;
      { 42, "SC", 0.00, 0.00, 0.00 }, ;
      { 35, "SP", 2.00, 0.00, 0.00 }, ;
      { 28, "SE", 2.00, 0.00, 0.00 }, ;
      { 17, "TO", 2.00, 0.00, 0.00 } }

      nPos := hb_ASCan( aList, { | e | e[ 2 ] == cUF } )
      IF nPos != 0
         nAliquota := aList[ nPos, 3 ]
      ENDIF

RETURN nAliquota
funcao para FCP baseada na do Quintas
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por rochinha »

Amiguinhos,

A ultima vez que revisei foi em 24/04/2020. Mas uso até hoje. Pegar em siglas.zip

Estarei dando uma nova verificada e se precisar atualizo o link.

O campo UF contém a origem e as colunas são o destino. Posicionando-se no registro da UF e localizando a coluna destino se obtem o ICMS para calculo.

EX-É EXterior
SN-É Simples Nacional
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por rochinha »

Amiguinhos,

Em minhas pesquisas pela internet cheguei a encontrar uma página que me deu a idéia da composição destes impostos.

Em São Paulo o percentual de 12% continua a ser 12%, mas recebe um complemento de 1,3% de onde obtemos 13,3%, este complemento é o novo DIFAL que deverá ser incorporado aos cálculos. Pela que na segunda vez que entrei na página ele pediu senha e cadastro. Acho que tinha um bug que permitia o acesso somente uma vez.

O link é este http://www.econeteditora.com.br/agenda/aliquotas_icms_mapa_ind.asp e quem conseguir entrar direto e ver o conteúdo e a tabela, salve a página antes de perer o acesso. Ela tem informações importantes.

Para tirar dúvidas consegui pegar o estado de São Paulo. SP.PDF
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Itamar M. Lins Jr. »

Olá!
Acredito que consegui, entender o emaranhado.
Fiz aqui, e só Deus sabe quando irei testar pra valer.
Os links que o Fernando Queiroz passou foram fundamentais...
Um dos problemas foram as siglas INTER, INTRA,... Tabela FCP.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por JoséQuintas »

O ICMS acrescido é uma espécie de substituição tributária.

Na venda SP/BA a alíquota é X
Na venda BA/BA a alíquota é Y

O imposto que inventaram é a diferença entre X e Y.

Traduzindo:
Está pagando o imposto como se estivesse vendendo dentro da BA
Apenas desconta a parte de SP.

Com isso, precisa saber da legislação de todas as UFs.
Se não for consumidor final, não tem o cálculo, mas se a empresa destino não pagar, você é quem paga.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

TABELAS: Aliquotas ICMS de origem e destino completa

Mensagem por Itamar M. Lins Jr. »

Olá!
Se não for consumidor final, não tem o cálculo,
Tem se for "Não contribuinte" (Igrejas/Empreiteiras)

CFOP 6108 - Venda de mercadoria adquirida ou recebida de terceiros, destinada a não contribuinte

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder