Bug 22540: Add ability to place holds using SIP CLI emulator

Test Plan:
1) Place a hold using the following arguments:
   sip_cli_emulator.pl -a <address> -p <port> -su <sip_user> -sp <sip_password> -l <location_code> --patron <cardnumber> --item <barcode> -m hold
2) Note the hold was placed in Koha

Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: frederik chenier <frederik.chenier@inlibro.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Kyle M Hall 2019-03-19 11:22:03 -04:00 committed by Martin Renvoize
parent 38a7e5e724
commit 7d5d9f9d5a
No known key found for this signature in database
GPG Key ID: 422B469130441A0F
1 changed files with 66 additions and 5 deletions

View File

@ -258,6 +258,34 @@ my $handlers = {
'transaction_id',
],
},
hold => {
name => 'Hold',
subroutine => \&build_hold_command_message,
parameters => {
hold_mode => '+',
transaction_date => $transaction_date,
expiration_date => undef,
pickup_location => undef,
hold_type => undef,
institution_id => $location_code,
patron_identifier => $patron_identifier,
patron_password => $patron_password,
item_identifier => $item_identifier,
title_identifier => undef,
terminal_password => $terminal_password,
fee_acknowledged => $fee_acknowledged,
},
optional => [
'expiration_date',
'pickup_location',
'hold_type',
'patron_password',
'item_identifier',
'title_identifier',
'terminal_password',
'fee_acknowledged',
],
},
};
my $data = run_command_message('login');
@ -459,6 +487,38 @@ sub build_checkin_command_message {
. build_field( FID_CANCEL, $cancel, { optional => 1 } );
}
sub build_hold_command_message {
my ($params) = @_;
my $hold_mode = $params->{hold_mode} || '+';
my $transaction_date = $params->{transaction_date};
my $expiration_date = $params->{expiration_date};
my $pickup_location = $params->{pickup_location};
my $hold_type = $params->{hold_type};
my $institution_id = $params->{institution_id};
my $patron_identifier = $params->{patron_identifier};
my $patron_password = $params->{patron_password};
my $item_identifier = $params->{item_identifier};
my $title_identifier = $params->{title_identifier};
my $terminal_password = $params->{terminal_password};
my $fee_acknowledged = $params->{fee_acknowledged} || 'N';
return
HOLD
. $hold_mode
. $transaction_date
. build_field( FID_EXPIRATION, $expiration_date, { optional => 1 } )
. build_field( FID_PICKUP_LOCN, $pickup_location, { optional => 1 } )
. build_field( FID_HOLD_TYPE, $hold_type, { optional => 1 } )
. build_field( FID_INST_ID, $institution_id )
. build_field( FID_PATRON_ID, $patron_identifier )
. build_field( FID_PATRON_PWD, $patron_password, { optional => 1 } )
. build_field( FID_ITEM_ID, $item_identifier, { optional => 1 } )
. build_field( FID_TITLE_ID, $title_identifier, { optional => 1 } )
. build_field( FID_TERMINAL_PWD, $terminal_password, { optional => 1 } )
. build_field( FID_FEE_ACK, $fee_acknowledged, { optional => 1 } );
}
sub build_renew_command_message {
my ($params) = @_;
@ -580,12 +640,13 @@ Options:
-m --message SIP2 message to execute
Implemented Messages:
patron_status_request
patron_information
item_information
checkout
checkin
renew
checkout
fee_paid
hold
item_information
patron_information
patron_status_request
renew
/
}