View | Details | Raw Unified | Return to bug 24966
Collapse All | Expand All

(-)a/C4/SIP/Sip.pm (-2 / +2 lines)
Lines 58-64 sub timestamp { Link Here
58
#    return constructed field value
58
#    return constructed field value
59
#
59
#
60
sub add_field {
60
sub add_field {
61
    my ($field_id, $value, $server) = @_;
61
    my ($server, $field_id, $value) = @_;
62
62
63
    if ( my $hide_fields = $server->{account}->{hide_fields} ) {
63
    if ( my $hide_fields = $server->{account}->{hide_fields} ) {
64
        my @fields = split( ',', $hide_fields );
64
        my @fields = split( ',', $hide_fields );
Lines 92-98 sub add_field { Link Here
92
#    NOTE: if zero is a valid value for your field, don't use maybe_add!
92
#    NOTE: if zero is a valid value for your field, don't use maybe_add!
93
#
93
#
94
sub maybe_add {
94
sub maybe_add {
95
    my ($fid, $value, $server) = @_;
95
    my ($server, $fid, $value) = @_;
96
96
97
    if ( my $hide_fields = $server->{account}->{hide_fields} ) {
97
    if ( my $hide_fields = $server->{account}->{hide_fields} ) {
98
        my @fields = split( ',', $hide_fields );
98
        my @fields = split( ',', $hide_fields );
(-)a/C4/SIP/Sip/MsgType.pm (-161 / +160 lines)
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
- 

Return to bug 24966