my ($self, $server) = @_;
my $account = $server->{account};
my $ils = $server->{ils};
+ my $my_branch = $ils->institution;
my ($current_loc, $inst_id, $item_id, $terminal_pwd, $item_props, $cancel);
my ($patron, $item, $status);
my $resp = CHECKIN_RESP;
$item_id = $fields->{(FID_ITEM_ID)};
$item_props = $fields->{(FID_ITEM_PROPS)};
$cancel = $fields->{(FID_CANCEL)};
+ if ($current_loc) {
+ $my_branch = $current_loc;# most scm do not set $current_loc
+ }
$ils->check_inst_id($inst_id, "handle_checkin");
syslog("LOG_WARNING", "received no-block checkin from terminal '%s'", $account->{id});
$status = $ils->checkin_no_block($item_id, $trans_date, $return_date, $item_props, $cancel);
} else {
- $status = $ils->checkin($item_id, $trans_date, $return_date, $current_loc, $item_props, $cancel);
+ $status = $ils->checkin($item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel);
}
$patron = $status->patron;
# apparently we can't trust the returns from Checkin yet (because C4::Circulation::AddReturn is faulty)
# So we reproduce the alert logic here.
if (not $status->alert) {
- if ($item->hold_patron_id) {
- $status->alert(1);
- if ($item->destination_loc and $item->destination_loc ne $current_loc) {
- $status->alert_type('02'); # hold at other library
- } else {
- $status->alert_type('01'); # hold at this library
- }
- } elsif ($item->destination_loc and $item->destination_loc ne $current_loc) {
+ if ($item->destination_loc and $item->destination_loc ne $my_branch) {
$status->alert(1);
$status->alert_type('04'); # no hold, just send it
}
$server->{sip_username} = $uid;
$server->{sip_password} = $pwd;
- my $auth_status = api_auth($uid,$pwd);
+ my $auth_status = api_auth($uid,$pwd,$inst);
if (!$auth_status or $auth_status !~ /^ok$/i) {
syslog("LOG_WARNING", "api_auth failed for SIP terminal '%s' of '%s': %s",
$uid, $inst, ($auth_status||'unknown'));
return $patron_status;
}
-sub api_auth($$) {
- # AUTH
- my ($username,$password) = (shift,shift);
- $ENV{REMOTE_USER} = $username;
- my $query = CGI->new();
- $query->param(userid => $username);
- $query->param(password => $password);
- my ($status, $cookie, $sessionID) = check_api_auth($query, {circulate=>1}, "intranet");
- # print STDERR "check_api_auth returns " . ($status || 'undef') . "\n";
- # print "api_auth userenv = " . &dump_userenv;
- return $status;
+sub api_auth {
+ my ($username,$password, $branch) = @_;
+ $ENV{REMOTE_USER} = $username;
+ my $query = CGI->new();
+ $query->param(userid => $username);
+ $query->param(password => $password);
+ if ($branch) {
+ $query->param(branch => $branch);
+ }
+ my ($status, $cookie, $sessionID) = check_api_auth($query, {circulate=>1}, 'intranet');
+ return $status;
}
1;