lp1861319 Expired Patron Item Renewal
authorKyle Huckins <khuckins@catalyte.io>
Thu, 19 Mar 2020 23:04:29 +0000 (23:04 +0000)
committerGalen Charlton <gmc@equinoxinitiative.org>
Wed, 10 Mar 2021 19:59:33 +0000 (14:59 -0500)
- SQL Upgrade for the new Org Unit Setting
- Perl Constant for new Org Unit Setting
- Include YAOUS to allow/disallow renewal of items
to expired patrons

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: John Amundson <jamundson@cwmars.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>

Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
Open-ILS/src/perlmods/lib/OpenILS/Const.pm
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting-circ-renew-expired.sql [new file with mode: 0644]

index b8c920f..be6917c 100644 (file)
@@ -1022,9 +1022,14 @@ sub mk_env {
     
         my $expire = DateTime::Format::ISO8601->new->parse_datetime(
             clean_ISO8601($patron->expire_date));
-    
-        $self->bail_on_events(OpenILS::Event->new('PATRON_ACCOUNT_EXPIRED'))
-            if( CORE::time > $expire->epoch ) ;
+
+        # An expired patron can renew with the assistance of an OUS.
+        my $expire_setting = $U->ou_ancestor_setting_value($self->circ_lib, OILS_SETTING_ALLOW_RENEW_FOR_EXPIRED_PATRON);
+        unless ($self->is_renewal and $expire_setting) {
+            if(CORE::time > $expire->epoch) {
+                $self->bail_on_events(OpenILS::Event->new('PATRON_ACCOUNT_EXPIRED'))
+            }
+        }
     }
 }
 
index 7c5fb7b..85e8b71 100644 (file)
@@ -95,6 +95,7 @@ econst OILS_SETTING_VOID_LOST_PROCESS_FEE_ON_CHECKIN    => 'circ.void_lost_proc_
 econst OILS_SETTING_RESTORE_OVERDUE_ON_LOST_RETURN      => 'circ.restore_overdue_on_lost_return';
 econst OILS_SETTING_LOST_IMMEDIATELY_AVAILABLE          => 'circ.lost_immediately_available';
 econst OILS_SETTING_BLOCK_HOLD_FOR_EXPIRED_PATRON       => 'circ.holds.expired_patron_block';
+econst OILS_SETTING_ALLOW_RENEW_FOR_EXPIRED_PATRON      => 'circ.renew.expired_patron_allow';
 econst OILS_SETTING_GENERATE_OVERDUE_ON_LOST_RETURN     => 'circ.lost.generate_overdue_on_checkin';
 econst OILS_SETTING_MAX_DUPLICATE_HOLDS => 'circ.holds.max_duplicate_holds';
 
index 55072f4..0eb34ef 100644 (file)
@@ -3644,6 +3644,15 @@ INSERT into config.org_unit_setting_type
         'coust', 'description'),
     'bool', null)
 
+,( 'circ.renew.expired_patron_allow', 'circ',
+    oils_i18n_gettext('circ.renew.expired_patron_allow',
+        'Allow renewal request if renewal recipient privileges have expired',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.renew.expired_patron_allow',
+        'If enabled, users within the org unit who are expired may still renew items.',
+        'coust', 'description'),
+    'bool', null)
+
 ,( 'circ.holds.hold_has_copy_at.alert', 'holds',
     oils_i18n_gettext('circ.holds.hold_has_copy_at.alert',
         'Has Local Copy Alert',
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting-circ-renew-expired.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting-circ-renew-expired.sql
new file mode 100644 (file)
index 0000000..2194443
--- /dev/null
@@ -0,0 +1,24 @@
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+INSERT INTO config.org_unit_setting_type
+    (grp, name, datatype, label, description)
+VALUES (
+    'circ',
+    'circ.renew.expired_patron_allow', 'bool',
+    oils_i18n_gettext(
+        'circ.renew.expired_patron_allow',
+        'Allow renewal request if renewal recipient privileges have expired',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'circ.renew.expired_patron_allow',
+        'If enabled, users within the org unit who are expired may still renew items.',
+        'coust',
+        'description'
+    )
+);
+
+COMMIT;