Koha-clms/C4/SIP/Sip/Constants.pm

273 lines
8.2 KiB
Perl

#
# Sip::Constants.pm
#
# Various protocol constant values for 3M's Standard Interchange
# Protocol for communication between a library's Automated
# Checkout System (ACS) and stand-alone Self-Check (SC) units
package C4::SIP::Sip::Constants;
use strict;
use warnings;
use Exporter;
our ( @ISA, @EXPORT_OK, %EXPORT_TAGS );
BEGIN {
@ISA = qw(Exporter);
%EXPORT_TAGS = (
SC_msgs => [
qw(
PATRON_STATUS_REQ
CHECKOUT CHECKIN
SC_STATUS REQUEST_ACS_RESEND
LOGIN PATRON_INFO END_PATRON_SESSION
FEE_PAID ITEM_INFORMATION ITEM_STATUS_UPDATE
HOLD RENEW RENEW_ALL
PATRON_ENABLE
BLOCK_PATRON
)
],
ACS_msgs => [
qw(
PATRON_STATUS_RESP
CHECKOUT_RESP CHECKIN_RESP
ACS_STATUS REQUEST_SC_RESEND
LOGIN_RESP PATRON_INFO_RESP END_SESSION_RESP
FEE_PAID_RESP ITEM_INFO_RESP ITEM_STATUS_UPDATE_RESP
HOLD_RESP RENEW_RESP RENEW_ALL_RESP
PATRON_ENABLE_RESP
)
],
SC_status => [qw(SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN)],
formats => [qw(SIP_DATETIME)],
constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM)],
field_ids => [
qw(
FID_PATRON_ID FID_ITEM_ID
FID_TERMINAL_PWD FID_PATRON_PWD
FID_PERSONAL_NAME FID_DUE_DATE
FID_SCREEN_MSG FID_PRINT_LINE
FID_TITLE_ID FID_BLOCKED_CARD_MSG
FID_TERMINAL_LOCN FID_INST_ID
FID_CURRENT_LOCN FID_LIBRARY_NAME
FID_PERM_LOCN
FID_HOLD_ITEMS FID_HOLD_ITEMS_LMT
FID_OVERDUE_ITEMS FID_OVERDUE_ITEMS_LMT
FID_CHARGED_ITEMS FID_CHARGED_ITEMS_LMT
FID_FINE_ITEMS FID_SEQNO
FID_CKSUM FID_HOME_ADDR
FID_EMAIL FID_HOME_PHONE
FID_OWNER FID_CURRENCY
FID_CANCEL
FID_TRANSACTION_ID FID_VALID_PATRON
FID_RENEWED_ITEMS
FID_UNRENEWED_ITEMS
FID_FEE_ACK
FID_START_ITEM FID_END_ITEM FID_QUEUE_POS
FID_PICKUP_LOCN FID_FEE_TYPE
FID_RECALL_ITEMS
FID_FEE_AMT FID_FEE_LMT
FID_EXPIRATION
FID_SUPPORTED_MSGS
FID_HOLD_TYPE
FID_UNAVAILABLE_HOLD_ITEMS
FID_HOLD_QUEUE_LEN
FID_FEE_ID FID_ITEM_PROPS
FID_RECALL_DATE FID_SECURITY_INHIBIT
FID_MEDIA_TYPE FID_SORT_BIN
FID_HOLD_PICKUP_DATE
FID_LOGIN_UID FID_LOGIN_PWD
FID_LOCATION_CODE
FID_VALID_PATRON_PWD
FID_PATRON_BIRTHDATE
FID_PATRON_CLASS
FID_INET_PROFILE
FID_COLLECTION_CODE
FID_CALL_NUMBER
FID_DESTINATION_LOCATION
FID_ALERT_TYPE
FID_HOLD_PATRON_ID
FID_HOLD_PATRON_NAME
)
],
);
# Add the contents of the other ":class" tags to make an ":all" class (deleting duplicates)
# This is the textbook example from http://perldoc.perl.org/Exporter.html
my %seen;
push @{ $EXPORT_TAGS{all} }, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } foreach keys %EXPORT_TAGS;
Exporter::export_ok_tags('all'); # now add :all to @EXPORT_OK
}
#
# Declare message types
#
# Messages from SC to ACS
use constant {
PATRON_STATUS_REQ => '23',
CHECKOUT => '11',
CHECKIN => '09',
BLOCK_PATRON => '01',
SC_STATUS => '99',
REQUEST_ACS_RESEND => '97',
LOGIN => '93',
PATRON_INFO => '63',
END_PATRON_SESSION => '35',
FEE_PAID => '37',
ITEM_INFORMATION => '17',
ITEM_STATUS_UPDATE => '19',
PATRON_ENABLE => '25',
HOLD => '15',
RENEW => '29',
RENEW_ALL => '65',
};
# Message responses from ACS to SC
use constant {
PATRON_STATUS_RESP => '24',
CHECKOUT_RESP => '12',
CHECKIN_RESP => '10',
ACS_STATUS => '98',
REQUEST_SC_RESEND => '96',
LOGIN_RESP => '94',
PATRON_INFO_RESP => '64',
END_SESSION_RESP => '36',
FEE_PAID_RESP => '38',
ITEM_INFO_RESP => '18',
ITEM_STATUS_UPDATE_RESP => '20',
PATRON_ENABLE_RESP => '26',
HOLD_RESP => '16',
RENEW_RESP => '30',
RENEW_ALL_RESP => '66',
};
#
# Some messages are short and invariant, so they're constant's too
#
use constant {
REQUEST_ACS_RESEND_CKSUM => '97AZFEF5',
REQUEST_SC_RESEND_CKSUM => '96AZFEF6',
};
#
# Field Identifiers
#
use constant {
FID_PATRON_ID => 'AA',
FID_ITEM_ID => 'AB',
FID_TERMINAL_PWD => 'AC',
FID_PATRON_PWD => 'AD',
FID_PERSONAL_NAME => 'AE',
FID_SCREEN_MSG => 'AF',
FID_PRINT_LINE => 'AG',
FID_DUE_DATE => 'AH',
# UNUSED AI
FID_TITLE_ID => 'AJ',
# UNUSED AK
FID_BLOCKED_CARD_MSG => 'AL',
FID_LIBRARY_NAME => 'AM',
FID_TERMINAL_LOCN => 'AN',
FID_INST_ID => 'AO',
FID_CURRENT_LOCN => 'AP',
FID_PERM_LOCN => 'AQ',
# UNUSED AR
FID_HOLD_ITEMS => 'AS', # SIP 2.0
FID_OVERDUE_ITEMS => 'AT', # SIP 2.0
FID_CHARGED_ITEMS => 'AU', # SIP 2.0
FID_FINE_ITEMS => 'AV', # SIP 2.0
# UNUSED AW
# UNUSED AX
FID_SEQNO => 'AY',
FID_CKSUM => 'AZ',
# SIP 2.0 Fields
# UNUSED BA
# UNUSED BB
# UNUSED BC
FID_HOME_ADDR => 'BD',
FID_EMAIL => 'BE',
FID_HOME_PHONE => 'BF',
FID_OWNER => 'BG',
FID_CURRENCY => 'BH',
FID_CANCEL => 'BI',
# UNUSED BJ
FID_TRANSACTION_ID => 'BK',
FID_VALID_PATRON => 'BL',
FID_RENEWED_ITEMS => 'BM',
FID_UNRENEWED_ITEMS => 'BN',
FID_FEE_ACK => 'BO',
FID_START_ITEM => 'BP',
FID_END_ITEM => 'BQ',
FID_QUEUE_POS => 'BR',
FID_PICKUP_LOCN => 'BS',
FID_FEE_TYPE => 'BT',
FID_RECALL_ITEMS => 'BU',
FID_FEE_AMT => 'BV',
FID_EXPIRATION => 'BW',
FID_SUPPORTED_MSGS => 'BX',
FID_HOLD_TYPE => 'BY',
FID_HOLD_ITEMS_LMT => 'BZ',
FID_OVERDUE_ITEMS_LMT => 'CA',
FID_CHARGED_ITEMS_LMT => 'CB',
FID_FEE_LMT => 'CC',
FID_UNAVAILABLE_HOLD_ITEMS => 'CD',
# UNUSED CE
FID_HOLD_QUEUE_LEN => 'CF',
FID_FEE_ID => 'CG',
FID_ITEM_PROPS => 'CH',
FID_SECURITY_INHIBIT => 'CI',
FID_RECALL_DATE => 'CJ',
FID_MEDIA_TYPE => 'CK',
FID_SORT_BIN => 'CL',
FID_HOLD_PICKUP_DATE => 'CM',
FID_LOGIN_UID => 'CN',
FID_LOGIN_PWD => 'CO',
FID_LOCATION_CODE => 'CP',
FID_VALID_PATRON_PWD => 'CQ',
# SIP Extensions used by Envisionware Terminals
FID_PATRON_BIRTHDATE => 'PB',
FID_PATRON_CLASS => 'PC',
# SIP Extension for reporting patron internet privileges... application unknown
FID_INET_PROFILE => 'PI',
# SIP Extensions by 3M spec: Document Revision 1.20, 02/14/2005
FID_COLLECTION_CODE => 'CR',
FID_CALL_NUMBER => 'CS',
FID_DESTINATION_LOCATION => 'CT',
FID_ALERT_TYPE => 'CV',
FID_HOLD_PATRON_ID => 'CY',
FID_HOLD_PATRON_NAME => 'DA',
};
#
# SC Status Codes
#
use constant {
SC_STATUS_OK => '0',
SC_STATUS_PAPER => '1',
SC_STATUS_SHUTDOWN => '2',
};
#
# Various format strings
#
use constant {
SIP_DATETIME => "%Y%m%d %H%M%S",
};
1;