CREATE OR REPLACE FUNCTION public.sp_crud_afiliacion(
    accion character varying,
    p_persona_id integer,
    p_codigo character varying,
    p_fecha_inicio character varying,
    p_fecha_vencimiento character varying,
    p_ubicacion_id integer,
    p_titular_id integer,
    p_plan_id integer)
  RETURNS character varying AS
$BODY$
declare
	id_afiliacion integer;
begin

	Case accion
		When 'i' then
			Insert Into afiliaciones (persona_id, codigo, fecha_inicio, fecha_vencimiento, estado, created_at, ubicacion_id, titular_id, plan_id) 
			Values (p_persona_id, p_codigo, p_fecha_inicio::date, p_fecha_vencimiento::date,'t', now(), p_ubicacion_id, p_titular_id ,p_plan_id);
			id_afiliacion := (SELECT currval('afiliaciones_id_seq'));
		When 'd' then
			update afiliaciones set estado = 'f' where id=p_persona_id;
			id_afiliacion := p_persona_id;
		When 'a' then
			update afiliaciones set estado = 't' where id=p_persona_id;
			id_afiliacion := p_persona_id;
			
	End Case;
				
	return id_afiliacion;
	EXCEPTION
	WHEN OTHERS THEN
        id_afiliacion:=-1;
	return id_afiliacion;

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
