lp1861319 Expired Patron Item Renewal
authorKyle Huckins <khuckins@catalyte.io>
Thu, 19 Mar 2020 23:04:29 +0000 (23:04 +0000)
committerKyle Huckins <khuckins@catalyte.io>
Mon, 16 Nov 2020 21:58:19 +0000 (21:58 +0000)
- 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>
 Changes to be committed:
modified:   Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
modified:   Open-ILS/src/perlmods/lib/OpenILS/Const.pm
modified:   Open-ILS/src/sql/Pg/950.data.seed-values.sql
new file:   Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting-circ-renew-expired.sql

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..587eb3c 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'))
+            }
+        }
     }
 }
 
@@ -1528,7 +1533,7 @@ sub override_events {
     if(!$self->override) {
         return $self->bail_out(1) 
             if( @events > 1 or $events[0]->{textcode} ne 'SUCCESS' );
-    }   
+    }
 
     $self->events([]);
     
@@ -4075,7 +4080,7 @@ sub do_renew {
     unless( $circ->usr eq $self->editor->requestor->id ) {
         return $self->bail_on_events($self->editor->events)
             unless $self->editor->allowed('RENEW_CIRC', $circ->circ_lib);
-    }   
+    }
 
     $self->push_events(OpenILS::Event->new('MAX_RENEWALS_REACHED'))
         if $circ->renewal_remaining < 1;
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 bf9b329..d02927d 100644 (file)
@@ -3613,6 +3613,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..cd248b9
--- /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;