alter table interfaceexamerequisicao add ier_resultadoalterado smallint default 0; insert into atualizacoes(atu_nome) values ('v18060001_260618.sql'); CREATE OR REPLACE FUNCTION situacaorequisicaoweb(integer, bigint) RETURNS integer AS $BODY$ declare total integer; prontos integer; filCodigo alias for $1; reqCodigo alias for $2; retorno integer; begin select count(exa_codigo) into total from examerequisicao where fil_codigo = filCodigo and req_codigo = reqCodigo and exr_excluido = false; --raise notice 'Total %', total; select count(exa_codigo) into prontos from examerequisicao where fil_codigo = filCodigo and req_codigo = reqCodigo and exr_situacao in ('C', 'I', 'E', 'A') and exr_excluido = false; --raise notice 'Prontos %', prontos; retorno := 0; --considera como incompleta if (FOUND) then if total = prontos then retorno := 2; --todos prontos elsif total > prontos and prontos > 0 then retorno := 1; --parcial end if; end if; return retorno; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; insert into atualizacoes(atu_nome) values ('v18060002_280618.sql'); alter table parametros add par_agrupadataentregas boolean default false; drop table loginterface cascade; create table loginterface ( lin_codigo serial not null, fil_codigo integer, int_codigo integer, lin_datahora timestamp default current_timestamp, lin_operacao text ); create unique index xpkloginterface on loginterface ( lin_codigo ); create index xif1loginterface on loginterface ( fil_codigo, int_codigo ); alter table loginterface add primary key (lin_codigo); drop function fn_td_interface() cascade; create function fn_td_interface() returns opaque as ' declare numrows integer; begin delete from loginterface where loginterface.fil_codigo = old.fil_codigo and loginterface.int_codigo = old.int_codigo; delete from interfacematerial where interfacematerial.fil_codigo = old.fil_codigo and interfacematerial.int_codigo = old.int_codigo; select count(*) into numrows from interfaceexamerequisicao where interfaceexamerequisicao.fil_codigo = old.fil_codigo and interfaceexamerequisicao.int_codigo = old.int_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela interfaceexamerequisicao.''; end if; select count(*) into numrows from interfacerack where interfacerack.fil_codigo = old.fil_codigo and interfacerack.int_codigo = old.int_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela interfacerack.''; end if; select count(*) into numrows from examematinterface where examematinterface.fil_codigo = old.fil_codigo and examematinterface.int_codigo = old.int_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematinterface.''; end if; return old; end;' language 'plpgsql'; create trigger td_interface after delete on interface for each row execute procedure fn_td_interface(); drop function fn_ti_interface() cascade; create function fn_ti_interface() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from setores where new.fil_codigo = setores.fil_codigo and new.set_codigo = setores.set_codigo; tmp:=''setores|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''set_codigo='' || new.set_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.set_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela setores. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; select count(*) into numrows from filiais_postocoleta where new.fil_codigo = filiais_postocoleta.fil_codigo; tmp:=''filiais_postocoleta|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; return new; end;' language 'plpgsql'; create trigger ti_interface after insert on interface for each row execute procedure fn_ti_interface(); drop function fn_tu_interface() cascade; create function fn_tu_interface() returns opaque as ' declare numrows integer; tmp varchar; begin if (old.fil_codigo <> new.fil_codigo or old.int_codigo <> new.int_codigo) then select count(*) from loginterface where loginterface.fil_codigo = old.fil_codigo and loginterface.int_codigo = old.int_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loginterface.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.int_codigo <> new.int_codigo) then select count(*) from interfacematerial where interfacematerial.fil_codigo = old.fil_codigo and interfacematerial.int_codigo = old.int_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfacematerial.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.int_codigo <> new.int_codigo) then select count(*) from interfaceexamerequisicao where interfaceexamerequisicao.fil_codigo = old.fil_codigo and interfaceexamerequisicao.int_codigo = old.int_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexamerequisicao.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.int_codigo <> new.int_codigo) then select count(*) from interfacerack where interfacerack.fil_codigo = old.fil_codigo and interfacerack.int_codigo = old.int_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfacerack.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.int_codigo <> new.int_codigo) then select count(*) from examematinterface where examematinterface.fil_codigo = old.fil_codigo and examematinterface.int_codigo = old.int_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematinterface.''; end if; end if; select count(*) into numrows from setores where new.fil_codigo = setores.fil_codigo and new.set_codigo = setores.set_codigo; tmp:=''setores|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''set_codigo='' || new.set_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.set_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela setores. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; select count(*) into numrows from filiais_postocoleta where new.fil_codigo = filiais_postocoleta.fil_codigo; tmp:=''filiais_postocoleta|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; return old; end;' language 'plpgsql'; create trigger tu_interface after update on interface for each row execute procedure fn_tu_interface(); --drop function fn_ti_loginterface() cascade; create function fn_ti_loginterface() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from interface where new.fil_codigo = interface.fil_codigo and new.int_codigo = interface.int_codigo; tmp:=''interface|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''int_codigo='' || new.int_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.int_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela interface. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; return new; end;' language 'plpgsql'; create trigger ti_loginterface after insert on loginterface for each row execute procedure fn_ti_loginterface(); --drop function fn_tu_loginterface() cascade; create function fn_tu_loginterface() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from interface where new.fil_codigo = interface.fil_codigo and new.int_codigo = interface.int_codigo; tmp:=''interface|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''int_codigo='' || new.int_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.int_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela interface. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; return old; end;' language 'plpgsql'; create trigger tu_loginterface after update on loginterface for each row execute procedure fn_tu_loginterface(); insert into atualizacoes(atu_nome) values ('v18060003_050718.sql');