From 51273ef065e471f7b47b0fc5f67697bd4105317f Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 27 Nov 2012 10:42:58 -0500 Subject: [PATCH] SIP hold cancellation support Implement a subset of SIP message pair 15/16 for holds cancellation. 1. New oils_sip.xml configuration option "msg64_hold_datatype". This is similar to msg64_summary_datatype, but affacts holds instead of circulations. When set to 'barcode', holds information will be delivered as a set of copy barcodes instead of title strings for patron info requests. With barcodes, SIP clients can both find the title strings for display (via item info requests) and make subseqent hold-related action requests, like holds cancellation. -- Copies are not an ideal identifier for holds, but SIP has a limited vocabulary. With copies we can (99% of the time) work to and from hold requests to find a reasonable data set to work on. If a patron has multiple holds for the same item and wants to cancel a specific one of those holds, the user should use the catalog instead of SIP. -- 2. When receiving a message 15 of with a cancellation action, find the newest open hold that matches the provided copy barcode and cancel the hold. Signed-off-by: Bill Erickson --- Open-ILS/examples/oils_sip.xml.example | 11 ++ Open-ILS/src/perlmods/lib/OpenILS/SIP.pm | 111 ++++++------ Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm | 186 ++++++++++++++++----- .../perlmods/lib/OpenILS/SIP/Transaction/Hold.pm | 73 ++++++++ 4 files changed, 285 insertions(+), 96 deletions(-) create mode 100644 Open-ILS/src/perlmods/lib/OpenILS/SIP/Transaction/Hold.pm diff --git a/Open-ILS/examples/oils_sip.xml.example b/Open-ILS/examples/oils_sip.xml.example index 8a1d7abdb0..363da0e39f 100644 --- a/Open-ILS/examples/oils_sip.xml.example +++ b/Open-ILS/examples/oils_sip.xml.example @@ -99,6 +99,17 @@ default behaviour in previous versions of Evergreen. -->