[OPEN-ILS-GENERAL] Fulfillment Prioritization

Thomas Berezansky tsbere at mvlc.org
Fri Mar 23 09:24:00 EDT 2012


Having given the problem some more thought, I have come up with the  
following alternate implementation.

Instead of an org unit setting, or checkin modifier, I would create a  
new "matchpoint" table, similar to the circ and hold matchpoint  
tables, complete with a weighting set. A simplified view of that table  
would be similar to this:

Transit Source
Transit Destination (Checkin Library)
Transit Item Owning Library
Transit Item Circ Library
Checkin Item Owning Library
Checkin Item Circ Library
Min Time in Transit
Max Time in Transit
Min Hold Age (Possibly Min "Stalling" Age)
Max Hold Age (Possibly Max "Stalling" Age)
Allow Hold Recapture

With the exception of "Allow Hold Recapture" all of the fields would  
be optional. In the event that no matching rule is found (which would  
be the default) then hold recapture would be disallowed.

As an extra catch, I would want to tie the org unit fields (the first  
six) to the "Relative Org Unit" work from my Circ and Holds rewrite,  
allowing things like "the transit destination is the checkin item circ  
library" as a global rule. This delays my ability to work on this  
until that work is completed.

I believe that the mapping table will allow for all existing use cases  
that have come up, including some that I came up with while  
considering it. Including, but not limited to, avoiding intentionally  
making *any* transit useless by only recapturing if the transiting  
copy is coming "home" anyway (as it would for reshelving).

The Min/Max Transit times would allow for not recapturing a transit  
that is expected to finish shortly, or to allow recapture when the  
transit has taken so long so as to be deemed lost in transit (the  
ultimate in "useless" transits, I suspect).

The Min/Max Hold Age (see my circ/hold rewrite email for why I say  
possibly the "Stalling" age) would allow for things like "a hold must  
be a week old before we are willing to recapture for it" and similar,  
in the event that is desired by someone.

I would, of course, still want to not run the code when capturing  
local holds as transits and would still want to not allow recapture  
instead of transiting for a force or recall hold. I am considering  
whether or not a "don't recapture local holds" checkin modifier would  
be a good idea to force the code to not run.

Also, while thinking about it, I am not sure this code should ever run  
when FIFO is active.

Oh, and on the subject of the "don't transit when a copy is on the  
local shelf" and "never allow an item to go into transit when there is  
a local copy, checked out or otherwise" I think that is best covered  
by things like stalling periods and soft boundaries, which I think  
already cover all of that if configured correctly.

Thomas Berezansky
Merrimack Valley Library Consortium


More information about the Open-ils-general mailing list