When calling the API open-ils.storage.actor.user.juvenile_to_adult,
most notably from the juv_to_adult.srfsh support script, instead of
strictly using the hardcoded passed value, first check the
global.juvenile_age_threshold from the settings based on the user's
home library. If the setting does not exist, then fall back on the
hardcoded passed value.
This will allow each library to be able to set different juvenile
thresholds if needed and at the very least, give control to the
settings rather than rely strictly on the hardcoded passed value.
Signed-off-by: Steven Callender <stevecallender@esilibrary.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
my $sql = <<" SQL";
UPDATE actor.usr
SET juvenile = FALSE
- WHERE AGE(dob) > ?::INTERVAL
- AND juvenile IS TRUE;
+ WHERE id IN (
+ SELECT au.id
+ FROM actor.usr au
+ WHERE AGE(au.dob) > COALESCE( BTRIM( (SELECT value FROM actor.org_unit_ancestor_setting('global.juvenile_age_threshold', au.home_ou)),'"' ), ? )::INTERVAL
+ AND au.juvenile IS TRUE)
SQL
my $sth = actor::user->db_Main->prepare_cached($sql);