]> git.evergreen-ils.org Git - working/SIPServer.git/blob - Sip/Constants.pm
Patron Expiration in PA
[working/SIPServer.git] / Sip / Constants.pm
1 #
2 # Copyright (C) 2006-2008  Georgia Public Library Service
3
4 # Author: David J. Fiander
5
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of version 2 of the GNU General Public
8 # License as published by the Free Software Foundation.
9
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14
15 # You should have received a copy of the GNU General Public
16 # License along with this program; if not, write to the Free
17 # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
18 # MA 02111-1307 USA
19 #
20 # Sip::Constants.pm
21 #
22 # Various protocol constant values for 3M's Standard Interchange
23 # Protocol for communication between a library's Automated
24 # Checkout System (ACS) and stand-alone Self-Check (SC) units
25
26 package Sip::Constants;
27
28 use strict;
29 use warnings;
30 use Exporter;
31
32 our (@ISA, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
33
34 BEGIN {
35     $VERSION     = 0.02;
36     @ISA         = qw(Exporter);
37     %EXPORT_TAGS = (
38
39     SC_msgs => [qw(
40         PATRON_STATUS_REQ
41         CHECKOUT        CHECKIN
42         SC_STATUS       REQUEST_ACS_RESEND
43         LOGIN           PATRON_INFO       END_PATRON_SESSION
44         FEE_PAID        ITEM_INFORMATION  ITEM_STATUS_UPDATE
45         HOLD            RENEW             RENEW_ALL
46         PATRON_ENABLE
47         BLOCK_PATRON
48     )],
49
50     ACS_msgs => [qw(
51         PATRON_STATUS_RESP
52         CHECKOUT_RESP   CHECKIN_RESP
53         ACS_STATUS      REQUEST_SC_RESEND
54         LOGIN_RESP      PATRON_INFO_RESP  END_SESSION_RESP
55         FEE_PAID_RESP   ITEM_INFO_RESP    ITEM_STATUS_UPDATE_RESP
56         HOLD_RESP       RENEW_RESP        RENEW_ALL_RESP
57         PATRON_ENABLE_RESP
58     )],
59
60     SC_status     => [qw(SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN)],
61     formats       => [qw(SIP_DATETIME)],
62     constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM)],
63
64     field_ids     => [qw(
65         FID_PATRON_ID        FID_ITEM_ID
66         FID_TERMINAL_PWD     FID_PATRON_PWD
67         FID_PERSONAL_NAME    FID_DUE_DATE
68         FID_SCREEN_MSG       FID_PRINT_LINE
69         FID_TITLE_ID         FID_BLOCKED_CARD_MSG
70         FID_TERMINAL_LOCN    FID_INST_ID
71         FID_CURRENT_LOCN     FID_LIBRARY_NAME
72         FID_PERM_LOCN        FID_HOME_LIBRARY
73         FID_HOLD_ITEMS       FID_HOLD_ITEMS_LMT
74         FID_OVERDUE_ITEMS    FID_OVERDUE_ITEMS_LMT
75         FID_CHARGED_ITEMS    FID_CHARGED_ITEMS_LMT
76         FID_FINE_ITEMS       FID_SEQNO
77         FID_CKSUM            FID_HOME_ADDR
78         FID_EMAIL            FID_HOME_PHONE
79         FID_OWNER            FID_CURRENCY
80         FID_CANCEL
81         FID_TRANSACTION_ID   FID_VALID_PATRON
82         FID_RENEWED_ITEMS
83         FID_UNRENEWED_ITEMS
84         FID_FEE_ACK
85         FID_START_ITEM       FID_END_ITEM         FID_QUEUE_POS
86         FID_PICKUP_LOCN      FID_FEE_TYPE
87         FID_RECALL_ITEMS
88         FID_FEE_AMT          FID_FEE_LMT
89         FID_EXPIRATION
90         FID_SUPPORTED_MSGS
91         FID_HOLD_TYPE
92         FID_UNAVAILABLE_HOLD_ITEMS
93         FID_HOLD_QUEUE_LEN
94         FID_FEE_ID           FID_ITEM_PROPS
95         FID_RECALL_DATE      FID_SECURITY_INHIBIT
96         FID_MEDIA_TYPE       FID_SORT_BIN
97         FID_HOLD_PICKUP_DATE
98         FID_LOGIN_UID        FID_LOGIN_PWD
99         FID_LOCATION_CODE
100         FID_VALID_PATRON_PWD
101         FID_PATRON_BIRTHDATE
102         FID_PATRON_CLASS
103         FID_INET_PROFILE
104
105         FID_COLLECTION_CODE
106         FID_CALL_NUMBER
107         FID_DESTINATION_LOCATION
108         FID_ALERT_TYPE
109         FID_HOLD_PATRON_ID
110         FID_HOLD_PATRON_NAME
111         FID_PATRON_INTERNAL_ID
112         )],
113     );
114
115     # Add the contents of the other ":class" tags to make an ":all" class (deleting duplicates)
116     # This is the textbook example from http://perldoc.perl.org/Exporter.html
117     my %seen;
118     push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
119     Exporter::export_ok_tags('all');    # now add :all to @EXPORT_OK
120 }
121
122 #
123 # Declare message types
124 #
125
126 # Messages from SC to ACS
127 use constant {
128     PATRON_STATUS_REQ  => '23',
129     CHECKOUT           => '11',
130     CHECKIN            => '09',
131     BLOCK_PATRON       => '01',
132     SC_STATUS          => '99',
133     REQUEST_ACS_RESEND => '97',
134     LOGIN              => '93',
135     PATRON_INFO        => '63',
136     END_PATRON_SESSION => '35',
137     FEE_PAID           => '37',
138     ITEM_INFORMATION   => '17',
139     ITEM_STATUS_UPDATE => '19',
140     PATRON_ENABLE      => '25',
141     HOLD               => '15',
142     RENEW              => '29',
143     RENEW_ALL          => '65',
144 };
145
146 # Message responses from ACS to SC
147 use constant {
148     PATRON_STATUS_RESP      => '24',
149     CHECKOUT_RESP           => '12',
150     CHECKIN_RESP            => '10',
151     ACS_STATUS              => '98',
152     REQUEST_SC_RESEND       => '96',
153     LOGIN_RESP              => '94',
154     PATRON_INFO_RESP        => '64',
155     END_SESSION_RESP        => '36',
156     FEE_PAID_RESP           => '38',
157     ITEM_INFO_RESP          => '18',
158     ITEM_STATUS_UPDATE_RESP => '20',
159     PATRON_ENABLE_RESP      => '26',
160     HOLD_RESP               => '16',
161     RENEW_RESP              => '30',
162     RENEW_ALL_RESP          => '66',
163 };
164
165 #
166 # Some messages are short and invariant, so they're constant's too
167 #
168 use constant {
169     REQUEST_ACS_RESEND_CKSUM => '97AZFEF5',
170     REQUEST_SC_RESEND_CKSUM  => '96AZFEF6',
171 };
172
173 #
174 # Field Identifiers
175 #
176 use constant {
177     FID_PATRON_ID              => 'AA',
178     FID_ITEM_ID                => 'AB',
179     FID_TERMINAL_PWD           => 'AC',
180     FID_PATRON_PWD             => 'AD',
181     FID_PERSONAL_NAME          => 'AE',
182     FID_SCREEN_MSG             => 'AF',
183     FID_PRINT_LINE             => 'AG',
184     FID_DUE_DATE               => 'AH',
185     # UNUSED AI
186     FID_TITLE_ID               => 'AJ',
187     # UNUSED AK
188     FID_BLOCKED_CARD_MSG       => 'AL',
189     FID_LIBRARY_NAME           => 'AM',
190     FID_TERMINAL_LOCN          => 'AN',
191     FID_INST_ID                => 'AO',
192     FID_CURRENT_LOCN           => 'AP',
193     FID_PERM_LOCN              => 'AQ',
194     FID_HOME_LIBRARY           => 'AQ', # Extension: AQ in patron info
195     # UNUSED AR
196     FID_HOLD_ITEMS             => 'AS', # SIP 2.0
197     FID_OVERDUE_ITEMS          => 'AT', # SIP 2.0
198     FID_CHARGED_ITEMS          => 'AU', # SIP 2.0
199     FID_FINE_ITEMS             => 'AV', # SIP 2.0
200     # UNUSED AW
201     # UNUSED AX
202     FID_SEQNO                  => 'AY',
203     FID_CKSUM                  => 'AZ',
204
205     # SIP 2.0 Fields
206     # UNUSED BA
207     # UNUSED BB
208     # UNUSED BC
209     FID_HOME_ADDR              => 'BD',
210     FID_EMAIL                  => 'BE',
211     FID_HOME_PHONE             => 'BF',
212     FID_OWNER                  => 'BG',
213     FID_CURRENCY               => 'BH',
214     FID_CANCEL                 => 'BI',
215     # UNUSED BJ
216     FID_TRANSACTION_ID         => 'BK',
217     FID_VALID_PATRON           => 'BL',
218     FID_RENEWED_ITEMS          => 'BM',
219     FID_UNRENEWED_ITEMS        => 'BN',
220     FID_FEE_ACK                => 'BO',
221     FID_START_ITEM             => 'BP',
222     FID_END_ITEM               => 'BQ',
223     FID_QUEUE_POS              => 'BR',
224     FID_PICKUP_LOCN            => 'BS',
225     FID_FEE_TYPE               => 'BT',
226     FID_RECALL_ITEMS           => 'BU',
227     FID_FEE_AMT                => 'BV',
228     FID_EXPIRATION             => 'BW',
229     FID_SUPPORTED_MSGS         => 'BX',
230     FID_HOLD_TYPE              => 'BY',
231     FID_HOLD_ITEMS_LMT         => 'BZ',
232     FID_OVERDUE_ITEMS_LMT      => 'CA',
233     FID_CHARGED_ITEMS_LMT      => 'CB',
234     FID_FEE_LMT                => 'CC',
235     FID_UNAVAILABLE_HOLD_ITEMS => 'CD',
236     # UNUSED CE
237     FID_HOLD_QUEUE_LEN         => 'CF',
238     FID_FEE_ID                 => 'CG',
239     FID_ITEM_PROPS             => 'CH',
240     FID_SECURITY_INHIBIT       => 'CI',
241     FID_RECALL_DATE            => 'CJ',
242     FID_MEDIA_TYPE             => 'CK',
243     FID_SORT_BIN               => 'CL',
244     FID_HOLD_PICKUP_DATE       => 'CM',
245     FID_LOGIN_UID              => 'CN',
246     FID_LOGIN_PWD              => 'CO',
247     FID_LOCATION_CODE          => 'CP',
248     FID_VALID_PATRON_PWD       => 'CQ',
249
250     # SIP Extensions used by Envisionware Terminals
251     FID_PATRON_EXPIRE          => 'PA',
252     FID_PATRON_BIRTHDATE       => 'PB',
253     FID_PATRON_CLASS           => 'PC',
254
255     # SIP Extension for reporting patron internet privileges... application unknown
256     FID_INET_PROFILE           => 'PI',
257
258     # SIP Extensions by 3M spec: Document Revision 1.20, 02/14/2005
259     FID_COLLECTION_CODE        => 'CR',
260     FID_CALL_NUMBER            => 'CS',
261     FID_DESTINATION_LOCATION   => 'CT',
262     FID_ALERT_TYPE             => 'CV',
263     FID_HOLD_PATRON_ID         => 'CY',
264     FID_HOLD_PATRON_NAME       => 'DA',
265
266     # SIP Extension by Evergreen for AMH: 10/01/2001
267     FID_PATRON_INTERNAL_ID     => 'XI',
268 };
269
270 #
271 # SC Status Codes
272 #
273 use constant {
274     SC_STATUS_OK       => '0',
275     SC_STATUS_PAPER    => '1',
276     SC_STATUS_SHUTDOWN => '2',
277 };
278
279 #
280 # Various format strings
281 #
282 use constant {
283     SIP_DATETIME => "%Y%m%d    %H%M%S",
284 };
285
286 1;