Clipper On Line • Ver Tópico - TABELAS: Aliquotas ICMS de origem e destino completa
Página 1 de 3

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 16 Mai 2010 02:44
por rochinha
Amiguinhos,

Eis uma tabela completa de aliquotas de ICMS para todos os estados do pais.

Cada registro equivale a ORIGEM;
Cada coluna equivale a DESTINO;

Para saber qual a aliquota correspondente entre uma origem e um destino bastará cruzar as coordenadas de cada estado envolvido, exemplo:

Uma venda tendo origem em SP e como destino SP usará a aliquota de 18 % nas operações.

XX;AC;AL;AM;AP;BA;CE;DF;ES;GO;MA;MT;MS;MG;PA;PB;PR;PE;PI;RN;RS;RJ;RO;RR;SC;SP;SE;TO
AC;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
AL;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
AM;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
AP;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
BA;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
CE;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
DF;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
ES;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
GO;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
MA;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
MT;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
MS;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12
MG; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;18; 7; 7;12; 7; 7; 7;12;12; 7; 7;12;12; 7; 7
PA;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12;12
PB;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12;12;12
PR; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;12; 7; 7;18; 7; 7; 7;12;12; 7; 7;12;12; 7; 7
PE;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12;12
PI;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12;12
RN;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12;12;12;12
RS; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;12; 7; 7;12; 7; 7; 7;17;12; 7; 7;12;12; 7; 7
RJ; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;12; 7; 7;12; 7; 7; 7;12;19; 7; 7;12;12; 7; 7
RO;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12;12
RR;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12;12;12;12
SC; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;12; 7; 7;12; 7; 7; 7;12;12; 7; 7;17;12; 7; 7
SP; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7; 7;12; 7; 7;12; 7; 7; 7;12;12; 7; 7;12;18; 7; 7
SE;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17;12
TO;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;12;17


Fonte: http://www.fiscontex.com.br/legislacao/ ... naicms.htm

Re: TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 18 Mar 2011 22:22
por ANDRIL
Legal essa tabela, mesmo não entendendo muito bem como utilizar o calculo de aliquotas (quem sabe um dia...), mais criei uma funcao que faz o cruzamento e talvez sirva para os colegas.

Exemplo:
cls
uforigem:=ufdestino:=space(2)

do while .t.

@01,01 say "UF origem.:" get uforigem pict"@!" valid !empty(uforigem)
@02,01 say "UF destino:" get ufdestino pict"@!" valid !empty(ufdestino)
@03,01 say "Aliquota..:"
read
if lastkey()=27
return
endif

@03,14 say retaliqinterna(uforigem,ufdestino)
enddo


Segue o fonte em anexo.
Abraços

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 11:37
por Itamar M. Lins Jr.
Olá!
Essa tabela foi atualizada em 2021.

Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 14:24
por JoséQuintas
Agora em SP tem até imposto diferente se a venda for pra empresa do simples.

Nunca foi tão complicado emitir uma simples nota.

E agora inventaram até imposto com validade, validade por 24 meses.

O barato é lôco.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 14:34
por Itamar M. Lins Jr.
Olá!
E agora inventaram até imposto com validade, validade por 24 meses.

Tenha certeza que ai tem mãos de grandes lobistas da informática... Procure saber quais são as maiores empresas de softwares do Brasil e vc começa a entender pq ainda tem SAT e outras tranqueiras sem necessidade em algumas UFs deste país.

Quem tem seu programinha do ano de 1900 que se vire para atualizar.
A mesma coisa foi o KIT de primeiros socorros e esses pardais que multa acima de 40Km...

Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 14:38
por Itamar M. Lins Jr.
Olá!
Outra coisa, vc precisa colocar essa tabela lá no github da sefazclass.
Agora mesmo um cliente meu precisou tirar um NFe(BA) para a UF destino "ES" e precisei dessa tabela.

Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 14:50
por JoséQuintas
Itamar M. Lins Jr. escreveu:Outra coisa, vc precisa colocar essa tabela lá no github da sefazclass.
Agora mesmo um cliente meu precisou tirar um NFe(BA) para a UF destino "ES" e precisei dessa tabela.


O problema é encontrar uma tabela atualizada.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 14:52
por JoséQuintas
E o barato é doido.

https://www.econform.com.br/aliquota-interna-de-icms-de-todos-os-estados-brasileiros

Vejamos um exemplo de cálculo de ICMS: suponhamos que o produto X em Minas Gerais custe R$ 100. A alíquota sobre esse produto é de 18%. Ou seja, 100 reais vezes 18% resulta em R$118 reais. Em outras palavras, o produto X custará R$118 reais em Minas Gerais.


