The main assumption that needs some consideration is that hold shelf expire intervals are assumed to be defined in days (not hours, weeks, etc.). We probably need a separate setting which explicitly defines the expire interval as a day count (e.g. circ.holds.default_shelf_expire_days). This simplified the code a good bit, and I'm guessing this is the most common use case.
In short, if an org unit has any open hours on a given day (starting 'tomorrow'), it counts as "1 day" of the expire interval.
Lightly cleaned patch from internal code:
https:/ /git.evergreen- ils.org/ ?p=working/ Evergreen. git;a=shortlog; h=refs/ heads/user/ berick/ lp1829295- shelf-expire- honors- closed- and-hours
The main assumption that needs some consideration is that hold shelf expire intervals are assumed to be defined in days (not hours, weeks, etc.). We probably need a separate setting which explicitly defines the expire interval as a day count (e.g. circ.holds. default_ shelf_expire_ days). This simplified the code a good bit, and I'm guessing this is the most common use case.
In short, if an org unit has any open hours on a given day (starting 'tomorrow'), it counts as "1 day" of the expire interval.