alter table parametros 
  add par_listarpacientepornome boolean,
  add par_pesquisarnomerg boolean;

update parametros set par_listarpacientepornome = false, par_pesquisarnomerg = false;

alter table paciente add pac_rgnaoinformado boolean default false;


insert into atualizacoes(atu_nome) values ('v18080001_190918.sql');

alter table convenios
  add con_percvalorminimo numeric(15,4),
  add con_exigirvalorminimo boolean;


insert into atualizacoes(atu_nome) values ('v18080002_141118.sql');

alter table filiais_postocoleta add fil_xmlapoioweb text;

alter table examerequisicaosituacoes add mrc_codigo integer, add ers_motivorecoleta varchar(200);

create index xif3examerequisicaosituacoes on examerequisicaosituacoes
(
       fil_codigo,
       mrc_codigo
);



drop function fn_ti_examerequisicaosituacoes() cascade;

create function fn_ti_examerequisicaosituacoes() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    select count(*) into numrows
      from motivorecoleta
      where
        new.fil_codigo = motivorecoleta.fil_codigo and
        new.mrc_codigo = motivorecoleta.mrc_codigo;
    tmp:=''motivorecoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''mrc_codigo='' || new.mrc_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.mrc_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela motivorecoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from usuario
      where
        new.usr_codigo = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        new.fil_codigo = examerequisicao.fil_codigo and
        new.exa_codigo = examerequisicao.exa_codigo and
        new.mco_codigo = examerequisicao.mco_codigo and
        new.req_codigo = examerequisicao.req_codigo;
    tmp:=''examerequisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 examerequisicao. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_examerequisicaosituacoes
after insert on examerequisicaosituacoes
for each row execute procedure fn_ti_examerequisicaosituacoes();


drop function fn_tu_examerequisicaosituacoes() cascade;

create function fn_tu_examerequisicaosituacoes() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  select count(*) into numrows
    from motivorecoleta
    where
      new.fil_codigo = motivorecoleta.fil_codigo and
      new.mrc_codigo = motivorecoleta.mrc_codigo;
    tmp:=''motivorecoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''mrc_codigo='' || new.mrc_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.mrc_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela motivorecoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from usuario
    where
      new.usr_codigo = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from examerequisicao
    where
      new.fil_codigo = examerequisicao.fil_codigo and
      new.exa_codigo = examerequisicao.exa_codigo and
      new.mco_codigo = examerequisicao.mco_codigo and
      new.req_codigo = examerequisicao.req_codigo;
    tmp:=''examerequisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 examerequisicao. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_examerequisicaosituacoes
after update on examerequisicaosituacoes
for each row execute procedure fn_tu_examerequisicaosituacoes();


drop function fn_td_motivorecoleta() cascade;

create function fn_td_motivorecoleta() returns opaque as '
declare
	numrows integer;										 
begin
    select count(*) into numrows
      from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.mrc_codigo = old.mrc_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaosituacoes.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.mrc_codigo = old.mrc_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicao.'';
    end if;


return old;
end;'
language 'plpgsql';
					
create trigger td_motivorecoleta
after delete on motivorecoleta
for each row execute procedure fn_td_motivorecoleta();


drop function fn_ti_motivorecoleta() cascade;

create function fn_ti_motivorecoleta() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    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_motivorecoleta
after insert on motivorecoleta
for each row execute procedure fn_ti_motivorecoleta();


drop function fn_tu_motivorecoleta() cascade;

create function fn_tu_motivorecoleta() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.mrc_codigo <> new.mrc_codigo) then
    select count(*)
      from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.mrc_codigo = old.mrc_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosituacoes.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.mrc_codigo <> new.mrc_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.mrc_codigo = old.mrc_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicao.'';
    end if;
  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_motivorecoleta
after update on motivorecoleta
for each row execute procedure fn_tu_motivorecoleta();





insert into atualizacoes(atu_nome) values ('v18080003_141118.sql');

alter table contrassenharequisicao
  add cse_tipo tipo default 'E',
  add cse_totalrequisicao numeric(15,2),
  add cse_valorpagorequisicao numeric(15,2);


insert into atualizacoes(atu_nome) values ('v18080004_191118.sql');