 -- drop function if exists workflow.set_omissodeclarado_situacaopc(integer, integer, bpchar, varchar, integer, integer)
CREATE OR REPLACE FUNCTION workflow.set_omissodeclarado_situacaopc(
	p_docid integer,
	p_esdiddestino integer,
	p_cpf bpchar(11),
	p_programa varchar(10),
	p_prog_id integer,
	p_arqid integer
	)
 RETURNS void
 
language plpgsql

as $$

declare

	 estadodocumento_esdidorigem integer;
	 acaoestadodoc_aedid integer;
	 historicodocumento_hstid integer;
	
BEGIN
		estadodocumento_esdidorigem := (select esd.esdid  from workflow.estadodocumento esd inner join workflow.documento doc on esd.esdid = doc.esdid  where doc.docid = p_docid);

		
		INSERT INTO workflow.acaoestadodoc
		(esdidorigem, esdiddestino, aeddscrealizar, aeddscrealizada, esdcomentarioobrigatorio, aeddescregracondicao)
		VALUES(estadodocumento_esdidorigem, p_esdiddestino, 'Enviar para Omisso Declarado', 'Enviado para Omisso Declarado', 't', 'Ação criada via rotina automatica') returning aedid into acaoestadodoc_aedid;
			
		insert into workflow.historicodocumento
		( aedid, docid, usucpf, htddata )
		values ( acaoestadodoc_aedid ,  p_docid , p_cpf, now() )
		returning hstid into historicodocumento_hstid;
		
		insert into workflow.comentariodocumento	
		( docid, hstid, cmddsc, cmddata, cmdstatus )
		values ( p_docid, historicodocumento_hstid , 'Estabelecido omisso declarado', now(), 'A' );
		
		
		update workflow.documento
		set esdid =  p_esdiddestino
		where docid =  p_docid;
	

		if p_programa = 'PAR' then
		 	insert into par.registrosituacaopc
			(usucpf,rspnumerosei,rspdata,rspdataregistro,rspnumerodocumento,rspobservacoes,rspciencia,rsptramitoufase,rsptramitoupc,rsptramitouopc,rspcpfrecebedor,rspnomerecebedor,rspdataciencia,rspvia,arqid,arqid_ciencia,prpid,proid_par,proid_pac,rspvldebitoapurado,rspdtapontada,proid_par3) VALUES
			(p_cpf,null,now(),now(),null,'Declaração de omissão',false,false,false,true,'           ','',NULL,'',p_arqid,NULL,p_prog_id,NULL,NULL,NULL,NULL,NULL);	
		elseif p_programa = 'OBRA' then
			insert into par.registrosituacaopc
			(usucpf,rspnumerosei,rspdata,rspdataregistro,rspnumerodocumento,rspobservacoes,rspciencia,rsptramitoufase,rsptramitoupc,rsptramitouopc,rspcpfrecebedor,rspnomerecebedor,rspdataciencia,rspvia,arqid,arqid_ciencia,prpid,proid_par,proid_pac,rspvldebitoapurado,rspdtapontada,proid_par3) VALUES
			(p_cpf,null,now(),now(),null,'Declaração de omissão',false,false,false,true,'           ','',NULL,'',p_arqid,NULL,null,p_prog_id,NULL,NULL,NULL,NULL);
		elseif p_programa = 'PAC' then		
			insert into par.registrosituacaopc
			(usucpf,rspnumerosei,rspdata,rspdataregistro,rspnumerodocumento,rspobservacoes,rspciencia,rsptramitoufase,rsptramitoupc,rsptramitouopc,rspcpfrecebedor,rspnomerecebedor,rspdataciencia,rspvia,arqid,arqid_ciencia,prpid,proid_par,proid_pac,rspvldebitoapurado,rspdtapontada,proid_par3) VALUES
			(p_cpf,null,now(),now(),null,'Declaração de omissão',false,false,false,true,'           ','',NULL,'',p_arqid,NULL,null,NULL,p_prog_id,NULL,NULL,NULL);
		end if;
		
END; $$

