Alíquota de ICMS

Forum sobre SQL.

Moderador: Moderadores

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

Alíquota de ICMS

Mensagem por JoséQuintas »

aliquota.png
Só brincando mais um pouco

Código: Selecionar todos

CREATE FUNCTION ze_AliquotaIcms( cUFde VARCHAR(2), cUFate VARCHAR(2) )
RETURNS DECIMAL(10,2)
BEGIN
DECLARE nAliquota DECIMAL(10,2);
SET nAliquota = (
CASE
   WHEN cUFde = cUFate AND cUFde IN ( 'AL', 'AM', 'AP', 'BA', 'CE', 
      'DF', 'ES', 'MA', 'MG', 'PB', 'PE', 'PI', 'PR', 'RN', 'RS', 
   	'SP', 'SE', 'TO' ) THEN 18
   WHEN cUFde = cUFate AND cUFde IN ( 'GO', 'MT', 'MS', 'PA', 'RO', 
      'RR', 'SC' ) THEN 17						
   WHEN cUFde = 'AC' AND cUFate = 'AC'  THEN 12
   WHEN cUFde = 'MG' AND cUFate IN ( 'PR', 'RJ', 'RS', 'SC', 'SP' ) THEN 12
   WHEN cUFde = 'MG' THEN 7
   WHEN cUFde = 'RJ' AND cUFate = 'RJ' THEN 20
   WHEN cUFde = 'RJ' AND cUFate IN ( 'MG', 'PR', 'RS', 'SC', 'SP' ) THEN 12
   WHEN cUFde = 'RJ' THEN 7
   WHEN cUFde = 'RS' AND cUFate IN ( 'MG', 'PR', 'PR', 'MS', 'SC', 'SP' ) THEN 12
   WHEN cUFde = 'SC' AND cUFate IN ( 'MG', 'PR', 'MS', 'PB', 'RS', 'SP' ) THEN 12
   WHEN cUFde = 'SC' then 7
   WHEN cUFde = 'SP' AND cUFate IN ( 'MG', 'PR', 'RJ', 'RS', 'SC' ) THEN 12
   WHEN cUFde = 'SP' THEN 7
ELSE 12
END );
RETURN nAliquota;
END
Aí fica bem claro como eu agrupei.
O adicional é pra comparação UFde = UFate, que pega as alíquotas internas.
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

Alíquota de ICMS

Mensagem por JoséQuintas »

Só pra lembrar:

Para executar comando é isso.

Caso queira digitar isso no HeidiSQL, aí é onde entra aquele DELIMITER.

Código: Selecionar todos

DELIMITER $$
comando acima
$$
DELIMITER ;
Foi nisso que eu apanhei da primeira vez.
O delimiter não faz parte do SQL, é pro interpretador que no caso é o HeidiSQL entender.

Faltou a documentação do MySQL mostrar isso de forma clara.
Se for digitar no "console" do MySQL também precisa disso.
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

Alíquota de ICMS

Mensagem por JoséQuintas »

aliquota.png
Lembram aquilo de ficar criando fórmulas no programa pra determinados cálculos?
Então...
É só colocar os cálculos assim em funções da base de dados.

Vamos poder alterar cálculos sem precisar ficar recompilando, instalando versão, etc.
É pra se pensar muito bem em como organizar isso.

Ao invés de atualizar o EXE inteiro, podemos deixar disponível numa base MySQL na internet, ou num webservice, ou num download direto, tanto faz, já que se trata de texto.
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

Alíquota de ICMS

Mensagem por JoséQuintas »

Vixe, me veio outra coisa na cabeça....

A gente vai lá no pedido, trás informações pra fazer os cálculos e salva....

Porque não... tudo ficar lá mesmo, e fazer os cálculos lá mesmo....

Agora é que endoidou tudo de vez....
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/
Responder