Página 2 de 3

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 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

Enviado: 08 Abr 2021 17:44
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.

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 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

Enviado: 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) Exibido 3649 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

Enviado: 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

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.

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 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

Enviado: 08 Abr 2021 19:33
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.

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 08 Abr 2021 21:52
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/

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 08 Abr 2021 21:56
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

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 08 Abr 2021 22:19
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

TABELAS: Aliquotas ICMS de origem e destino completa

Enviado: 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

Enviado: 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

Enviado: 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

Enviado: 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

Enviado: 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.