Use the juvenile setting when removing juvenile flag. collab/Callender/auto_juvenile_use_setting
authorSteven Callender <stevecallender@esilibrary.com>
Thu, 14 Nov 2013 20:07:33 +0000 (15:07 -0500)
committerSteven Callender <stevecallender@esilibrary.com>
Thu, 14 Nov 2013 20:07:33 +0000 (15:07 -0500)
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 users home library. If the setting does not exist,
then fall back on the hard coded 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>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm

index 06117ff..20a1603 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);