Página 1 de 1

Imposto monofásico e FCP

Enviado: 25 Abr 2023 20:13
por JoséQuintas
gasolina.png
fcp.png

Imposto monofásico e FCP

Enviado: 27 Abr 2023 11:09
por Fernando queiroz

Código: Selecionar todos

	cQuery := "CREATE FUNCTION IF NOT EXISTS AliquotaFCP( `cUFde` VARCHAR(2)) "
	cQuery += "RETURNS DECIMAL(10,2) "
	cQuery += "LANGUAGE SQL  "
	cQuery += "NOT DETERMINISTIC "
	cQuery += "CONTAINS SQL  "
	cQuery += "SQL SECURITY DEFINER  "
	cQuery += "COMMENT ''  "
	cQuery += "BEGIN "
	cQuery += "	DECLARE nAliquota DECIMAL(10,2) ; "
	cQuery += "	SET nAliquota = (  "
	cQuery += "	CASE "
	cQuery += "	WHEN cUFde IN ( 'AC', 'AP', 'CE', 'PA', 'SC', 'MG' ) THEN 0 "
	cQuery += "	WHEN cUFde IN ( 'AL' ) THEN 1   "             
	cQuery += "	WHEN cUFde = 'RJ' THEN 4 "
	cQuery += "	ELSE 2 "
	cQuery += "END ) ; "
	cQuery += "RETURN nAliquota ; "
	cQuery += "END "
FICOU ASSIM AGORA????

Imposto monofásico e FCP

Enviado: 27 Abr 2023 12:01
por JoséQuintas
essas coisas vão complicando conforme os comandos crescem.

Sugestão:

1) criar estilo resource no próprio MySQL

No caso de deixar no MySQL, pode fazer atualização automática pela data/hora num servidor SEU, e atualizar no cliente a partir dele
Faço assim pra maior parte dos casos

2) criar embutido no EXE

Usando #pragma, com o cuidado de recompilar forçado, porque resource não é conferido
Faço assim pra alguns casos, pra funcionar mesmo sem MySQL
Por exemplo, a criação inicial das tabelas de configuração que não podem faltar.

O comando SQL ficaria num arquivo separado, e ficaria bem legível
sql.png
sql2.png
Meu upload salva esses arquivos exatamente com o mesmo nome, e data/hora no meu servidor.
No cliente, no download, a rotina verifica se tem data mais nova, já atualiza e instala se for o caso.
nos outros:

Código: Selecionar todos

FUNCTION ze_LoadResource( cImage, lObrigatorio )

   hb_Default( @lObrigatorio, .F. )
   cImage := Lower( cImage )
   IF ! lObrigatorio
      hb_Default( @cImage, AppEmpresaApelido() )
   ENDIF
   DO CASE
//   CASE cImage == "banco341.jpg"; #pragma __binarystreaminclude "sql\jpg\banco341.jpg" | RETURN %s
//   CASE cImage == "banco237.jpg"; #pragma __binarystreaminclude "sql\jpg\banco237.jpg" | RETURN %s
//   CASE cImage == "natal.jpg"; #pragma __binarystreaminclude "sql\jpg\natal.jpg" | RETURN %s
   CASE cImage == "jpsenha.sql"; #pragma __binarystreaminclude "sql\table\jpsenha.sql" | RETURN %s
   CASE cImage == "jpbinary.sql"; #pragma __binarystreaminclude "sql\table\jpbinary.sql" | RETURN %s
   CASE cImage == "jpconfi.sql"; #pragma __binarystreaminclude "sql\table\jpconfi.sql" | RETURN %s
   CASE cImage == "jpreguso.sql"; #pragma __binarystreaminclude "sql\table\jpreguso.sql" | RETURN %s
   CASE cImage == "jptabctaadm.sql"; #pragma __binarystreaminclude "sql\table\jptabctaadm.sql" | RETURN %s
   CASE cImage == "jptabquaass.sql"; #pragma __binarystreaminclude "sql\table\jptabquaass.sql" | RETURN %s
   CASE cImage == "jptabhisto.sql"; #pragma __binarystreaminclude "sql\table\jptabhisto.sql" | RETURN %s
   CASE cImage == "jpempresa.sql"; #pragma __binarystreaminclude "sql\table\jpempresa.sql" | RETURN %s

Imposto monofásico e FCP

Enviado: 27 Abr 2023 12:06
por JoséQuintas
No uso, pode ser até direto:

Código: Selecionar todos

cnSQL:Execute( ze_BinaryFromResource( "jpempresa.sql" ) )
//criar function
cnSQL:Execute( ze_BinaryFromSQL( "ze_ExtensoUnidade.sql" ) )
Lembrando:
Pra cadastrar function precisa testar primeiro se já não existe, excluir, e depois incluir.
É bom conferir a lista, e excluir desativadas
E por aí vai.

Imposto monofásico e FCP

Enviado: 27 Abr 2023 13:07
por JoséQuintas
Depois que monta o esquema é moleza.
É só usar Directory() pra pegar nomes, data, hora, tamanho
e gravo crc32 por precaução, pra conferir se tudo bate.

Colocou um arquivo novo lá, ele já entra, nenhum trabalho extra.

Faço isso pra arquivos SQL, JSON, JPG, EXE, DLL, etc.
A rotina de atualização apenas compara data/hora e atualiza a tabela.

E no seu EXE, APÓS A ATUALIZAÇÃO, decide o que fazer com a parte nova.
Vai estar tudo disponível na tabela.

Imposto monofásico e FCP

Enviado: 27 Abr 2023 13:12
por JoséQuintas
binary.png
Dependendo do formato, gravo em base64 e até cryptografado.

Imposto monofásico e FCP

Enviado: 27 Abr 2023 13:19
por JoséQuintas
IMPORTANTÍSSIMO

Coloque codepage nas procedures e functions.
Tive problema com isso na troca de versão de MySQL.
Senão, pode começar a dar erro em tudo, ou deixar tudo lento por causa do MySQL converter.
charset.png
O maior problema é:
tudo funciona, mas se eles mudam o default... ferrou
Definindo codepage, não importa a configuração do servidor, tudo seu vai estar na sua codepage.