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 |
- |
|
|