Per-hold value for holds-behind-desk setting

Bug #1182519 reported by Bill Erickson
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Evergreen
Fix Released
Wishlist
Unassigned

Bug Description

Some sites offer patrons a second location to pick up holds. Today there is already a user setting to indicate whether a given patron generally prefers to pick up her held items "behind the desk" as opposed to (presumably) at a public holds shelf. The setting has the internal name circ.holds_behind_desk.

As of today this setting can only be changed by staff in the staff client, even though it affects patrons. Further, the setting alone does not always accurately represent the state of any hold, since the value for the setting may have changed since a hold was placed on the shelf. This may result in staff or patrons searching for the item to the wrong location. By applying the value directly to the hold, we can tell with certainty where each hold resides.

The goal of this feature is to implement a per-hold value for the setting, so that the state of each specific hold is known and to allow patrons to set their own value for the behind-the-desk user setting (if allowed).

For additional technical specifications, see http://yeti.esilibrary.com/dev/pub/techspecs/holds-behind-desk.html

Revision history for this message
Thomas Berezansky (tsbere) wrote :

I have at least one issue with this feature in general, before or after the proposed changes:

Whether or not the option is "supported" is a true/false at the org unit level, but when "supported" it is a global to the patron option. In a mixed environment the option is effectively unable to be used, it only ends up having meaning when set globally. At that point if a library doesn't *have* a "behind the desk" or otherwise alternate location then the patron will get confused as to why they have the option to begin with.

Couple that with the fact that patrons may use multiple libraries and have different preferences per library (especially with something like the "drive thru" example in the linked document) and I think exposing the option to the patron would create too much confusion. Making it so that you can specify a different preference per library would alleviate some of this concern, but would be a major change to the way it currently works.

In addition to the above, storing the value on the hold before the hold goes to the hold shelf is likely to create confusion as well. We already have issues with patrons changing their default notification options, or phone numbers, and patrons and/or staff getting confused that all of the patron's holds didn't update automatically. Adding another field to holds that this will be a problem for will create additional confusion in that regard. I personally think that storing the value at shelf_time would alleviate this while keeping the ability to tell patrons where their holds are.

Beyond the issues I mention above I would also like to point out that at the moment you don't have any mention of updating receipt printing code to use the new column instead of loading the patron preference for the routing information on hold slips.

Revision history for this message
Bill Erickson (berick) wrote :

There is an aspect of this development which will, I believe, make it possible to solve the problem you're describing. In particular, I'm referring to the fact that the behind-the-shelf user setting is global, while the behind-the-shelf org setting is not, since some libraries may not support behind-the-shelf holds. I didn't go into detail, because it's out of scope for my immediate needs, but the idea is to *also* support future development (by whomever) to support patrons setting the behind-the-desk value on holds at hold placement time. With this, we create a way where we can have, in effect, different preferences per library.

In short, at hold placement time, check whether the pickup lib supports behind-the-desk holds and whether the user is allowed to set the value. If both are true, the user can decide to make the hold a behind-the-desk hold. In this case, the global value from their user setting acts as the default, just like phone_notify and email_notify.

This also explains why we want to set the value at hold placement time and not shelf time, since the goal is to reflect the patron's desires for each hold.

What I plan to develop at this stage are the back-end DB/API pieces and the UI for allowing the patron to set their preferred default value. For systems where the code as it stands today does not meet their needs, leaving the user setting as non-opac-visible means there is no change in functionality.

Regarding the hold slip, good catch, I'll make sure that's taken care of, too.

Thanks for the input, Thomas.

Revision history for this message
Bill Erickson (berick) wrote :

I've pushed a working branch to working/user/berick/lp1182519-hold-behind-desk-per-hold

It varies from the tech specs slightly in a couple of ways:

1. It includes support for setting the correct value on the hold receipt (thanks, Thomas).

2. I have not updated the TPAC "Search and History Preferences" tab name to include "Holds" in some fashion. We already have hold-related settings under this tab (pickup lib), so it didn't seem to critical, plus the tab name is getting pretty long. I'm happy to change it if it seems necessary.

3. Since patrons cannot apply the value on a per-hold basis from the TPAC hold placement form, I have not updated the TPAC code to pass the value down, as suggested in the specs. That should be added if/when the TPAC supports it. Instead, the hold creation code will look to see if a value has been passed and, if not, it will load the value from the patron's setting.

-----

To use in general, enable the "circ.holds.behind_desk_pickup_supported" org unit setting as before. To allow patrons to set the value for their behind_desk setting, set the opac_visible flag to true for the 'circ.holds_behind_desk' user setting.

Changed in evergreen:
status: In Progress → New
tags: added: holds pullrequest
Changed in evergreen:
milestone: none → 2.5.0-m2
Dan Wells (dbw2)
Changed in evergreen:
milestone: 2.5.0-m2 → 2.5.0-alpha1
Revision history for this message
Garry Collum (gcollum) wrote :

Tested in two different environments and the enhancement works as advertised.

The first environment was a test environment provided by Equinox.

The second environment was my own VM running Ubuntu Precise and Evergreen based on master. It contains about 30 bibs, 180 copies, and right now, 2 patrons.

I tried to follow the process to sign-off based on the information provided in http://www.open-ils.org/dokuwiki/doku.php?id=dev:git, but since this is the first time I have tested and tried to sign-off, I'm not sure if I did it correctly, or if my sign-off carries much weight because I am new to the community.

Since this was my first attempt, here are the procedures I followed. I pulled berick's working branch above and created a diff file, so I could easily look at the changes. I created a new branch based on master and cherry-picked the proper commit. I had to resolve merge conflicts in Actor.pm. I updated by database with the sql code in the diff file. I compiled, installed and copied the client directory to my login user's home directory. I then tested both the opac and staff clients for the new functionality.

My sign-off is at user/gcollum/lp1182519-hold-behind-deks-per-hold-signoff. Please let me know if it was done correctly.

Revision history for this message
Bill Erickson (berick) wrote :

Thanks for the testing and the details, Garry. I have a couple of comments on your procedure:

"I had to resolve merge conflicts in Actor.pm". -- Reviewing your commit, it looks like my original commit message and sign-off have been lost during the conflict resolution. You'll want the final sign-off commit to contain the original commit message and original sign-off, plus your sign-off (plus optional comment on your part about conflict resolution). You could re-cherry-pick or simply use 'git commit --amend' to repair the commit message.

"I compiled, installed and copied the client directory to my login user's home directory". -- I'm unclear on how the login user's home directory comes into play here. From your testing, it would seem like the feature was successfully installed, though, so I may just be missing something.

Thanks, Garry!

Ben Shum (bshum)
Changed in evergreen:
status: New → In Progress
Revision history for this message
Garry Collum (gcollum) wrote :

Thanks Bill for your comments. I re-cherry-picked, fixed the conflict, tested again and pushed to user/gcollum/lp1182519-hold-behind-desk-per-hold-signoff

How I ran the client and the "user's home directory" is really irrelevant. Sorry for the confusion.

Remington Steed (rjs7)
Changed in evergreen:
milestone: 2.5.0-alpha1 → 2.5.0-alpha2
Revision history for this message
Bill Erickson (berick) wrote :

Thanks for the testing and sign-off, Garry. I applied your merged patches and gave it another run through and pushed to master.

Changed in evergreen:
status: In Progress → Fix Committed
assignee: Bill Erickson (erickson-esilibrary) → nobody
Ben Shum (bshum)
Changed in evergreen:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.