100 reais vezes 18% dá 118
E esse é o valor do produto?

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 15:21
por Itamar M. Lins Jr.
Olá!
Bem... Não é minha área mas acredito que o estado de destino fica com o ICMS do estado de origem. Deve haver algum repasse entre eles.
Tem a tal DIFAL e mais um tal de vFCPUFDest(fundo de combate a pobreza ) lá no destino etc... Nem quero entender isso, loucura total.

Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 15:28
por Itamar M. Lins Jr.
Olá!
Pela tabela, eu entendi o seguinte:
Na Bahia é 18% mas se a mercadoria vai para o ES a Bahia paga 12% para ele...
Já RJ, MG, RS, SP só paga 7% em sua maioria para UF de destino.
Deixa o Jairo ver essa conversa para lançar mais luzes nisso rsrsrsrsrsrs.

Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 16:04
por Itamar M. Lins Jr.
Olá!
Ta ai o Include, TabelaOrigemDestinoICMS.ch
//Tabela de Origem e Destino do ICMS
# define aTab_OD_ICMS  { ;
{"  ","AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RN","RS","RJ","RO","RR","SC","SP","SE","TO"} ,;
{"AC", 17, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"AL", 12, 17, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"AM", 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"AP", 12, 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"BA", 12, 12, 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"CE", 12, 12, 12, 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"DF", 12, 12, 12, 12, 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"ES", 12, 12, 12, 12, 12, 12, 12, 17, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"GO", 12, 12, 12, 12, 12, 12, 12, 12, 17, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"MA", 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"MT", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"MS", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"MG",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 18,  7,  7, 12,  7,  7,  7, 12, 12,    7,  7, 12, 12,  7,  7} ,;
{"PA", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"PB", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"PR",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 12,  7,  7, 18,  7,  7,  7, 12, 12,    7,  7, 12, 12,  7,  7} ,;
{"PE", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 12, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"PI", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 12, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"RN", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 12, 12,   12, 12, 12, 12, 12, 12} ,;
{"RS",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 12,  7,  7, 12,  7,  7,  7, 18, 12,    7,  7, 12, 12,  7,  7} ,;
{"RJ",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 12,  7,  7, 12,  7,  7,  7, 12, 18,    7,  7, 12, 12,  7,  7} ,;
{"RO", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17.5, 12, 12, 12, 12, 12} ,;
{"RR", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 17, 12, 12, 12, 12} ,;
{"SC",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 12,  7,  7, 12,  7,  7,  7, 12, 12,    7,  7, 17, 12,  7,  7} ,;
{"SP",  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7, 12,  7,  7, 12,  7,  7,  7, 12, 12,    7,  7, 12, 18,  7,  7} ,;
{"SE", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 18, 12} ,;
{"TO", 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,   12, 12, 12, 12, 12, 18}}


Saudações,
Itamar M. Lins Jr.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 16:48
por JoséQuintas
Fiz diferente.

icms.png
icms.png (5.09 KiB) Visualizado 1786 vezes


REQUEST HB_CODEPAGE_PTISO

FUNCTION Main()

   SetMode( 25, 80 )
   CLS
   ? AliquotaICMS( "SP", "SP" )
   ? AliquotaICMS( "SP", "GO" )
   ? AliquotaICMS( "PR", "GO" )
   ? AliquotaICMS( "GO", "GO" )
   Inkey(0)

   RETURN Nil

FUNCTION AliquotaICMS( cUF1, cUF2 )

   LOCAL nPos, nAliquota := 0
   LOCAL aList := { ;
      { "AC", "AC", 12 }, ;
      { "AL", "AL", 18 }, ;
      { "AM", "AM", 18 }, ;
      { "AP", "AP", 18 }, ;
      { "BA", "BA", 18 }, ;
      { "CE", "CE", 18 }, ;
      { "DF", "DF", 18 }, ;
      { "ES", "ES", 17 }, ;
      { "GO", "GO", 17 }, ;
      { "MA", "MA", 18 }, ;
      { "MG", "MG", 18 }, ;
      { "MG", "PR", 12 }, ;
      { "MG", "RJ", 12 }, ;
      { "MG", "RS", 12 }, ;
      { "MG", "SC", 12 }, ;
      { "MG", "SP", 12 }, ;
      { "MG", "**", 7 }, ;
      { "MT", "MT", 17 }, ;
      { "MS", "MS", 17 }, ;
      { "PA", "PA", 17 }, ;
      { "PB", "PB", 18 }, ;
      { "PE", "PE", 18 }, ;
      { "PI", "PI", 18 }, ;
      { "PR", "PR", 18 }, ;
      { "RJ", "RJ", 12 }, ;
      { "RJ", "RS", 12 }, ;
      { "SC", "SC", 12 }, ;
      { "SC", "SP", 12 }, ;
      { "SC", "**", 7 }, ;
      { "RJ", "RJ", 20 }, ;
      { "RJ", "MG", 12 }, ;
      { "RJ", "PR", 12 }, ;
      { "RJ", "RS", 12 }, ;
      { "RJ", "SC", 12 }, ;
      { "RJ", "SP", 12 }, ;
      { "RJ", "**", 7 }, ;
      { "RN", "RN", 18 }, ;
      { "RO", "RO", 17.5 }, ;
      { "RR", "RR", 17 }, ;
      { "RS", "RS", 18 }, ;
      { "RS", "MG", 12 }, ;
      { "RS", "PR", 12 }, ;
      { "RS", "MS", 12 }, ;
      { "RS", "SC", 12 }, ;
      { "RS", "SP", 12 }, ;
      { "RS", "**", 7 }, ;
      { "SC", "SC", 17 }, ;
      { "SC", "MG", 12 }, ;
      { "SC", "PR", 12 }, ;
      { "SC", "MS", 12 }, ;
      { "SC", "PB", 12 }, ;
      { "SC", "RS", 12 }, ;
      { "SC", "SP", 12 }, ;
      { "SC", "**", 7 }, ;
      { "SP", "SP", 18 }, ;
      { "SP", "MG", 12 }, ;
      { "SP", "PR", 12 }, ;
      { "SP", "RJ", 12 }, ;
      { "SP", "RS", 12 }, ;
      { "SP", "SC", 12 }, ;
      { "SP", "**", 7 }, ;
      { "SE", "SE", 18 }, ;
      { "TO", "TO", 18 }, ;
      { "**", "**", 12 } }

   Altd()
   nPos := hb_ASCan( aList, { | e | ( e[ 1 ] == cUF1 .OR. e[ 1 ] == "**" ) .AND. ( e[ 2 ] == cUF2 .OR. e[ 2 ] == "**" ) } )
   IF nPos != 0
      nAliquota := aList[ nPos, 3 ]
   ENDIF

   RETURN nAliquota


