adding openncip / opensip SIP2 service
[koha.git] / C4 / SIP / Sip / Constants.pm
1 #
2 # Sip::Constants.pm
3 #
4 # Various protocol constant values for 3M's Standard Interchange
5 # Protocol for communication between a library's Automated
6 # Checkout System (ACS) and stand-alone Self-Check (SC) units
7
8 package Sip::Constants;
9
10 use strict;
11 use warnings;
12 use Exporter;
13
14 our (@ISA, @EXPORT_OK, %EXPORT_TAGS);
15
16 @ISA = qw(Exporter);
17
18 @EXPORT_OK = qw(PATRON_STATUS_REQ CHECKOUT CHECKIN BLOCK_PATRON
19                 SC_STATUS REQUEST_ACS_RESEND LOGIN PATRON_INFO
20                 END_PATRON_SESSION FEE_PAID ITEM_INFORMATION
21                 ITEM_STATUS_UPDATE PATRON_ENABLE HOLD RENEW
22                 RENEW_ALL PATRON_STATUS_RESP CHECKOUT_RESP
23                 CHECKIN_RESP ACS_STATUS REQUEST_SC_RESEND
24                 LOGIN_RESP PATRON_INFO_RESP END_SESSION_RESP
25                 FEE_PAID_RESP ITEM_INFO_RESP
26                 ITEM_STATUS_UPDATE_RESP PATRON_ENABLE_RESP
27                 HOLD_RESP RENEW_RESP RENEW_ALL_RESP
28                 REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM
29                 FID_PATRON_ID FID_ITEM_ID FID_TERMINAL_PWD
30                 FID_PATRON_PWD FID_PERSONAL_NAME FID_SCREEN_MSG
31                 FID_PRINT_LINE FID_DUE_DATE FID_TITLE_ID
32                 FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
33                 FID_TERMINAL_LOCN FID_INST_ID FID_CURRENT_LOCN
34                 FID_PERM_LOCN FID_HOLD_ITEMS FID_OVERDUE_ITEMS
35                 FID_CHARGED_ITEMS FID_FINE_ITEMS FID_SEQNO
36                 FID_CKSUM FID_HOME_ADDR FID_EMAIL FID_HOME_PHONE
37                 FID_OWNER FID_CURRENCY FID_CANCEL
38                 FID_TRANSACTION_ID FID_VALID_PATRON
39                 FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS FID_FEE_ACK
40                 FID_START_ITEM FID_END_ITEM FID_QUEUE_POS
41                 FID_PICKUP_LOCN FID_FEE_TYPE FID_RECALL_ITEMS
42                 FID_FEE_AMT FID_EXPIRATION FID_SUPPORTED_MSGS
43                 FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
44                 FID_OVERDUE_ITEMS_LMT FID_CHARGED_ITEMS_LMT
45                 FID_FEE_LMT FID_UNAVAILABLE_HOLD_ITEMS
46                 FID_HOLD_QUEUE_LEN FID_FEE_ID FID_ITEM_PROPS
47                 FID_SECURITY_INHIBIT FID_RECALL_DATE
48                 FID_MEDIA_TYPE FID_SORT_BIN FID_HOLD_PICKUP_DATE
49                 FID_LOGIN_UID FID_LOGIN_PWD FID_LOCATION_CODE
50                 FID_VALID_PATRON_PWD
51
52                 FID_PATRON_BIRTHDATE FID_PATRON_CLASS FID_INET_PROFILE
53
54                 SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
55                 SIP_DATETIME);
56
57 %EXPORT_TAGS = (
58
59                 SC_msgs => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
60                                BLOCK_PATRON SC_STATUS
61                                REQUEST_ACS_RESEND LOGIN
62                                PATRON_INFO
63                                END_PATRON_SESSION FEE_PAID
64                                ITEM_INFORMATION
65                                ITEM_STATUS_UPDATE
66                                PATRON_ENABLE HOLD RENEW
67                                RENEW_ALL)],
68
69                 ACS_msgs => [qw(PATRON_STATUS_RESP CHECKOUT_RESP
70                                 CHECKIN_RESP ACS_STATUS
71                                 REQUEST_SC_RESEND LOGIN_RESP
72                                 PATRON_INFO_RESP
73                                 END_SESSION_RESP
74                                 FEE_PAID_RESP ITEM_INFO_RESP
75                                 ITEM_STATUS_UPDATE_RESP
76                                 PATRON_ENABLE_RESP HOLD_RESP
77                                 RENEW_RESP RENEW_ALL_RESP)],
78
79                 constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM
80                                      REQUEST_SC_RESEND_CKSUM)],
81
82                 field_ids => [qw( FID_PATRON_ID FID_ITEM_ID
83                                   FID_TERMINAL_PWD
84                                   FID_PATRON_PWD
85                                   FID_PERSONAL_NAME
86                                   FID_SCREEN_MSG
87                                   FID_PRINT_LINE FID_DUE_DATE
88                                   FID_TITLE_ID
89                                   FID_BLOCKED_CARD_MSG
90                                   FID_LIBRARY_NAME
91                                   FID_TERMINAL_LOCN
92                                   FID_INST_ID
93                                   FID_CURRENT_LOCN
94                                   FID_PERM_LOCN
95                                   FID_HOLD_ITEMS
96                                   FID_OVERDUE_ITEMS
97                                   FID_CHARGED_ITEMS
98                                   FID_FINE_ITEMS FID_SEQNO
99                                   FID_CKSUM FID_HOME_ADDR
100                                   FID_EMAIL FID_HOME_PHONE
101                                   FID_OWNER FID_CURRENCY
102                                   FID_CANCEL
103                                   FID_TRANSACTION_ID
104                                   FID_VALID_PATRON
105                                   FID_RENEWED_ITEMS
106                                   FID_UNRENEWED_ITEMS
107                                   FID_FEE_ACK FID_START_ITEM
108                                   FID_END_ITEM FID_QUEUE_POS
109                                   FID_PICKUP_LOCN
110                                   FID_FEE_TYPE
111                                   FID_RECALL_ITEMS
112                                   FID_FEE_AMT FID_EXPIRATION
113                                   FID_SUPPORTED_MSGS
114                                   FID_HOLD_TYPE
115                                   FID_HOLD_ITEMS_LMT
116                                   FID_OVERDUE_ITEMS_LMT
117                                   FID_CHARGED_ITEMS_LMT
118                                   FID_FEE_LMT
119                                   FID_UNAVAILABLE_HOLD_ITEMS
120                                   FID_HOLD_QUEUE_LEN
121                                   FID_FEE_ID FID_ITEM_PROPS
122                                   FID_SECURITY_INHIBIT
123                                   FID_RECALL_DATE
124                                   FID_MEDIA_TYPE FID_SORT_BIN
125                                   FID_HOLD_PICKUP_DATE
126                                   FID_LOGIN_UID FID_LOGIN_PWD
127                                   FID_LOCATION_CODE
128                                   FID_VALID_PATRON_PWD
129
130                                   FID_PATRON_BIRTHDATE
131                                   FID_PATRON_CLASS
132                                   FID_INET_PROFILE)],
133
134                 SC_status => [qw(SC_STATUS_OK SC_STATUS_PAPER
135                                  SC_STATUS_SHUTDOWN)],
136
137                 formats => [qw(SIP_DATETIME)],
138
139                 all => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
140                            BLOCK_PATRON SC_STATUS
141                            REQUEST_ACS_RESEND LOGIN PATRON_INFO
142                            END_PATRON_SESSION FEE_PAID
143                            ITEM_INFORMATION ITEM_STATUS_UPDATE
144                            PATRON_ENABLE HOLD RENEW RENEW_ALL
145                            PATRON_STATUS_RESP CHECKOUT_RESP
146                            CHECKIN_RESP ACS_STATUS
147                            REQUEST_SC_RESEND LOGIN_RESP
148                            PATRON_INFO_RESP END_SESSION_RESP
149                            FEE_PAID_RESP ITEM_INFO_RESP
150                            ITEM_STATUS_UPDATE_RESP
151                            PATRON_ENABLE_RESP HOLD_RESP
152                            RENEW_RESP RENEW_ALL_RESP
153                            REQUEST_ACS_RESEND_CKSUM
154                            REQUEST_SC_RESEND_CKSUM FID_PATRON_ID
155                            FID_ITEM_ID FID_TERMINAL_PWD
156                            FID_PATRON_PWD FID_PERSONAL_NAME
157                            FID_SCREEN_MSG FID_PRINT_LINE
158                            FID_DUE_DATE FID_TITLE_ID
159                            FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
160                            FID_TERMINAL_LOCN FID_INST_ID
161                            FID_CURRENT_LOCN FID_PERM_LOCN
162                            FID_HOLD_ITEMS FID_OVERDUE_ITEMS
163                            FID_CHARGED_ITEMS FID_FINE_ITEMS
164                            FID_SEQNO FID_CKSUM FID_HOME_ADDR
165                            FID_EMAIL FID_HOME_PHONE FID_OWNER
166                            FID_CURRENCY FID_CANCEL
167                            FID_TRANSACTION_ID FID_VALID_PATRON
168                            FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS
169                            FID_FEE_ACK FID_START_ITEM
170                            FID_END_ITEM FID_QUEUE_POS
171                            FID_PICKUP_LOCN FID_FEE_TYPE
172                            FID_RECALL_ITEMS FID_FEE_AMT
173                            FID_EXPIRATION FID_SUPPORTED_MSGS
174                            FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
175                            FID_OVERDUE_ITEMS_LMT
176                            FID_CHARGED_ITEMS_LMT FID_FEE_LMT
177                            FID_UNAVAILABLE_HOLD_ITEMS
178                            FID_HOLD_QUEUE_LEN FID_FEE_ID
179                            FID_ITEM_PROPS FID_SECURITY_INHIBIT
180                            FID_RECALL_DATE FID_MEDIA_TYPE
181                            FID_SORT_BIN FID_HOLD_PICKUP_DATE
182                            FID_LOGIN_UID FID_LOGIN_PWD
183                            FID_LOCATION_CODE FID_VALID_PATRON_PWD
184                            FID_PATRON_BIRTHDATE FID_PATRON_CLASS
185                            FID_INET_PROFILE
186                            SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
187                            SIP_DATETIME
188                            )]);
189
190 #
191 # Declare message types
192 #
193
194 # Messages from SC to ACS
195 use constant {
196     PATRON_STATUS_REQ  => '23',
197     CHECKOUT           => '11',
198     CHECKIN            => '09',
199     BLOCK_PATRON       => '01',
200     SC_STATUS          => '99',
201     REQUEST_ACS_RESEND => '97',
202     LOGIN              => '93',
203     PATRON_INFO        => '63',
204     END_PATRON_SESSION => '35',
205     FEE_PAID           => '37',
206     ITEM_INFORMATION   => '17',
207     ITEM_STATUS_UPDATE => '19',
208     PATRON_ENABLE      => '25',
209     HOLD               => '15',
210     RENEW              => '29',
211     RENEW_ALL          => '65',
212 };
213
214 # Message responses from ACS to SC
215 use constant {
216     PATRON_STATUS_RESP      => '24',
217     CHECKOUT_RESP           => '12',
218     CHECKIN_RESP            => '10',
219     ACS_STATUS              => '98',
220     REQUEST_SC_RESEND       => '96',
221     LOGIN_RESP              => '94',
222     PATRON_INFO_RESP        => '64',
223     END_SESSION_RESP        => '36',
224     FEE_PAID_RESP           => '38',
225     ITEM_INFO_RESP          => '18',
226     ITEM_STATUS_UPDATE_RESP => '20',
227     PATRON_ENABLE_RESP      => '26',
228     HOLD_RESP               => '16',
229     RENEW_RESP              => '30',
230     RENEW_ALL_RESP          => '66',
231 };
232
233 #
234 # Some messages are short and invariant, so they're constant's too
235 #
236 use constant {
237     REQUEST_ACS_RESEND_CKSUM => '97AZFEF5',
238     REQUEST_SC_RESEND_CKSUM  => '96AZFEF6',
239 };
240
241 #
242 # Field Identifiers
243 #
244 use constant {
245     FID_PATRON_ID              => 'AA',
246     FID_ITEM_ID                => 'AB',
247     FID_TERMINAL_PWD           => 'AC',
248     FID_PATRON_PWD             => 'AD',
249     FID_PERSONAL_NAME          => 'AE',
250     FID_SCREEN_MSG             => 'AF',
251     FID_PRINT_LINE             => 'AG',
252     FID_DUE_DATE               => 'AH',
253     # UNUSED AI
254     FID_TITLE_ID               => 'AJ',
255     # UNUSED AK
256     FID_BLOCKED_CARD_MSG       => 'AL',
257     FID_LIBRARY_NAME           => 'AM',
258     FID_TERMINAL_LOCN          => 'AN',
259     FID_INST_ID                => 'AO',
260     FID_CURRENT_LOCN           => 'AP',
261     FID_PERM_LOCN              => 'AQ',
262     # UNUSED AR
263     FID_HOLD_ITEMS             => 'AS', # SIP 2.0
264     FID_OVERDUE_ITEMS          => 'AT', # SIP 2.0
265     FID_CHARGED_ITEMS          => 'AU', # SIP 2.0
266     FID_FINE_ITEMS             => 'AV', # SIP 2.0
267     # UNUSED AW
268     # UNUSED AX
269     FID_SEQNO                  => 'AY',
270     FID_CKSUM                  => 'AZ',
271
272     # SIP 2.0 Fields
273     # UNUSED BA
274     # UNUSED BB
275     # UNUSED BC
276     FID_HOME_ADDR              => 'BD',
277     FID_EMAIL                  => 'BE',
278     FID_HOME_PHONE             => 'BF',
279     FID_OWNER                  => 'BG',
280     FID_CURRENCY               => 'BH',
281     FID_CANCEL                 => 'BI',
282     # UNUSED BJ
283     FID_TRANSACTION_ID         => 'BK',
284     FID_VALID_PATRON           => 'BL',
285     FID_RENEWED_ITEMS          => 'BM',
286     FID_UNRENEWED_ITEMS        => 'BN',
287     FID_FEE_ACK                => 'BO',
288     FID_START_ITEM             => 'BP',
289     FID_END_ITEM               => 'BQ',
290     FID_QUEUE_POS              => 'BR',
291     FID_PICKUP_LOCN            => 'BS',
292     FID_FEE_TYPE               => 'BT',
293     FID_RECALL_ITEMS           => 'BU',
294     FID_FEE_AMT                => 'BV',
295     FID_EXPIRATION             => 'BW',
296     FID_SUPPORTED_MSGS         => 'BX',
297     FID_HOLD_TYPE              => 'BY',
298     FID_HOLD_ITEMS_LMT         => 'BZ',
299     FID_OVERDUE_ITEMS_LMT      => 'CA',
300     FID_CHARGED_ITEMS_LMT      => 'CB',
301     FID_FEE_LMT                => 'CC',
302     FID_UNAVAILABLE_HOLD_ITEMS => 'CD',
303     # UNUSED CE
304     FID_HOLD_QUEUE_LEN         => 'CF',
305     FID_FEE_ID                 => 'CG',
306     FID_ITEM_PROPS             => 'CH',
307     FID_SECURITY_INHIBIT       => 'CI',
308     FID_RECALL_DATE            => 'CJ',
309     FID_MEDIA_TYPE             => 'CK',
310     FID_SORT_BIN               => 'CL',
311     FID_HOLD_PICKUP_DATE       => 'CM',
312     FID_LOGIN_UID              => 'CN',
313     FID_LOGIN_PWD              => 'CO',
314     FID_LOCATION_CODE          => 'CP',
315     FID_VALID_PATRON_PWD       => 'CQ',
316
317     # SIP Extensions used by Envisionware Terminals
318     FID_PATRON_BIRTHDATE       => 'PB',
319     FID_PATRON_CLASS           => 'PC',
320
321     # SIP Extension for reporting patron internet privileges
322     FID_INET_PROFILE           => 'PI',
323 };
324
325 #
326 # SC Status Codes
327 #
328 use constant {
329     SC_STATUS_OK     => '0',
330     SC_STATUS_PAPER  => '1',
331     SC_STATUS_SHUTDOWN => '2',
332 };
333
334 #
335 # Various format strings
336 #
337 use constant {
338     SIP_DATETIME => "%Y%m%d    %H%M%S",
339 };