Imposto monofásico e FCP

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

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

Imposto monofásico e FCP

Mensagem por JoséQuintas »

gasolina.png
fcp.png
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/
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

Imposto monofásico e FCP

Mensagem 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????
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imposto monofásico e FCP

Mensagem 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
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

Imposto monofásico e FCP

Mensagem 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.
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

Imposto monofásico e FCP

Mensagem 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.
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

Imposto monofásico e FCP

Mensagem por JoséQuintas »

binary.png
Dependendo do formato, gravo em base64 e até cryptografado.
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

Imposto monofásico e FCP

Mensagem 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.
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