Holds are set to expire during holidays, although the system has been configured to not expire holds on holidays. In C4/Hold.pm this code can be found: my $expirationdate = $today->clone; $expirationdate->add(days => $max_pickup_delay); if ( C4::Context->preference("ExcludeHolidaysFromMaxPickUpDelay") ) { $expirationdate = $calendar->days_forward( dt_from_string(), $max_pickup_delay ); } However, if we look in the html-code for setting the system preference we can see that the "true" value is labelled "Ignore the calendar". <select name="pref_ExcludeHolidaysFromMaxPickUpDelay" id="pref_ExcludeHolidaysFromMaxPickUpDelay" class="preference preference-choice valid"> <option value="" selected="selected"> Use the calendar </option> <option value="1"> Ignore the calendar </option> </select> So, I believe this condition should be reversed: my $expirationdate; if ( C4::Context->preference("ExcludeHolidaysFromMaxPickUpDelay") ) { $expirationdate->add(days => $max_pickup_delay); } else { $expirationdate = $today->clone; $expirationdate = $calendar->days_forward( dt_from_string(), $max_pickup_delay ); }
I believe this has been fixed by switching the options in the pref since this bug has been filed: <option value="" selected="selected"> Ignore the calendar </option> <option value="1"> Use the calendar </option>