Defaults: UF/** para a UF, e **/** pra geral

Precisou atribuir 12% em alguns casos, por exemplo SP a exceção vai ser 7%, enquanto a exceção geral é 12%.

SP/SP pega de SP/SP 18
SP/GO pega de SP/** 7
XX/XX pega de **/** 12

Se não colocasse SP/MG nessa lista, iria pegar SP/** 7 e não o default de 12.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 16:54
por JoséQuintas
aliquota+interna.jpg


Usei esta tabela como referência

Como dá pra ver na tabela, interna é diferente, e a maioria é 12%.
Então **/** atende a maioria, e precisa a interna detalhada.

Em certas UFs, a maioria é 7%, foi onde coloquei UF/** com 7%
Mas nessas, tem as exceções com 12%, foi onde coloquei uma a uma a de 12% pra não entrar UF/** 7%

Poderia fazer a lista com todas as exceções a 12%, mas a lista seria maior.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 17:02
por JoséQuintas
Aproveitando.....
O legal de declarar variáveis no lugar certo é....

   nPos := hb_ASCan( aList, { | e | ( e[ 1 ] == cUF1 .OR. e[ 1 ] == "**" ) .AND. ( e[ 2 ] == cUF2 .OR. e[ 2 ] == "**" ) } )
   IF nPos != 0
      nAliquota := aList[ nPos, 3 ]
   ENDIF

   RETURN nAliquota


O fonte se resumiu a isso, o resto é declaração de variável.
E se colocar em #include... nem aparece no fonte.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 17:13
por JoséQuintas
Já pensei em usar tabelas em JSON e deixar como RESOURCE ao invés de #include.
Mas mexer no JSON manualmente pode ser complicado.

Por exemplo, uso aqui:

STATIC FUNCTION JasonList()

#pragma __binarystreaminclude "resource/remote.json"   | RETURN %s


É a tabela de códigos para meu controle remoto.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 17:26
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 17:44
por JoséQuintas
Tá certo.

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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 18:05
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 18:19
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) Visualizado 1251 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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 18:35
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
SELECT * FROM TABELAICMS WHERE ( ORIGEM = "SP" OR ORIGEM = "**" ) AND ( DESTINO = "SP" OR DESTINO = "**" ) LIMIT 1


Em DBF
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 18:43
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)

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 19:33
por Itamar M. Lins Jr.
Olá!
O problema agora é entender como é o calculo dos campos.
    <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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 21:52
por Fernando queiroz
Itamar M. Lins Jr. escreveu:Olá!
O problema agora é entender como é o calculo dos campos.
    <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-diferencial-de-aliquota-icms/

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 21:56
por Fernando queiroz
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

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 08 Abr 2021 22:19
por Fernando queiroz
****************************************************************
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

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 09 Abr 2021 01:07
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

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 09 Abr 2021 03:40
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

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 09 Abr 2021 09:32
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 09 Abr 2021 11:16
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 09 Abr 2021 11:51
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.

TABELAS: Aliquotas ICMS de origem e destino completa

MensagemEnviado: 14 Abr 2021 16:14
por JoséQuintas
Reduzi mais ainda, agrupei as internas semelhantes.

http://pctoledo.com.br/forum/viewtopic.php?f=57&t=25512