From 47879808611511f8db11b5f3d6831151543531bd 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 Signed-off-by: Mike Rylander --- Open-ILS/examples/oils_sip.xml.example | 11 ++ Open-ILS/src/perlmods/lib/OpenILS/SIP.pm | 111 ++++++----- .../src/perlmods/lib/OpenILS/SIP/Patron.pm | 183 ++++++++++++++---- .../lib/OpenILS/SIP/Transaction/Hold.pm | 73 +++++++ 4 files changed, 284 insertions(+), 94 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 c986ca1c91..ee371526df 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. -->