-- INICIO - FABIO TEODORO AMORIM - 23/07/2015

INSERT INTO parametrocorpore (
	idparametrocorpore, 
	nomeparametrocorpore, 
	valor, 
	idempresa, 
	datainicio, 
	datafim, 
	tipodado) 
VALUES (
	269, 
	'parametro.269', 
	(select parametro.valor from parametrocorpore parametro where parametro.idparametrocorpore = 27), 
	1, 
	current_date, 
	null, 
	'Texto');

-- FIM - FABIO TEODORO AMORIM - 23/07/2015
	
-- INICIO - Euler Ramos - 16/09/2015

alter table contratos add centroderesultado integer default 0;

-- FIM - Euler Ramos - 16/09/2015

-- INICIO - euler.ramos - 13/10/2015

CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS 
    '$libdir/plpgsql' LANGUAGE C;
 
CREATE OR REPLACE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' 
  HANDLER plpgsql_call_handler;
 
CREATE OR REPLACE FUNCTION f_busca_itemtrabalho(bigint) RETURNS SETOF bigint AS 
$BODY$ 
DECLARE 
	registros bigint; 
BEGIN 
	FOR registros IN (select distinct it.iditemtrabalho 
					  from execucaosolicitacao ex join bpm_itemtrabalhofluxo it on ex.idsolicitacaoservico = $1 and ex.idinstanciafluxo = it.idinstancia AND it.idStatus in (2, 3) 
					                              join bpm_elementofluxo e on e.idelemento = it.idelemento AND e.idtype = 2 
												  join bpm_atribuicaofluxo a on it.iditemtrabalho = a.iditemtrabalho AND a.idtype in (1,3) 
					 ) 
	LOOP 
	    RETURN NEXT registros; 
	END LOOP; 
	IF NOT FOUND 
		THEN 
		    FOR registros IN (select it.iditemtrabalho 
							  from execucaosolicitacao ex join bpm_itemtrabalhofluxo it on ex.idsolicitacaoservico = $1 and ex.idinstanciafluxo = it.idinstancia 
														  join bpm_elementofluxo e on e.idelemento = it.idelemento AND e.idtype = 2 
														  join bpm_atribuicaofluxo a on it.iditemtrabalho = a.iditemtrabalho AND a.idtype in (1,3) 
							  ORDER BY datahorafinalizacao desc limit 1 
							 ) 
		    LOOP 
			RETURN NEXT registros; 
		    END LOOP; 
	END IF; 
END; 
$BODY$ 
LANGUAGE 'plpgsql' VOLATILE;

CREATE TYPE t_execucao_solicitacao AS (idsolicitacaoservico bigint, iditemtrabalho bigint);

CREATE OR REPLACE FUNCTION f_execucao_solicitacao(char(1),timestamp,timestamp,bigint) RETURNS SETOF t_execucao_solicitacao AS 
$BODY$ 
DECLARE 
	registros t_execucao_solicitacao; 
	iditemtrabalho bigint; 
 
	campoData char(1); 
	dataInicio timestamp; 
	dataFim timestamp; 
	p_idsolicitacaoservico bigint; 
 
	sql text; 
BEGIN 
	sql =  'SELECT idsolicitacaoservico FROM solicitacaoservico'; 
 
	campoData = $1; 
	dataInicio = $2; 
	dataFim = $3; 
	p_idsolicitacaoservico = $4; 
 
	IF campoData IS NOT NULL 
	   THEN 
	       sql = sql ||  ' WHERE ('; 
	       IF campoData =  'A' 
			THEN 
		      sql = sql ||  'datahorasolicitacao'; 
			ELSE 
		      sql = sql ||  'datahorafim'; 
	       END IF; 
	       sql = sql ||  ' BETWEEN '''||dataInicio|| ''' AND '''||dataFim|| ''')'; 
		   IF p_idsolicitacaoservico IS NOT NULL 
			THEN 
			  sql = sql ||  ' AND idsolicitacaoservico = '||p_idsolicitacaoservico; 
		   END IF; 
	   ELSE 
		   IF p_idsolicitacaoservico IS NOT NULL 
			THEN 
			  sql = sql ||  ' WHERE idsolicitacaoservico = '||p_idsolicitacaoservico; 
		   END IF; 
	END IF; 
 
	FOR registros IN EXECUTE sql 
	LOOP 
		FOR iditemtrabalho IN (SELECT f_busca_itemtrabalho(registros.idsolicitacaoservico)) 
		LOOP 
		    registros.iditemtrabalho = iditemtrabalho; 
		END LOOP; 
		RETURN NEXT registros; 
	END LOOP; 
 
END; 
$BODY$ 
LANGUAGE  'plpgsql' VOLATILE;

-- FIM - euler.ramos - 13/10/2015