Index: openacs-4/packages/ams/sql/postgresql/ams-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/sql/postgresql/ams-drop.sql,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/ams/sql/postgresql/ams-drop.sql 28 May 2005 15:37:27 -0000 1.5 +++ openacs-4/packages/ams/sql/postgresql/ams-drop.sql 9 Feb 2006 23:30:03 -0000 1.6 @@ -63,6 +63,7 @@ select drop_package('ams_list'); select drop_package('ams_value'); select drop_package('ams_widget'); +select drop_package('ams_util'); -- select acs_object__delete(address_id) from ams_attribute_values where address_id is not null; -- select acs_object__delete(number_id) from ams_attribute_values where number_id is not null; Index: openacs-4/packages/ams/sql/postgresql/ams-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/sql/postgresql/ams-package-create.sql,v diff -u -N -r1.8 -r1.9 --- openacs-4/packages/ams/sql/postgresql/ams-package-create.sql 30 Jan 2006 22:22:58 -0000 1.8 +++ openacs-4/packages/ams/sql/postgresql/ams-package-create.sql 9 Feb 2006 23:30:03 -0000 1.9 @@ -731,20 +731,28 @@ end;' language 'plpgsql'; +------ Utilities +-------------------------------------------------------------------- +create or replace function ams_util__next_instance_of_date(timestamptz) +returns date as ' +declare + p_date alias for $1; + v_years integer; + v_next_instance date; +begin + v_years := extract(year from now()) - extract(year from p_date); + v_next_instance := p_date + (v_years::varchar || '' years'')::interval; + -- if this already happend we and one more year + if v_next_instance::date < now()::date then + v_next_instance := v_next_instance + ''1 year''::interval; + end if; + return v_next_instance; +end;' language 'plpgsql'; - - - - - - - - - Index: openacs-4/packages/ams/sql/postgresql/upgrade/upgrade-1.1d12-1.1d13.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/sql/postgresql/upgrade/upgrade-1.1d12-1.1d13.sql,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/ams/sql/postgresql/upgrade/upgrade-1.1d12-1.1d13.sql 30 Jan 2006 22:22:58 -0000 1.1 +++ openacs-4/packages/ams/sql/postgresql/upgrade/upgrade-1.1d12-1.1d13.sql 9 Feb 2006 23:30:03 -0000 1.2 @@ -82,3 +82,25 @@ return v_address_id; end;' language 'plpgsql'; + + +create or replace function ams_util__next_instance_of_date(timestamptz) +returns date as ' +declare + p_date alias for $1; + v_years integer; + v_next_instance date; +begin + + v_years := extract(year from now()) - extract(year from p_date); + + v_next_instance := p_date + (v_years::varchar || '' years'')::interval; + + -- if this already happend we and one more year + if v_next_instance::date < now()::date then + v_next_instance := v_next_instance + ''1 year''::interval; + end if; + + return v_next_instance; +end;' language 'plpgsql'; +