--
-- workflow__add_place/4
--
create or replace function workflow__add_place(
  character varying,
  character varying,
  character varying,
  integer
) returns int4 as $$

declare
  add_place__workflow_key          alias for $1;  
  add_place__place_key             alias for $2;  
  add_place__place_name            alias for $3;  
  add_place__sort_order            alias for $4; 
  v_sort_order			   integer; 
begin
        if add_place__sort_order is null then
            select coalesce(max(sort_order)+1, 1)
              into v_sort_order
              from wf_places
             where workflow_key = add_place__workflow_key;
        else
            v_sort_order := add_place__sort_order;
        end if;
        insert into wf_places (workflow_key, place_key, place_name, sort_order)
        values (add_place__workflow_key, add_place__place_key,add_place__place_name, add_place__sort_order);

        return 0; 
end;$$ language plpgsql;