Problem with indentation script

The forum for ZeosLib 7.2 Report problems. Ask for help, post proposals for the new version and Zeoslib 7.2 features here. This is a forum that will be edited once the 7.2.x version goes into RC/stable!!

My personal intention for 7.2 is to speed up the internals as optimal a possible for all IDE's. Hope you can help?! Have fun with testing 7.2
Post Reply
tamarozirafael
Fresh Boarder
Fresh Boarder
Posts: 6
Joined: 12.09.2014, 20:09

Problem with indentation script

Post by tamarozirafael »

Sorry my English is bad I'm using google translator.

I created a script and I'm using the zsqlprocessor. the scriptt is usually generated in the database.

However, when I check the ddl in the database is all messed up. As below:
What can be. Recalling that in another version of zeos worked normally. I did not move anything.

See below the code is all messy, but working. But to understand this is very complicated.

CREATE OR ALTER trigger itensnotas_bi for itensnotas active before insert or update or delete position 0 as declare variable cfop_produto char(4); declare variable cfop_notas char(4); declare variable iecliente char(15); declare variable codcliente integer; begin new.itensnotas_precototal = new.itensnotas_qtde * new.itensnotas_preuntotal; /* Valor unitario liquido = preco unt total - vl de desc. unt. */ new.itensnotas_pcuntliq = new.itensnotas_preuntotal - new.itensnotas_vldescunit; /* Valor preco total liquido = preco unt. liq. * qtde */ /* Muitos problemas com isso assim
new.itensnotas_pctotalliq = new.itensnotas_precototal - new.itensnotas_vldestotal; */ new.itensnotas_pctotalliq = new.itensnotas_pcuntliq * new.itensnotas_qtde; if (inserting) then begin if (new.ncm_codigo is null) then exception exp_dinamica 'Campo NCM não pode ser nulo!!!'; if ((new.itensnotas_qtde is null)or (new.itensnotas_qtde =0 )) then exception EXP_DINAMICA 'Campo QTDE de Preenchimento Obrigatorio!'; if ((new.itensnotas_preuntotal is null)or (new.itensnotas_preuntotal =0)) then exception EXP_DINAMICA 'Campo Preco Unit. Total de Preenchimento Obrigatorio!'; /* if ((new.ncm_codigo is null)or (new.ncm_codigo ='')) then
exception EXP_DINAMICA 'NCM INVALIDO'; */ select notas.cfop_cfop from notas where notas.notas_codigo = new.notas_codigo into :cfop_notas; if ((substring(:cfop_notas from 2 for 3) not in ('202','904','411'))) then /* if ((cfop_notas <>'1202') and (cfop_notas <> '1904')) then */ if ((substring(:cfop_notas from 1 for 1) in ('1','2','3'))) then begin select (coalesce(produtos.cfop_cfopentrada,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto; if (coalesce(cfop_produto,'') <> '') then begin new.cfop_cfop = cfop_produto; end if (coalesce(new.cfop_cfop,'') = '') then begin new.cfop_cfop = :cfop_notas; end end else if ((substring(:cfop_notas from 1 for 1 ) in ('5','6','7'))) then begin select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto; if (coalesce(cfop_produto,'') <> '') then begin new.cfop_cfop = cfop_produto; end if (coalesce(new.cfop_cfop,'') = '') then begin new.cfop_cfop = :cfop_notas; end if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then new.csosn_codigo = '500'; else begin select notas.cliente_codigo from notas where notas.notas_codigo = new.notas_codigo into :codcliente; select coalesce(clientes.clientes_ie,'') from clientes where clientes.clientes_codigo = :codcliente into :iecliente; if ((iecliente = '') or (iecliente= 'ISENTA')) then new.csosn_codigo = '102'; else new.csosn_codigo = '101'; end end if ((substring(:cfop_notas from 2 for 3) in ('202','904','411'))) then begin select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto; if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '411'; else new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '202'; end if ((cfop_notas = '1904')) then new.cfop_cfop = :cfop_notas; if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then new.csosn_codigo = '500'; else begin select notas.cliente_codigo from notas where notas.notas_codigo = new.notas_codigo into :codcliente; select coalesce(clientes.clientes_ie,'') from clientes where clientes.clientes_codigo = :codcliente into :iecliente; if ((iecliente = '') or (iecliente= 'ISENTA')) then new.csosn_codigo = '102'; else new.csosn_codigo = '101'; end if (new.cfop_cfop = '5933') then begin new.csosn_codigo = '400'; /* new.ncm_codigo ='00'; */ end end if (new.cfop_cfop = '5933') then new.csosn_codigo = '400'; if (new.itensnotas_codigo is null) then new.itensnotas_codigo = gen_id(gen_itensnotas_id,1); end
User avatar
EgonHugeist
Zeos Project Manager
Zeos Project Manager
Posts: 1936
Joined: 31.03.2011, 22:38

Re: Problem with indentation script

Post by EgonHugeist »

Hi,

don't worry about your english!
Which version of Zeos do you use? 7.2..??
Could you order/sort the script a bit? It's really hard to read.
What happens/do you expect?
Best regards, Michael

You want to help? http://zeoslib.sourceforge.net/viewtopic.php?f=4&t=3671
You found a (possible) bug? Use the new bugtracker dude! http://sourceforge.net/p/zeoslib/tickets/

Image
tamarozirafael
Fresh Boarder
Fresh Boarder
Posts: 6
Joined: 12.09.2014, 20:09

Re: Problem with indentation script

Post by tamarozirafael »

The version is 7.2. The sql code it is correct. It performs normally. The problem is the structure that it has no way to understand. he should be in the following structure:

CREATE OR ALTER trigger itensnotas_bi for itensnotas
active before insert or update or delete position 0
as
declare variable cfop_produto char(4);
declare variable cfop_notas char(4);
declare variable iecliente char(15);
declare variable codcliente integer;


begin
new.itensnotas_precototal = new.itensnotas_qtde * new.itensnotas_preuntotal;
/* Valor unitario liquido = preco unt total - vl de desc. unt. */
new.itensnotas_pcuntliq = new.itensnotas_preuntotal - new.itensnotas_vldescunit;
/* Valor preco total liquido = preco unt. liq. * qtde */
/* Muitos problemas com isso assim
new.itensnotas_pctotalliq = new.itensnotas_precototal - new.itensnotas_vldestotal; */
new.itensnotas_pctotalliq = new.itensnotas_pcuntliq * new.itensnotas_qtde;


if (inserting) then
begin
if (new.ncm_codigo is null) then
exception exp_dinamica 'Campo NCM não pode ser nulo!!!';

if ((new.itensnotas_qtde is null)or (new.itensnotas_qtde =0 )) then
exception EXP_DINAMICA 'Campo QTDE de Preenchimento Obrigatorio!';

if ((new.itensnotas_preuntotal is null)or (new.itensnotas_preuntotal =0)) then
exception EXP_DINAMICA 'Campo Preco Unit. Total de Preenchimento Obrigatorio!';

/* if ((new.ncm_codigo is null)or (new.ncm_codigo ='')) then
exception EXP_DINAMICA 'NCM INVALIDO'; */

select notas.cfop_cfop from notas where notas.notas_codigo = new.notas_codigo into :cfop_notas;


if ((substring(:cfop_notas from 2 for 3) not in ('202','904','411'))) then
/* if ((cfop_notas <>'1202') and (cfop_notas <> '1904')) then */
if ((substring(:cfop_notas from 1 for 1) in ('1','2','3'))) then
begin

select (coalesce(produtos.cfop_cfopentrada,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if (coalesce(cfop_produto,'') <> '') then
begin
new.cfop_cfop = cfop_produto;
end
if (coalesce(new.cfop_cfop,'') = '') then
begin
new.cfop_cfop = :cfop_notas;
end

end
else if ((substring(:cfop_notas from 1 for 1 ) in ('5','6','7'))) then
begin

select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if (coalesce(cfop_produto,'') <> '') then
begin
new.cfop_cfop = cfop_produto;
end
if (coalesce(new.cfop_cfop,'') = '') then
begin
new.cfop_cfop = :cfop_notas;
end
if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.csosn_codigo = '500';
else
begin
select notas.cliente_codigo from notas
where notas.notas_codigo = new.notas_codigo
into :codcliente;

select coalesce(clientes.clientes_ie,'') from
clientes
where clientes.clientes_codigo = :codcliente
into :iecliente;

if ((iecliente = '') or (iecliente= 'ISENTA')) then
new.csosn_codigo = '102';
else
new.csosn_codigo = '101';
end
end

if ((substring(:cfop_notas from 2 for 3) in ('202','904','411'))) then
begin
select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '411';
else
new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '202';
end
if ((cfop_notas = '1904')) then
new.cfop_cfop = :cfop_notas;

if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.csosn_codigo = '500';
else
begin
select notas.cliente_codigo from notas
where notas.notas_codigo = new.notas_codigo
into :codcliente;

select coalesce(clientes.clientes_ie,'') from
clientes
where clientes.clientes_codigo = :codcliente
into :iecliente;

if ((iecliente = '') or (iecliente= 'ISENTA')) then
new.csosn_codigo = '102';
else
new.csosn_codigo = '101';

end

if (new.cfop_cfop = '5933') then
begin
new.csosn_codigo = '400';
/* new.ncm_codigo ='00'; */

end
end

if (new.cfop_cfop = '5933') then
new.csosn_codigo = '400';


if (new.itensnotas_codigo is null) then
new.itensnotas_codigo = gen_id(gen_itensnotas_id,1);

end
tamarozirafael
Fresh Boarder
Fresh Boarder
Posts: 6
Joined: 12.09.2014, 20:09

Re: Problem with indentation script

Post by tamarozirafael »

EgonHugeist wrote:Hi,

don't worry about your english!
Which version of Zeos do you use? 7.2..??
Could you order/sort the script a bit? It's really hard to read.
What happens/do you expect?
Hello I use the 7.2 version. The Delphi is the XE6. The correct indentation should be:

CREATE OR ALTER trigger itensnotas_bi for itensnotas
active before insert or update or delete position 0
as
declare variable cfop_produto char(4);
declare variable cfop_notas char(4);
declare variable iecliente char(15);
declare variable codcliente integer;


begin
new.itensnotas_precototal = new.itensnotas_qtde * new.itensnotas_preuntotal;
/* Valor unitario liquido = preco unt total - vl de desc. unt. */
new.itensnotas_pcuntliq = new.itensnotas_preuntotal - new.itensnotas_vldescunit;
/* Valor preco total liquido = preco unt. liq. * qtde */
/* Muitos problemas com isso assim
new.itensnotas_pctotalliq = new.itensnotas_precototal - new.itensnotas_vldestotal; */
new.itensnotas_pctotalliq = new.itensnotas_pcuntliq * new.itensnotas_qtde;


if (inserting) then
begin
if (new.ncm_codigo is null) then
exception exp_dinamica 'Campo NCM não pode ser nulo!!!';

if ((new.itensnotas_qtde is null)or (new.itensnotas_qtde =0 )) then
exception EXP_DINAMICA 'Campo QTDE de Preenchimento Obrigatorio!';

if ((new.itensnotas_preuntotal is null)or (new.itensnotas_preuntotal =0)) then
exception EXP_DINAMICA 'Campo Preco Unit. Total de Preenchimento Obrigatorio!';

/* if ((new.ncm_codigo is null)or (new.ncm_codigo ='')) then
exception EXP_DINAMICA 'NCM INVALIDO'; */

select notas.cfop_cfop from notas where notas.notas_codigo = new.notas_codigo into :cfop_notas;


if ((substring(:cfop_notas from 2 for 3) not in ('202','904','411'))) then
/* if ((cfop_notas <>'1202') and (cfop_notas <> '1904')) then */
if ((substring(:cfop_notas from 1 for 1) in ('1','2','3'))) then
begin

select (coalesce(produtos.cfop_cfopentrada,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if (coalesce(cfop_produto,'') <> '') then
begin
new.cfop_cfop = cfop_produto;
end
if (coalesce(new.cfop_cfop,'') = '') then
begin
new.cfop_cfop = :cfop_notas;
end

end
else if ((substring(:cfop_notas from 1 for 1 ) in ('5','6','7'))) then
begin

select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if (coalesce(cfop_produto,'') <> '') then
begin
new.cfop_cfop = cfop_produto;
end
if (coalesce(new.cfop_cfop,'') = '') then
begin
new.cfop_cfop = :cfop_notas;
end
if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.csosn_codigo = '500';
else
begin
select notas.cliente_codigo from notas
where notas.notas_codigo = new.notas_codigo
into :codcliente;

select coalesce(clientes.clientes_ie,'') from
clientes
where clientes.clientes_codigo = :codcliente
into :iecliente;

if ((iecliente = '') or (iecliente= 'ISENTA')) then
new.csosn_codigo = '102';
else
new.csosn_codigo = '101';
end
end

if ((substring(:cfop_notas from 2 for 3) in ('202','904','411'))) then
begin
select (coalesce(produtos.cfop_cfopSaida,'')) from produtos where produtos.produtos_codigo = new.produtos_codigo into :cfop_produto;

if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '411';
else
new.cfop_cfop = substring(:cfop_notas from 1 for 1) || '202';
end
if ((cfop_notas = '1904')) then
new.cfop_cfop = :cfop_notas;

if ((substring(:cfop_produto from 2 for 2) in ('40','41','42','43','44'))) then
new.csosn_codigo = '500';
else
begin
select notas.cliente_codigo from notas
where notas.notas_codigo = new.notas_codigo
into :codcliente;

select coalesce(clientes.clientes_ie,'') from
clientes
where clientes.clientes_codigo = :codcliente
into :iecliente;

if ((iecliente = '') or (iecliente= 'ISENTA')) then
new.csosn_codigo = '102';
else
new.csosn_codigo = '101';

end

if (new.cfop_cfop = '5933') then
begin
new.csosn_codigo = '400';
/* new.ncm_codigo ='00'; */

end
end

if (new.cfop_cfop = '5933') then
new.csosn_codigo = '400';


if (new.itensnotas_codigo is null) then
new.itensnotas_codigo = gen_id(gen_itensnotas_id,1);

end
tamarozirafael
Fresh Boarder
Fresh Boarder
Posts: 6
Joined: 12.09.2014, 20:09

Re: Problem with indentation script

Post by tamarozirafael »

Zeos 7.2 Delphi XE6
User avatar
EgonHugeist
Zeos Project Manager
Zeos Project Manager
Posts: 1936
Joined: 31.03.2011, 22:38

Re: Problem with indentation script

Post by EgonHugeist »

Well this is because we do unify all whitespaces to a space char/' '.

Have to think about it. AFAIK is it alltime code... Don't know why it was made before.
I do understand your point of view. I'll ask the other developers if we should change it.
Best regards, Michael

You want to help? http://zeoslib.sourceforge.net/viewtopic.php?f=4&t=3671
You found a (possible) bug? Use the new bugtracker dude! http://sourceforge.net/p/zeoslib/tickets/

Image
User avatar
EgonHugeist
Zeos Project Manager
Zeos Project Manager
Posts: 1936
Joined: 31.03.2011, 22:38

Re: Problem with indentation script

Post by EgonHugeist »

Should work now like you expects it.

Patch done R3348 \testing-7.2 (SVN)
Best regards, Michael

You want to help? http://zeoslib.sourceforge.net/viewtopic.php?f=4&t=3671
You found a (possible) bug? Use the new bugtracker dude! http://sourceforge.net/p/zeoslib/tickets/

Image
Post Reply