|
Lines 436-463
sub build_patron_status {
Link Here
|
| 436 |
|
436 |
|
| 437 |
$resp .= patron_status_string($patron); |
437 |
$resp .= patron_status_string($patron); |
| 438 |
$resp .= $lang . timestamp(); |
438 |
$resp .= $lang . timestamp(); |
| 439 |
$resp .= add_field( FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ), $server ); |
439 |
$resp .= add_field( $server, FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ) ); |
| 440 |
|
440 |
|
| 441 |
# while the patron ID we got from the SC is valid, let's |
441 |
# while the patron ID we got from the SC is valid, let's |
| 442 |
# use the one returned from the ILS, just in case... |
442 |
# use the one returned from the ILS, just in case... |
| 443 |
$resp .= add_field( FID_PATRON_ID, $patron->id, $server ); |
443 |
$resp .= add_field( $server, FID_PATRON_ID, $patron->id ); |
| 444 |
|
444 |
|
| 445 |
if ( $protocol_version >= 2 ) { |
445 |
if ( $protocol_version >= 2 ) { |
| 446 |
$resp .= add_field( FID_VALID_PATRON, 'Y', $server ); |
446 |
$resp .= add_field( $server, FID_VALID_PATRON, 'Y' ); |
| 447 |
|
447 |
|
| 448 |
# Patron password is a required field. |
448 |
# Patron password is a required field. |
| 449 |
$resp .= add_field( FID_VALID_PATRON_PWD, sipbool($password_rc), $server ); |
449 |
$resp .= add_field( $server, FID_VALID_PATRON_PWD, sipbool($password_rc) ); |
| 450 |
$resp .= maybe_add( FID_CURRENCY, $patron->currency, $server ); |
450 |
$resp .= maybe_add( $server, FID_CURRENCY, $patron->currency ); |
| 451 |
$resp .= maybe_add( FID_FEE_AMT, $patron->fee_amount, $server ); |
451 |
$resp .= maybe_add( $server, FID_FEE_AMT, $patron->fee_amount ); |
| 452 |
} |
452 |
} |
| 453 |
|
453 |
|
| 454 |
my $msg = $patron->screen_msg; |
454 |
my $msg = $patron->screen_msg; |
| 455 |
$msg .= ' -- '. INVALID_PW if $patron_pwd && !$password_rc; |
455 |
$msg .= ' -- '. INVALID_PW if $patron_pwd && !$password_rc; |
| 456 |
$resp .= maybe_add( FID_SCREEN_MSG, $msg, $server, $server ); |
456 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $msg, $server ); |
| 457 |
|
457 |
|
| 458 |
$resp .= maybe_add( FID_SCREEN_MSG, $patron->{branchcode}, $server ) |
458 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $patron->{branchcode}, $server ) |
| 459 |
if ( $server->{account}->{send_patron_home_library_in_af} ); |
459 |
if ( $server->{account}->{send_patron_home_library_in_af} ); |
| 460 |
$resp .= maybe_add( FID_PRINT_LINE, $patron->print_line, $server ); |
460 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $patron->print_line ); |
| 461 |
|
461 |
|
| 462 |
$resp .= $patron->build_patron_attributes_string( $server ); |
462 |
$resp .= $patron->build_patron_attributes_string( $server ); |
| 463 |
|
463 |
|
|
Lines 467-485
sub build_patron_status {
Link Here
|
| 467 |
|
467 |
|
| 468 |
# no personal name, and is invalid (if we're using 2.00) |
468 |
# no personal name, and is invalid (if we're using 2.00) |
| 469 |
$resp .= 'YYYY' . ( ' ' x 10 ) . $lang . timestamp(); |
469 |
$resp .= 'YYYY' . ( ' ' x 10 ) . $lang . timestamp(); |
| 470 |
$resp .= add_field( FID_PERSONAL_NAME, '', $server ); |
470 |
$resp .= add_field( $server, FID_PERSONAL_NAME, '' ); |
| 471 |
|
471 |
|
| 472 |
# the patron ID is invalid, but it's a required field, so |
472 |
# the patron ID is invalid, but it's a required field, so |
| 473 |
# just echo it back |
473 |
# just echo it back |
| 474 |
$resp .= add_field( FID_PATRON_ID, $fields->{ (FID_PATRON_ID) }, $server ); |
474 |
$resp .= add_field( $server, FID_PATRON_ID, $fields->{ (FID_PATRON_ID) } ); |
| 475 |
|
475 |
|
| 476 |
( $protocol_version >= 2 ) |
476 |
( $protocol_version >= 2 ) |
| 477 |
and $resp .= add_field( FID_VALID_PATRON, 'N', $server ); |
477 |
and $resp .= add_field( $server, FID_VALID_PATRON, 'N' ); |
| 478 |
|
478 |
|
| 479 |
$resp .= maybe_add( FID_SCREEN_MSG, INVALID_CARD, $server, $server ); |
479 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, INVALID_CARD, $server ); |
| 480 |
} |
480 |
} |
| 481 |
|
481 |
|
| 482 |
$resp .= add_field( FID_INST_ID, $fields->{ (FID_INST_ID) }, $server ); |
482 |
$resp .= add_field( $server, FID_INST_ID, $fields->{ (FID_INST_ID) } ); |
| 483 |
return $resp; |
483 |
return $resp; |
| 484 |
} |
484 |
} |
| 485 |
|
485 |
|
|
Lines 551-575
sub handle_checkout {
Link Here
|
| 551 |
$resp .= timestamp; |
551 |
$resp .= timestamp; |
| 552 |
|
552 |
|
| 553 |
# Now for the variable fields |
553 |
# Now for the variable fields |
| 554 |
$resp .= add_field( FID_INST_ID, $inst, $server ); |
554 |
$resp .= add_field( $server, FID_INST_ID, $inst ); |
| 555 |
$resp .= add_field( FID_PATRON_ID, $patron_id, $server ); |
555 |
$resp .= add_field( $server, FID_PATRON_ID, $patron_id ); |
| 556 |
$resp .= add_field( FID_ITEM_ID, $item_id, $server ); |
556 |
$resp .= add_field( $server, FID_ITEM_ID, $item_id ); |
| 557 |
$resp .= add_field( FID_TITLE_ID, $item->title_id, $server ); |
557 |
$resp .= add_field( $server, FID_TITLE_ID, $item->title_id ); |
| 558 |
if ( $item->due_date ) { |
558 |
if ( $item->due_date ) { |
| 559 |
$resp .= add_field( FID_DUE_DATE, timestamp( $item->due_date ), $server ); |
559 |
$resp .= add_field( $server, FID_DUE_DATE, timestamp( $item->due_date ) ); |
| 560 |
} else { |
560 |
} else { |
| 561 |
$resp .= add_field( FID_DUE_DATE, q{}, $server ); |
561 |
$resp .= add_field( $server, FID_DUE_DATE, q{} ); |
| 562 |
} |
562 |
} |
| 563 |
|
563 |
|
| 564 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
564 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 565 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
565 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 566 |
|
566 |
|
| 567 |
if ( $protocol_version >= 2 ) { |
567 |
if ( $protocol_version >= 2 ) { |
| 568 |
if ( $ils->supports('security inhibit') ) { |
568 |
if ( $ils->supports('security inhibit') ) { |
| 569 |
$resp .= add_field( FID_SECURITY_INHIBIT, $status->security_inhibit, $server ); |
569 |
$resp .= add_field( $server, FID_SECURITY_INHIBIT, $status->security_inhibit ); |
| 570 |
} |
570 |
} |
| 571 |
$resp .= maybe_add( FID_MEDIA_TYPE, $item->sip_media_type, $server ); |
571 |
$resp .= maybe_add( $server, FID_MEDIA_TYPE, $item->sip_media_type ); |
| 572 |
$resp .= maybe_add( FID_ITEM_PROPS, $item->sip_item_properties, $server ); |
572 |
$resp .= maybe_add( $server, FID_ITEM_PROPS, $item->sip_item_properties ); |
| 573 |
|
573 |
|
| 574 |
} |
574 |
} |
| 575 |
} |
575 |
} |
|
Lines 580-609
sub handle_checkout {
Link Here
|
| 580 |
# Checkout Response: not ok, no renewal, don't know mag. media, |
580 |
# Checkout Response: not ok, no renewal, don't know mag. media, |
| 581 |
# no desensitize |
581 |
# no desensitize |
| 582 |
$resp = sprintf( "120NUN%s", timestamp ); |
582 |
$resp = sprintf( "120NUN%s", timestamp ); |
| 583 |
$resp .= add_field( FID_INST_ID, $inst, $server ); |
583 |
$resp .= add_field( $server, FID_INST_ID, $inst ); |
| 584 |
$resp .= add_field( FID_PATRON_ID, $patron_id, $server ); |
584 |
$resp .= add_field( $server, FID_PATRON_ID, $patron_id ); |
| 585 |
$resp .= add_field( FID_ITEM_ID, $item_id, $server ); |
585 |
$resp .= add_field( $server, FID_ITEM_ID, $item_id ); |
| 586 |
|
586 |
|
| 587 |
# If the item is valid, provide the title, otherwise |
587 |
# If the item is valid, provide the title, otherwise |
| 588 |
# leave it blank |
588 |
# leave it blank |
| 589 |
$resp .= add_field( FID_TITLE_ID, $item ? $item->title_id : '', $server ); |
589 |
$resp .= add_field( $server, FID_TITLE_ID, $item ? $item->title_id : '' ); |
| 590 |
|
590 |
|
| 591 |
# Due date is required. Since it didn't get checked out, |
591 |
# Due date is required. Since it didn't get checked out, |
| 592 |
# it's not due, so leave the date blank |
592 |
# it's not due, so leave the date blank |
| 593 |
$resp .= add_field( FID_DUE_DATE, '', $server ); |
593 |
$resp .= add_field( $server, FID_DUE_DATE, '' ); |
| 594 |
|
594 |
|
| 595 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
595 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 596 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
596 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 597 |
|
597 |
|
| 598 |
if ( $protocol_version >= 2 ) { |
598 |
if ( $protocol_version >= 2 ) { |
| 599 |
|
599 |
|
| 600 |
# Is the patron ID valid? |
600 |
# Is the patron ID valid? |
| 601 |
$resp .= add_field( FID_VALID_PATRON, sipbool($patron), $server ); |
601 |
$resp .= add_field( $server, FID_VALID_PATRON, sipbool($patron) ); |
| 602 |
|
602 |
|
| 603 |
if ( $patron && exists( $fields->{FID_PATRON_PWD} ) ) { |
603 |
if ( $patron && exists( $fields->{FID_PATRON_PWD} ) ) { |
| 604 |
|
604 |
|
| 605 |
# Password provided, so we can tell if it was valid or not |
605 |
# Password provided, so we can tell if it was valid or not |
| 606 |
$resp .= add_field( FID_VALID_PATRON_PWD, sipbool( $patron->check_password( $fields->{ (FID_PATRON_PWD) } ) ), $server ); |
606 |
$resp .= add_field( $server, FID_VALID_PATRON_PWD, sipbool( $patron->check_password( $fields->{ (FID_PATRON_PWD) } ) ) ); |
| 607 |
} |
607 |
} |
| 608 |
} |
608 |
} |
| 609 |
} |
609 |
} |
|
Lines 612-621
sub handle_checkout {
Link Here
|
| 612 |
|
612 |
|
| 613 |
# Financials : return irrespective of ok status |
613 |
# Financials : return irrespective of ok status |
| 614 |
if ( $status->fee_amount ) { |
614 |
if ( $status->fee_amount ) { |
| 615 |
$resp .= add_field( FID_FEE_AMT, $status->fee_amount, $server ); |
615 |
$resp .= add_field( $server, FID_FEE_AMT, $status->fee_amount ); |
| 616 |
$resp .= maybe_add( FID_CURRENCY, $status->sip_currency, $server ); |
616 |
$resp .= maybe_add( $server, FID_CURRENCY, $status->sip_currency ); |
| 617 |
$resp .= maybe_add( FID_FEE_TYPE, $status->sip_fee_type, $server ); |
617 |
$resp .= maybe_add( $server, FID_FEE_TYPE, $status->sip_fee_type ); |
| 618 |
$resp .= maybe_add( FID_TRANSACTION_ID, $status->transaction_id, $server ); |
618 |
$resp .= maybe_add( $server, FID_TRANSACTION_ID, $status->transaction_id ); |
| 619 |
} |
619 |
} |
| 620 |
} |
620 |
} |
| 621 |
|
621 |
|
|
Lines 669-695
sub handle_checkin {
Link Here
|
| 669 |
|
669 |
|
| 670 |
$resp .= $status->alert ? 'Y' : 'N'; |
670 |
$resp .= $status->alert ? 'Y' : 'N'; |
| 671 |
$resp .= timestamp; |
671 |
$resp .= timestamp; |
| 672 |
$resp .= add_field( FID_INST_ID, $inst_id, $server ); |
672 |
$resp .= add_field( $server, FID_INST_ID, $inst_id ); |
| 673 |
$resp .= add_field( FID_ITEM_ID, $item_id, $server ); |
673 |
$resp .= add_field( $server, FID_ITEM_ID, $item_id ); |
| 674 |
|
674 |
|
| 675 |
if ($item) { |
675 |
if ($item) { |
| 676 |
$resp .= add_field( FID_PERM_LOCN, $item->permanent_location, $server ); |
676 |
$resp .= add_field( $server, FID_PERM_LOCN, $item->permanent_location ); |
| 677 |
$resp .= maybe_add( FID_TITLE_ID, $item->title_id, $server ); |
677 |
$resp .= maybe_add( $server, FID_TITLE_ID, $item->title_id ); |
| 678 |
} |
678 |
} |
| 679 |
|
679 |
|
| 680 |
if ( $protocol_version >= 2 ) { |
680 |
if ( $protocol_version >= 2 ) { |
| 681 |
$resp .= maybe_add( FID_SORT_BIN, $status->sort_bin, $server ); |
681 |
$resp .= maybe_add( $server, FID_SORT_BIN, $status->sort_bin ); |
| 682 |
if ($patron) { |
682 |
if ($patron) { |
| 683 |
$resp .= add_field( FID_PATRON_ID, $patron->id, $server ); |
683 |
$resp .= add_field( $server, FID_PATRON_ID, $patron->id ); |
| 684 |
} |
684 |
} |
| 685 |
if ($item) { |
685 |
if ($item) { |
| 686 |
$resp .= maybe_add( FID_MEDIA_TYPE, $item->sip_media_type, $server ); |
686 |
$resp .= maybe_add( $server, FID_MEDIA_TYPE, $item->sip_media_type ); |
| 687 |
$resp .= maybe_add( FID_ITEM_PROPS, $item->sip_item_properties, $server ); |
687 |
$resp .= maybe_add( $server, FID_ITEM_PROPS, $item->sip_item_properties ); |
| 688 |
$resp .= maybe_add( FID_COLLECTION_CODE, $item->collection_code, $server ); |
688 |
$resp .= maybe_add( $server, FID_COLLECTION_CODE, $item->collection_code ); |
| 689 |
$resp .= maybe_add( FID_CALL_NUMBER, $item->call_number, $server ); |
689 |
$resp .= maybe_add( $server, FID_CALL_NUMBER, $item->call_number ); |
| 690 |
$resp .= maybe_add( FID_HOLD_PATRON_ID, $item->hold_patron_bcode, $server ); |
690 |
$resp .= maybe_add( $server, FID_HOLD_PATRON_ID, $item->hold_patron_bcode ); |
| 691 |
$resp .= add_field( FID_DESTINATION_LOCATION, $item->destination_loc, $server ) if ( $item->destination_loc || $server->{account}->{ct_always_send} ); |
691 |
$resp .= add_field( $server, FID_DESTINATION_LOCATION, $item->destination_loc ) if ( $item->destination_loc || $server->{account}->{ct_always_send} ); |
| 692 |
$resp .= maybe_add( FID_HOLD_PATRON_NAME, $item->hold_patron_name( $server->{account}->{da_field_template} ), $server ); |
692 |
$resp .= maybe_add( $server, FID_HOLD_PATRON_NAME, $item->hold_patron_name( $server->{account}->{da_field_template} ) ); |
| 693 |
|
693 |
|
| 694 |
if ( $status->hold and $status->hold->{branchcode} ne $item->destination_loc ) { |
694 |
if ( $status->hold and $status->hold->{branchcode} ne $item->destination_loc ) { |
| 695 |
warn 'SIP hold mismatch: $status->hold->{branchcode}=' . $status->hold->{branchcode} . '; $item->destination_loc=' . $item->destination_loc; |
695 |
warn 'SIP hold mismatch: $status->hold->{branchcode}=' . $status->hold->{branchcode} . '; $item->destination_loc=' . $item->destination_loc; |
|
Lines 700-711
$resp .= maybe_add( FID_HOLD_PATRON_NAME, $item->hold_patron_name( $server->
Link Here
|
| 700 |
} |
700 |
} |
| 701 |
|
701 |
|
| 702 |
if ( $status->alert && $status->alert_type ) { |
702 |
if ( $status->alert && $status->alert_type ) { |
| 703 |
$resp .= maybe_add( FID_ALERT_TYPE, $status->alert_type, $server ); |
703 |
$resp .= maybe_add( $server, FID_ALERT_TYPE, $status->alert_type ); |
| 704 |
} elsif ( $server->{account}->{cv_send_00_on_success} ) { |
704 |
} elsif ( $server->{account}->{cv_send_00_on_success} ) { |
| 705 |
$resp .= add_field( FID_ALERT_TYPE, '00', $server ); |
705 |
$resp .= add_field( $server, FID_ALERT_TYPE, '00' ); |
| 706 |
} |
706 |
} |
| 707 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server ); |
707 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg ); |
| 708 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
708 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 709 |
|
709 |
|
| 710 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
710 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 711 |
|
711 |
|
|
Lines 751-757
sub handle_block_patron {
Link Here
|
| 751 |
$patron->block( $card_retained, $blocked_card_msg ); |
751 |
$patron->block( $card_retained, $blocked_card_msg ); |
| 752 |
} |
752 |
} |
| 753 |
|
753 |
|
| 754 |
$resp = build_patron_status( $patron, $patron->language, $fields, $server ); |
754 |
$resp = build_patron_status( $patron, $patron->language, $fields ); |
| 755 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
755 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 756 |
return (BLOCK_PATRON); |
756 |
return (BLOCK_PATRON); |
| 757 |
} |
757 |
} |
|
Lines 930-936
sub summary_info {
Link Here
|
| 930 |
|
930 |
|
| 931 |
syslog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map{ $_->{barcode} } @{$itemlist} ) ); |
931 |
syslog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map{ $_->{barcode} } @{$itemlist} ) ); |
| 932 |
foreach my $i ( @{$itemlist} ) { |
932 |
foreach my $i ( @{$itemlist} ) { |
| 933 |
$resp .= add_field( $fid, $i->{barcode}, $server ); |
933 |
$resp .= add_field( $server, $fid, $i->{barcode} ); |
| 934 |
} |
934 |
} |
| 935 |
|
935 |
|
| 936 |
return $resp; |
936 |
return $resp; |
|
Lines 967-985
sub handle_patron_info {
Link Here
|
| 967 |
$resp .= add_count( 'patron_info/recall_items', scalar @{ $patron->recall_items } ); |
967 |
$resp .= add_count( 'patron_info/recall_items', scalar @{ $patron->recall_items } ); |
| 968 |
$resp .= add_count( 'patron_info/unavail_holds', scalar @{ $patron->unavail_holds } ); |
968 |
$resp .= add_count( 'patron_info/unavail_holds', scalar @{ $patron->unavail_holds } ); |
| 969 |
|
969 |
|
| 970 |
$resp .= add_field( FID_INST_ID, ( $ils->institution_id || 'SIP2' ), $server ); |
970 |
$resp .= add_field( $server, FID_INST_ID, ( $ils->institution_id || 'SIP2' ) ); |
| 971 |
|
971 |
|
| 972 |
# while the patron ID we got from the SC is valid, let's |
972 |
# while the patron ID we got from the SC is valid, let's |
| 973 |
# use the one returned from the ILS, just in case... |
973 |
# use the one returned from the ILS, just in case... |
| 974 |
$resp .= add_field( FID_PATRON_ID, $patron->id, $server ); |
974 |
$resp .= add_field( $server, FID_PATRON_ID, $patron->id ); |
| 975 |
$resp .= add_field( FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ), $server ); |
975 |
$resp .= add_field( $server, FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ) ); |
| 976 |
|
976 |
|
| 977 |
# TODO: add code for the fields |
977 |
# TODO: add code for the fields |
| 978 |
# hold items limit |
978 |
# hold items limit |
| 979 |
# overdue items limit |
979 |
# overdue items limit |
| 980 |
# charged items limit |
980 |
# charged items limit |
| 981 |
|
981 |
|
| 982 |
$resp .= add_field( FID_VALID_PATRON, 'Y', $server ); |
982 |
$resp .= add_field( $server, FID_VALID_PATRON, 'Y' ); |
| 983 |
my $password_rc; |
983 |
my $password_rc; |
| 984 |
if ( defined($patron_pwd) ) { |
984 |
if ( defined($patron_pwd) ) { |
| 985 |
|
985 |
|
|
Lines 989-1000
sub handle_patron_info {
Link Here
|
| 989 |
} else { |
989 |
} else { |
| 990 |
$password_rc = $patron->check_password($patron_pwd); |
990 |
$password_rc = $patron->check_password($patron_pwd); |
| 991 |
} |
991 |
} |
| 992 |
$resp .= add_field( FID_VALID_PATRON_PWD, sipbool( $password_rc ), $server ); |
992 |
$resp .= add_field( $server, FID_VALID_PATRON_PWD, sipbool( $password_rc ) ); |
| 993 |
} |
993 |
} |
| 994 |
|
994 |
|
| 995 |
$resp .= maybe_add( FID_CURRENCY, $patron->currency, $server ); |
995 |
$resp .= maybe_add( $server, FID_CURRENCY, $patron->currency ); |
| 996 |
$resp .= maybe_add( FID_FEE_AMT, $patron->fee_amount, $server ); |
996 |
$resp .= maybe_add( $server, FID_FEE_AMT, $patron->fee_amount ); |
| 997 |
$resp .= add_field( FID_FEE_LMT, $patron->fee_limit, $server ); |
997 |
$resp .= add_field( $server, FID_FEE_LMT, $patron->fee_limit ); |
| 998 |
|
998 |
|
| 999 |
# TODO: zero or more item details for 2.0 can go here: |
999 |
# TODO: zero or more item details for 2.0 can go here: |
| 1000 |
# hold_items |
1000 |
# hold_items |
|
Lines 1005-1031
sub handle_patron_info {
Link Here
|
| 1005 |
|
1005 |
|
| 1006 |
$resp .= summary_info( $ils, $patron, $summary, $start, $end, $server ); |
1006 |
$resp .= summary_info( $ils, $patron, $summary, $start, $end, $server ); |
| 1007 |
|
1007 |
|
| 1008 |
$resp .= maybe_add( FID_HOME_ADDR, $patron->address, $server ); |
1008 |
$resp .= maybe_add( $server, FID_HOME_ADDR, $patron->address ); |
| 1009 |
$resp .= maybe_add( FID_EMAIL, $patron->email_addr, $server ); |
1009 |
$resp .= maybe_add( $server, FID_EMAIL, $patron->email_addr ); |
| 1010 |
$resp .= maybe_add( FID_HOME_PHONE, $patron->home_phone, $server ); |
1010 |
$resp .= maybe_add( $server, FID_HOME_PHONE, $patron->home_phone ); |
| 1011 |
|
1011 |
|
| 1012 |
# SIP 2.0 extensions used by Envisionware |
1012 |
# SIP 2.0 extensions used by Envisionware |
| 1013 |
# Other terminals will ignore unrecognized fields (unrecognized field identifiers) |
1013 |
# Other terminals will ignore unrecognized fields (unrecognized field identifiers) |
| 1014 |
$resp .= maybe_add( FID_PATRON_BIRTHDATE, $patron->birthdate, $server ); |
1014 |
$resp .= maybe_add( $server, FID_PATRON_BIRTHDATE, $patron->birthdate ); |
| 1015 |
$resp .= maybe_add( FID_PATRON_CLASS, $patron->ptype, $server ); |
1015 |
$resp .= maybe_add( $server, FID_PATRON_CLASS, $patron->ptype ); |
| 1016 |
|
1016 |
|
| 1017 |
# Custom protocol extension to report patron internet privileges |
1017 |
# Custom protocol extension to report patron internet privileges |
| 1018 |
$resp .= maybe_add( FID_INET_PROFILE, $patron->inet_privileges, $server ); |
1018 |
$resp .= maybe_add( $server, FID_INET_PROFILE, $patron->inet_privileges ); |
| 1019 |
|
1019 |
|
| 1020 |
my $msg = $patron->screen_msg; |
1020 |
my $msg = $patron->screen_msg; |
| 1021 |
if( defined( $patron_pwd ) && !$password_rc ) { |
1021 |
if( defined( $patron_pwd ) && !$password_rc ) { |
| 1022 |
$msg .= ' -- ' . INVALID_PW; |
1022 |
$msg .= ' -- ' . INVALID_PW; |
| 1023 |
} |
1023 |
} |
| 1024 |
$resp .= maybe_add( FID_SCREEN_MSG, $msg, $server, $server ); |
1024 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $msg, $server ); |
| 1025 |
if ( $server->{account}->{send_patron_home_library_in_af} ) { |
1025 |
if ( $server->{account}->{send_patron_home_library_in_af} ) { |
| 1026 |
$resp .= maybe_add( FID_SCREEN_MSG, $patron->{branchcode}, $server); |
1026 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $patron->{branchcode}, $server); |
| 1027 |
} |
1027 |
} |
| 1028 |
$resp .= maybe_add( FID_PRINT_LINE, $patron->print_line, $server ); |
1028 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $patron->print_line ); |
| 1029 |
|
1029 |
|
| 1030 |
$resp .= $patron->build_patron_attributes_string( $server ); |
1030 |
$resp .= $patron->build_patron_attributes_string( $server ); |
| 1031 |
} else { |
1031 |
} else { |
|
Lines 1036-1051
sub handle_patron_info {
Link Here
|
| 1036 |
$resp .= 'YYYY' . ( ' ' x 10 ) . $lang . timestamp(); |
1036 |
$resp .= 'YYYY' . ( ' ' x 10 ) . $lang . timestamp(); |
| 1037 |
$resp .= '0000' x 6; |
1037 |
$resp .= '0000' x 6; |
| 1038 |
|
1038 |
|
| 1039 |
$resp .= add_field( FID_INST_ID, ( $ils->institution_id || 'SIP2' ), $server ); |
1039 |
$resp .= add_field( $server, FID_INST_ID, ( $ils->institution_id || 'SIP2' ) ); |
| 1040 |
|
1040 |
|
| 1041 |
# patron ID is invalid, but field is required, so just echo it back |
1041 |
# patron ID is invalid, but field is required, so just echo it back |
| 1042 |
$resp .= add_field( FID_PATRON_ID, $fields->{ (FID_PATRON_ID) }, $server ); |
1042 |
$resp .= add_field( $server, FID_PATRON_ID, $fields->{ (FID_PATRON_ID) } ); |
| 1043 |
$resp .= add_field( FID_PERSONAL_NAME, '', $server ); |
1043 |
$resp .= add_field( $server, FID_PERSONAL_NAME, '' ); |
| 1044 |
|
1044 |
|
| 1045 |
if ( $protocol_version >= 2 ) { |
1045 |
if ( $protocol_version >= 2 ) { |
| 1046 |
$resp .= add_field( FID_VALID_PATRON, 'N', $server ); |
1046 |
$resp .= add_field( $server, FID_VALID_PATRON, 'N' ); |
| 1047 |
} |
1047 |
} |
| 1048 |
$resp .= maybe_add( FID_SCREEN_MSG, INVALID_CARD, $server, $server ); |
1048 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, INVALID_CARD, $server ); |
| 1049 |
} |
1049 |
} |
| 1050 |
|
1050 |
|
| 1051 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1051 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
|
Lines 1069-1079
sub handle_end_patron_session {
Link Here
|
| 1069 |
$resp .= $status ? 'Y' : 'N'; |
1069 |
$resp .= $status ? 'Y' : 'N'; |
| 1070 |
$resp .= timestamp(); |
1070 |
$resp .= timestamp(); |
| 1071 |
|
1071 |
|
| 1072 |
$resp .= add_field( FID_INST_ID, $server->{ils}->institution, $server ); |
1072 |
$resp .= add_field( $server, FID_INST_ID, $server->{ils}->institution ); |
| 1073 |
$resp .= add_field( FID_PATRON_ID, $fields->{ (FID_PATRON_ID) }, $server ); |
1073 |
$resp .= add_field( $server, FID_PATRON_ID, $fields->{ (FID_PATRON_ID) } ); |
| 1074 |
|
1074 |
|
| 1075 |
$resp .= maybe_add( FID_SCREEN_MSG, $screen_msg, $server, $server ); |
1075 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $screen_msg ); |
| 1076 |
$resp .= maybe_add( FID_PRINT_LINE, $print_line, $server ); |
1076 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $print_line ); |
| 1077 |
|
1077 |
|
| 1078 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1078 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1079 |
|
1079 |
|
|
Lines 1147-1157
sub handle_fee_paid {
Link Here
|
| 1147 |
} |
1147 |
} |
| 1148 |
|
1148 |
|
| 1149 |
$resp .= ( $status->ok ? 'Y' : 'N' ) . timestamp; |
1149 |
$resp .= ( $status->ok ? 'Y' : 'N' ) . timestamp; |
| 1150 |
$resp .= add_field( FID_INST_ID, $inst_id, $server ); |
1150 |
$resp .= add_field( $server, FID_INST_ID, $inst_id ); |
| 1151 |
$resp .= add_field( FID_PATRON_ID, $patron_id, $server ); |
1151 |
$resp .= add_field( $server, FID_PATRON_ID, $patron_id ); |
| 1152 |
$resp .= maybe_add( FID_TRANSACTION_ID, $status->transaction_id, $server ); |
1152 |
$resp .= maybe_add( $server, FID_TRANSACTION_ID, $status->transaction_id ); |
| 1153 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
1153 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 1154 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
1154 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 1155 |
|
1155 |
|
| 1156 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1156 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1157 |
|
1157 |
|
|
Lines 1181-1190
sub handle_item_information {
Link Here
|
| 1181 |
$resp .= timestamp; |
1181 |
$resp .= timestamp; |
| 1182 |
|
1182 |
|
| 1183 |
# Just echo back the invalid item id |
1183 |
# Just echo back the invalid item id |
| 1184 |
$resp .= add_field( FID_ITEM_ID, $fields->{ (FID_ITEM_ID) }, $server ); |
1184 |
$resp .= add_field( $server, FID_ITEM_ID, $fields->{ (FID_ITEM_ID) } ); |
| 1185 |
|
1185 |
|
| 1186 |
# title id is required, but we don't have one |
1186 |
# title id is required, but we don't have one |
| 1187 |
$resp .= add_field( FID_TITLE_ID, '', $server ); |
1187 |
$resp .= add_field( $server, FID_TITLE_ID, '' ); |
| 1188 |
} else { |
1188 |
} else { |
| 1189 |
|
1189 |
|
| 1190 |
# Valid Item ID, send the good stuff |
1190 |
# Valid Item ID, send the good stuff |
|
Lines 1193-1227
sub handle_item_information {
Link Here
|
| 1193 |
$resp .= $item->sip_fee_type; |
1193 |
$resp .= $item->sip_fee_type; |
| 1194 |
$resp .= timestamp; |
1194 |
$resp .= timestamp; |
| 1195 |
|
1195 |
|
| 1196 |
$resp .= add_field( FID_ITEM_ID, $item->id, $server ); |
1196 |
$resp .= add_field( $server, FID_ITEM_ID, $item->id ); |
| 1197 |
$resp .= add_field( FID_TITLE_ID, $item->title_id, $server ); |
1197 |
$resp .= add_field( $server, FID_TITLE_ID, $item->title_id ); |
| 1198 |
|
1198 |
|
| 1199 |
$resp .= maybe_add( FID_MEDIA_TYPE, $item->sip_media_type, $server ); |
1199 |
$resp .= maybe_add( $server, FID_MEDIA_TYPE, $item->sip_media_type ); |
| 1200 |
$resp .= maybe_add( FID_PERM_LOCN, $item->permanent_location, $server ); |
1200 |
$resp .= maybe_add( $server, FID_PERM_LOCN, $item->permanent_location ); |
| 1201 |
$resp .= maybe_add( FID_CURRENT_LOCN, $item->current_location, $server ); |
1201 |
$resp .= maybe_add( $server, FID_CURRENT_LOCN, $item->current_location ); |
| 1202 |
$resp .= maybe_add( FID_ITEM_PROPS, $item->sip_item_properties, $server ); |
1202 |
$resp .= maybe_add( $server, FID_ITEM_PROPS, $item->sip_item_properties ); |
| 1203 |
|
1203 |
|
| 1204 |
if ( ( $i = $item->fee ) != 0 ) { |
1204 |
if ( ( $i = $item->fee ) != 0 ) { |
| 1205 |
$resp .= add_field( FID_CURRENCY, $item->fee_currency, $server ); |
1205 |
$resp .= add_field( $server, FID_CURRENCY, $item->fee_currency ); |
| 1206 |
$resp .= add_field( FID_FEE_AMT, $i, $server ); |
1206 |
$resp .= add_field( $server, FID_FEE_AMT, $i ); |
| 1207 |
} |
1207 |
} |
| 1208 |
$resp .= maybe_add( FID_OWNER, $item->owner, $server ); |
1208 |
$resp .= maybe_add( $server, FID_OWNER, $item->owner ); |
| 1209 |
|
1209 |
|
| 1210 |
if ( ( $i = scalar @{ $item->hold_queue } ) > 0 ) { |
1210 |
if ( ( $i = scalar @{ $item->hold_queue } ) > 0 ) { |
| 1211 |
$resp .= add_field( FID_HOLD_QUEUE_LEN, $i, $server ); |
1211 |
$resp .= add_field( $server, FID_HOLD_QUEUE_LEN, $i ); |
| 1212 |
} |
1212 |
} |
| 1213 |
if ( $item->due_date ) { |
1213 |
if ( $item->due_date ) { |
| 1214 |
$resp .= add_field( FID_DUE_DATE, timestamp( $item->due_date ), $server ); |
1214 |
$resp .= add_field( $server, FID_DUE_DATE, timestamp( $item->due_date ) ); |
| 1215 |
} |
1215 |
} |
| 1216 |
if ( ( $i = $item->recall_date ) != 0 ) { |
1216 |
if ( ( $i = $item->recall_date ) != 0 ) { |
| 1217 |
$resp .= add_field( FID_RECALL_DATE, timestamp($i), $server ); |
1217 |
$resp .= add_field( $server, FID_RECALL_DATE, timestamp($i) ); |
| 1218 |
} |
1218 |
} |
| 1219 |
if ( ( $i = $item->hold_pickup_date ) != 0 ) { |
1219 |
if ( ( $i = $item->hold_pickup_date ) != 0 ) { |
| 1220 |
$resp .= add_field( FID_HOLD_PICKUP_DATE, timestamp($i), $server ); |
1220 |
$resp .= add_field( $server, FID_HOLD_PICKUP_DATE, timestamp($i) ); |
| 1221 |
} |
1221 |
} |
| 1222 |
|
1222 |
|
| 1223 |
$resp .= maybe_add( FID_SCREEN_MSG, $item->screen_msg, $server, $server ); |
1223 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $item->screen_msg, $server ); |
| 1224 |
$resp .= maybe_add( FID_PRINT_LINE, $item->print_line, $server ); |
1224 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $item->print_line ); |
| 1225 |
} |
1225 |
} |
| 1226 |
|
1226 |
|
| 1227 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1227 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
|
Lines 1256-1262
sub handle_item_status_update {
Link Here
|
| 1256 |
# Invalid Item ID |
1256 |
# Invalid Item ID |
| 1257 |
$resp .= '0'; |
1257 |
$resp .= '0'; |
| 1258 |
$resp .= timestamp; |
1258 |
$resp .= timestamp; |
| 1259 |
$resp .= add_field( FID_ITEM_ID, $item_id, $server ); |
1259 |
$resp .= add_field( $server, FID_ITEM_ID, $item_id ); |
| 1260 |
} else { |
1260 |
} else { |
| 1261 |
|
1261 |
|
| 1262 |
# Valid Item ID |
1262 |
# Valid Item ID |
|
Lines 1266-1278
sub handle_item_status_update {
Link Here
|
| 1266 |
$resp .= $status->ok ? '1' : '0'; |
1266 |
$resp .= $status->ok ? '1' : '0'; |
| 1267 |
$resp .= timestamp; |
1267 |
$resp .= timestamp; |
| 1268 |
|
1268 |
|
| 1269 |
$resp .= add_field( FID_ITEM_ID, $item->id, $server ); |
1269 |
$resp .= add_field( $server, FID_ITEM_ID, $item->id ); |
| 1270 |
$resp .= add_field( FID_TITLE_ID, $item->title_id, $server ); |
1270 |
$resp .= add_field( $server, FID_TITLE_ID, $item->title_id ); |
| 1271 |
$resp .= maybe_add( FID_ITEM_PROPS, $item->sip_item_properties, $server ); |
1271 |
$resp .= maybe_add( $server, FID_ITEM_PROPS, $item->sip_item_properties ); |
| 1272 |
} |
1272 |
} |
| 1273 |
|
1273 |
|
| 1274 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
1274 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 1275 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
1275 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 1276 |
|
1276 |
|
| 1277 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1277 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1278 |
|
1278 |
|
|
Lines 1299-1308
sub handle_patron_enable {
Link Here
|
| 1299 |
|
1299 |
|
| 1300 |
# Invalid patron ID |
1300 |
# Invalid patron ID |
| 1301 |
$resp .= 'YYYY' . ( ' ' x 10 ) . '000' . timestamp(); |
1301 |
$resp .= 'YYYY' . ( ' ' x 10 ) . '000' . timestamp(); |
| 1302 |
$resp .= add_field( FID_PATRON_ID, $patron_id, $server ); |
1302 |
$resp .= add_field( $server, FID_PATRON_ID, $patron_id ); |
| 1303 |
$resp .= add_field( FID_PERSONAL_NAME, '', $server ); |
1303 |
$resp .= add_field( $server, FID_PERSONAL_NAME, '' ); |
| 1304 |
$resp .= add_field( FID_VALID_PATRON, 'N', $server ); |
1304 |
$resp .= add_field( $server, FID_VALID_PATRON, 'N' ); |
| 1305 |
$resp .= add_field( FID_VALID_PATRON_PWD, 'N', $server ); |
1305 |
$resp .= add_field( $server, FID_VALID_PATRON_PWD, 'N' ); |
| 1306 |
} else { |
1306 |
} else { |
| 1307 |
|
1307 |
|
| 1308 |
# valid patron |
1308 |
# valid patron |
|
Lines 1314-1330
sub handle_patron_enable {
Link Here
|
| 1314 |
$resp .= patron_status_string($patron); |
1314 |
$resp .= patron_status_string($patron); |
| 1315 |
$resp .= $patron->language . timestamp(); |
1315 |
$resp .= $patron->language . timestamp(); |
| 1316 |
|
1316 |
|
| 1317 |
$resp .= add_field( FID_PATRON_ID, $patron->id, $server ); |
1317 |
$resp .= add_field( $server, FID_PATRON_ID, $patron->id ); |
| 1318 |
$resp .= add_field( FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ), $server ); |
1318 |
$resp .= add_field( $server, FID_PERSONAL_NAME, $patron->name( $server->{account}->{ae_field_template} ) ); |
| 1319 |
if ( defined($patron_pwd) ) { |
1319 |
if ( defined($patron_pwd) ) { |
| 1320 |
$resp .= add_field( FID_VALID_PATRON_PWD, sipbool( $patron->check_password($patron_pwd) ), $server ); |
1320 |
$resp .= add_field( $server, FID_VALID_PATRON_PWD, sipbool( $patron->check_password($patron_pwd) ) ); |
| 1321 |
} |
1321 |
} |
| 1322 |
$resp .= add_field( FID_VALID_PATRON, 'Y', $server ); |
1322 |
$resp .= add_field( $server, FID_VALID_PATRON, 'Y' ); |
| 1323 |
$resp .= maybe_add( FID_SCREEN_MSG, $patron->screen_msg, $server, $server ); |
1323 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $patron->screen_msg, $server ); |
| 1324 |
$resp .= maybe_add( FID_PRINT_LINE, $patron->print_line, $server ); |
1324 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $patron->print_line ); |
| 1325 |
} |
1325 |
} |
| 1326 |
|
1326 |
|
| 1327 |
$resp .= add_field( FID_INST_ID, $ils->institution, $server ); |
1327 |
$resp .= add_field( $server, FID_INST_ID, $ils->institution ); |
| 1328 |
|
1328 |
|
| 1329 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1329 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1330 |
|
1330 |
|
|
Lines 1371-1393
sub handle_hold {
Link Here
|
| 1371 |
$resp .= timestamp; |
1371 |
$resp .= timestamp; |
| 1372 |
|
1372 |
|
| 1373 |
if ( $status->ok ) { |
1373 |
if ( $status->ok ) { |
| 1374 |
$resp .= add_field( FID_PATRON_ID, $status->patron->id, $server ); |
1374 |
$resp .= add_field( $server, FID_PATRON_ID, $status->patron->id ); |
| 1375 |
|
1375 |
|
| 1376 |
( $status->expiration_date ) |
1376 |
( $status->expiration_date ) |
| 1377 |
and $resp .= maybe_add( FID_EXPIRATION, timestamp( $status->expiration_date ), $server ); |
1377 |
and $resp .= maybe_add( $server, FID_EXPIRATION, timestamp( $status->expiration_date ) ); |
| 1378 |
$resp .= maybe_add( FID_QUEUE_POS, $status->queue_position, $server ); |
1378 |
$resp .= maybe_add( $server, FID_QUEUE_POS, $status->queue_position ); |
| 1379 |
$resp .= maybe_add( FID_PICKUP_LOCN, $status->pickup_location, $server ); |
1379 |
$resp .= maybe_add( $server, FID_PICKUP_LOCN, $status->pickup_location ); |
| 1380 |
$resp .= maybe_add( FID_ITEM_ID, $status->item->id, $server ); |
1380 |
$resp .= maybe_add( $server, FID_ITEM_ID, $status->item->id ); |
| 1381 |
$resp .= maybe_add( FID_TITLE_ID, $status->item->title_id, $server ); |
1381 |
$resp .= maybe_add( $server, FID_TITLE_ID, $status->item->title_id ); |
| 1382 |
} else { |
1382 |
} else { |
| 1383 |
|
1383 |
|
| 1384 |
# Not ok. still need required fields |
1384 |
# Not ok. still need required fields |
| 1385 |
$resp .= add_field( FID_PATRON_ID, $patron_id, $server ); |
1385 |
$resp .= add_field( $server, FID_PATRON_ID, $patron_id ); |
| 1386 |
} |
1386 |
} |
| 1387 |
|
1387 |
|
| 1388 |
$resp .= add_field( FID_INST_ID, $ils->institution, $server ); |
1388 |
$resp .= add_field( $server, FID_INST_ID, $ils->institution ); |
| 1389 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
1389 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 1390 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
1390 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 1391 |
|
1391 |
|
| 1392 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1392 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1393 |
|
1393 |
|
|
Lines 1434-1452
sub handle_renew {
Link Here
|
| 1434 |
} |
1434 |
} |
| 1435 |
$resp .= sipbool( $status->desensitize ); |
1435 |
$resp .= sipbool( $status->desensitize ); |
| 1436 |
$resp .= timestamp; |
1436 |
$resp .= timestamp; |
| 1437 |
$resp .= add_field( FID_PATRON_ID, $patron->id, $server ); |
1437 |
$resp .= add_field( $server, FID_PATRON_ID, $patron->id ); |
| 1438 |
$resp .= add_field( FID_ITEM_ID, $item->id, $server ); |
1438 |
$resp .= add_field( $server, FID_ITEM_ID, $item->id ); |
| 1439 |
$resp .= add_field( FID_TITLE_ID, $item->title_id, $server ); |
1439 |
$resp .= add_field( $server, FID_TITLE_ID, $item->title_id ); |
| 1440 |
if ( $item->due_date ) { |
1440 |
if ( $item->due_date ) { |
| 1441 |
$resp .= add_field( FID_DUE_DATE, timestamp( $item->due_date ), $server ); |
1441 |
$resp .= add_field( $server, FID_DUE_DATE, timestamp( $item->due_date ) ); |
| 1442 |
} else { |
1442 |
} else { |
| 1443 |
$resp .= add_field( FID_DUE_DATE, q{}, $server ); |
1443 |
$resp .= add_field( $server, FID_DUE_DATE, q{} ); |
| 1444 |
} |
1444 |
} |
| 1445 |
if ( $ils->supports('security inhibit') ) { |
1445 |
if ( $ils->supports('security inhibit') ) { |
| 1446 |
$resp .= add_field( FID_SECURITY_INHIBIT, $status->security_inhibit, $server ); |
1446 |
$resp .= add_field( $server, FID_SECURITY_INHIBIT, $status->security_inhibit ); |
| 1447 |
} |
1447 |
} |
| 1448 |
$resp .= add_field( FID_MEDIA_TYPE, $item->sip_media_type, $server ); |
1448 |
$resp .= add_field( $server, FID_MEDIA_TYPE, $item->sip_media_type ); |
| 1449 |
$resp .= maybe_add( FID_ITEM_PROPS, $item->sip_item_properties, $server ); |
1449 |
$resp .= maybe_add( $server, FID_ITEM_PROPS, $item->sip_item_properties ); |
| 1450 |
} else { |
1450 |
} else { |
| 1451 |
|
1451 |
|
| 1452 |
# renew failed for some reason |
1452 |
# renew failed for some reason |
|
Lines 1457-1478
sub handle_renew {
Link Here
|
| 1457 |
# If we found the patron or the item, the return the ILS |
1457 |
# If we found the patron or the item, the return the ILS |
| 1458 |
# information, otherwise echo back the information we received |
1458 |
# information, otherwise echo back the information we received |
| 1459 |
# from the terminal |
1459 |
# from the terminal |
| 1460 |
$resp .= add_field( FID_PATRON_ID, $patron ? $patron->id : $patron_id, $server ); |
1460 |
$resp .= add_field( $server, FID_PATRON_ID, $patron ? $patron->id : $patron_id ); |
| 1461 |
$resp .= add_field( FID_ITEM_ID, $item ? $item->id : $item_id, $server ); |
1461 |
$resp .= add_field( $server, FID_ITEM_ID, $item ? $item->id : $item_id ); |
| 1462 |
$resp .= add_field( FID_TITLE_ID, $item ? $item->title_id : $title_id, $server ); |
1462 |
$resp .= add_field( $server, FID_TITLE_ID, $item ? $item->title_id : $title_id ); |
| 1463 |
$resp .= add_field( FID_DUE_DATE, '', $server ); |
1463 |
$resp .= add_field( $server, FID_DUE_DATE, '' ); |
| 1464 |
} |
1464 |
} |
| 1465 |
|
1465 |
|
| 1466 |
if ( $status->fee_amount ) { |
1466 |
if ( $status->fee_amount ) { |
| 1467 |
$resp .= add_field( FID_FEE_AMT, $status->fee_amount, $server ); |
1467 |
$resp .= add_field( $server, FID_FEE_AMT, $status->fee_amount ); |
| 1468 |
$resp .= maybe_add( FID_CURRENCY, $status->sip_currency, $server ); |
1468 |
$resp .= maybe_add( $server, FID_CURRENCY, $status->sip_currency ); |
| 1469 |
$resp .= maybe_add( FID_FEE_TYPE, $status->sip_fee_type, $server ); |
1469 |
$resp .= maybe_add( $server, FID_FEE_TYPE, $status->sip_fee_type ); |
| 1470 |
$resp .= maybe_add( FID_TRANSACTION_ID, $status->transaction_id, $server ); |
1470 |
$resp .= maybe_add( $server, FID_TRANSACTION_ID, $status->transaction_id ); |
| 1471 |
} |
1471 |
} |
| 1472 |
|
1472 |
|
| 1473 |
$resp .= add_field( FID_INST_ID, $ils->institution, $server ); |
1473 |
$resp .= add_field( $server, FID_INST_ID, $ils->institution ); |
| 1474 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
1474 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 1475 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
1475 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 1476 |
|
1476 |
|
| 1477 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1477 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1478 |
|
1478 |
|
|
Lines 1517-1529
sub handle_renew_all {
Link Here
|
| 1517 |
} |
1517 |
} |
| 1518 |
|
1518 |
|
| 1519 |
$resp .= timestamp; |
1519 |
$resp .= timestamp; |
| 1520 |
$resp .= add_field( FID_INST_ID, $ils->institution, $server ); |
1520 |
$resp .= add_field( $server, FID_INST_ID, $ils->institution ); |
| 1521 |
|
1521 |
|
| 1522 |
$resp .= join( '', map( add_field( FID_RENEWED_ITEMS, $_ ), @renewed ), $server ); |
1522 |
$resp .= join( '', map( add_field( $server, FID_RENEWED_ITEMS, $_ ), @renewed ) ); |
| 1523 |
$resp .= join( '', map( add_field( FID_UNRENEWED_ITEMS, $_ ), @unrenewed ), $server ); |
1523 |
$resp .= join( '', map( add_field( $server, FID_UNRENEWED_ITEMS, $_ ), @unrenewed ) ); |
| 1524 |
|
1524 |
|
| 1525 |
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server, $server ); |
1525 |
$resp .= maybe_add( $server, FID_SCREEN_MSG, $status->screen_msg, $server ); |
| 1526 |
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server ); |
1526 |
$resp .= maybe_add( $server, FID_PRINT_LINE, $status->print_line ); |
| 1527 |
|
1527 |
|
| 1528 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
1528 |
$self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} ); |
| 1529 |
|
1529 |
|
|
Lines 1594-1600
sub send_acs_status {
Link Here
|
| 1594 |
} |
1594 |
} |
| 1595 |
|
1595 |
|
| 1596 |
# Institution ID |
1596 |
# Institution ID |
| 1597 |
$msg .= add_field( FID_INST_ID, $account->{institution}, $server ); |
1597 |
$msg .= add_field( $server, FID_INST_ID, $account->{institution} ); |
| 1598 |
|
1598 |
|
| 1599 |
if ( $protocol_version >= 2 ) { |
1599 |
if ( $protocol_version >= 2 ) { |
| 1600 |
|
1600 |
|
|
Lines 1611-1620
sub send_acs_status {
Link Here
|
| 1611 |
if ( length($supported_msgs) < 16 ) { |
1611 |
if ( length($supported_msgs) < 16 ) { |
| 1612 |
syslog( "LOG_ERR", 'send_acs_status: supported messages "%s" too short', $supported_msgs ); |
1612 |
syslog( "LOG_ERR", 'send_acs_status: supported messages "%s" too short', $supported_msgs ); |
| 1613 |
} |
1613 |
} |
| 1614 |
$msg .= add_field( FID_SUPPORTED_MSGS, $supported_msgs, $server ); |
1614 |
$msg .= add_field( $server, FID_SUPPORTED_MSGS, $supported_msgs ); |
| 1615 |
} |
1615 |
} |
| 1616 |
|
1616 |
|
| 1617 |
$msg .= maybe_add( FID_SCREEN_MSG, $screen_msg, $server, $server ); |
1617 |
$msg .= maybe_add( $server, FID_SCREEN_MSG, $screen_msg, $server ); |
| 1618 |
|
1618 |
|
| 1619 |
if ( defined( $account->{print_width} ) |
1619 |
if ( defined( $account->{print_width} ) |
| 1620 |
&& defined($print_line) |
1620 |
&& defined($print_line) |
|
Lines 1623-1629
sub send_acs_status {
Link Here
|
| 1623 |
$print_line = substr( $print_line, 0, $account->{print_width} ); |
1623 |
$print_line = substr( $print_line, 0, $account->{print_width} ); |
| 1624 |
} |
1624 |
} |
| 1625 |
|
1625 |
|
| 1626 |
$msg .= maybe_add( FID_PRINT_LINE, $print_line, $server ); |
1626 |
$msg .= maybe_add( $server, FID_PRINT_LINE, $print_line ); |
| 1627 |
|
1627 |
|
| 1628 |
# Do we want to tell the terminal its location? |
1628 |
# Do we want to tell the terminal its location? |
| 1629 |
|
1629 |
|
| 1630 |
- |
|
|