LP#1251415: Use the juvenile setting when removing juvenile flag.
authorSteven Callender <stevecallender@esilibrary.com>
Thu, 14 Nov 2013 20:07:33 +0000 (15:07 -0500)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 4 Nov 2015 21:55:50 +0000 (21:55 +0000)
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>

Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm

index f55da8c..ff9327f 100644 (file)
@@ -32,8 +32,11 @@ sub juv_to_adult {
     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);