--
-- workflow_case__suspend/4
--
create or replace function workflow_case__suspend(
integer,
integer,
character varying,
character varying
) returns int4 as $$
declare
suspend__case_id alias for $1;
suspend__user_id alias for $2; -- default null
suspend__ip_address alias for $3; -- default null
suspend__msg alias for $4; -- default null
v_state varchar;
v_journal_id integer;
begin
select state into v_state
from wf_cases
where case_id = suspend__case_id;
if v_state != 'active' then
raise EXCEPTION '-20000: Only active cases can be suspended';
end if;
/* Add an entry to the journal */
v_journal_id := journal_entry__new(
null,
suspend__case_id,
'case suspend',
'case suspended',
now(),
suspend__user_id,
suspend__ip_address,
suspend__msg
);
update wf_cases
set state = 'suspended'
where case_id = suspend__case_id;
return 0;
end;$$ language plpgsql;