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

(-)a/C4/SIP/ILS/Patron.pm (-138 / +187 lines)
Lines 39-45 our $kp; # koha patron Link Here
39
=cut
39
=cut
40
40
41
sub new {
41
sub new {
42
    my ($class, $patron_id) = @_;
42
    my ( $class, $patron_id ) = @_;
43
    my $type = ref($class) || $class;
43
    my $type = ref($class) || $class;
44
    my $self;
44
    my $self;
45
45
Lines 47-77 sub new { Link Here
47
    if ( ref $patron_id eq "HASH" ) {
47
    if ( ref $patron_id eq "HASH" ) {
48
        if ( $patron_id->{borrowernumber} ) {
48
        if ( $patron_id->{borrowernumber} ) {
49
            $patron = Koha::Patrons->find( $patron_id->{borrowernumber} );
49
            $patron = Koha::Patrons->find( $patron_id->{borrowernumber} );
50
        } elsif ( $patron_id->{cardnumber} ) {
50
        }
51
            $patron = Koha::Patrons->find( { cardnumber => $patron_id->{cardnumber} } );
51
        elsif ( $patron_id->{cardnumber} ) {
52
        } elsif ( $patron_id->{userid} ) {
52
            $patron =
53
              Koha::Patrons->find( { cardnumber => $patron_id->{cardnumber} } );
54
        }
55
        elsif ( $patron_id->{userid} ) {
53
            $patron = Koha::Patrons->find( { userid => $patron_id->{userid} } );
56
            $patron = Koha::Patrons->find( { userid => $patron_id->{userid} } );
54
        }
57
        }
55
    } else {
58
    }
59
    else {
56
        $patron = Koha::Patrons->find( { cardnumber => $patron_id } )
60
        $patron = Koha::Patrons->find( { cardnumber => $patron_id } )
57
            || Koha::Patrons->find( { userid => $patron_id } );
61
          || Koha::Patrons->find( { userid => $patron_id } );
58
    }
62
    }
59
63
60
    unless ($patron) {
64
    unless ($patron) {
61
        siplog("LOG_DEBUG", "new ILS::Patron(%s): no such patron", $patron_id);
65
        siplog( "LOG_DEBUG", "new ILS::Patron(%s): no such patron",
66
            $patron_id );
62
        return;
67
        return;
63
    }
68
    }
64
    $kp = $patron->unblessed;
69
    $kp = $patron->unblessed;
65
    my $pw        = $kp->{password};
70
    my $pw       = $kp->{password};
66
    my $flags     = C4::Members::patronflags( $kp );
71
    my $flags    = C4::Members::patronflags($kp);
67
    my $debarred  = $patron->is_debarred;
72
    my $debarred = $patron->is_debarred;
68
    siplog( "LOG_DEBUG", "Debarred = %s : ", ( $debarred || 'undef' ) );    # Do we need more debug info here?
73
    siplog( "LOG_DEBUG", "Debarred = %s : ", ( $debarred || 'undef' ) )
74
      ;    # Do we need more debug info here?
69
    my $expired = 0;
75
    my $expired = 0;
70
    if ( $kp->{'dateexpiry'} && C4::Context->preference('NotifyBorrowerDeparture') ) {
76
    if ( $kp->{'dateexpiry'}
77
        && C4::Context->preference('NotifyBorrowerDeparture') )
78
    {
71
        my ( $today_year,   $today_month,   $today_day )   = Today();
79
        my ( $today_year,   $today_month,   $today_day )   = Today();
72
        my ( $warning_year, $warning_month, $warning_day ) = split /-/, $kp->{'dateexpiry'};
80
        my ( $warning_year, $warning_month, $warning_day ) = split /-/,
73
        my $days_to_expiry = Date_to_Days( $warning_year, $warning_month, $warning_day ) -
81
          $kp->{'dateexpiry'};
74
            Date_to_Days( $today_year, $today_month, $today_day );
82
        my $days_to_expiry =
83
          Date_to_Days( $warning_year, $warning_month, $warning_day ) -
84
          Date_to_Days( $today_year,   $today_month,   $today_day );
75
        my $dt         = dt_from_string( $kp->{'dateexpiry'}, 'iso' );
85
        my $dt         = dt_from_string( $kp->{'dateexpiry'}, 'iso' );
76
        my $dateexpiry = output_pref( { dt => $dt, dateonly => 1 } );
86
        my $dateexpiry = output_pref( { dt => $dt, dateonly => 1 } );
77
        if ( $days_to_expiry < 0 ) {
87
        if ( $days_to_expiry < 0 ) {
Lines 82-88 sub new { Link Here
82
            }
92
            }
83
            $kp->{opacnote} .= "Your account has expired as of $dateexpiry";
93
            $kp->{opacnote} .= "Your account has expired as of $dateexpiry";
84
            $expired = 1;
94
            $expired = 1;
85
        } elsif ( $days_to_expiry < C4::Context->preference('NotifyBorrowerDeparture') ) {
95
        }
96
        elsif ( $days_to_expiry <
97
            C4::Context->preference('NotifyBorrowerDeparture') )
98
        {
86
99
87
            # borrower card soon to expire, warn the borrower
100
            # borrower card soon to expire, warn the borrower
88
            if ( $kp->{opacnote} ) {
101
            if ( $kp->{opacnote} ) {
Lines 92-195 sub new { Link Here
92
        }
105
        }
93
    }
106
    }
94
    my %ilspatron;
107
    my %ilspatron;
95
    my $adr     = _get_address($kp);
108
    my $adr = _get_address($kp);
96
    my $dob     = $kp->{dateofbirth};
109
    my $dob = $kp->{dateofbirth};
97
    $dob and $dob =~ s/-//g;    # YYYYMMDD
110
    $dob and $dob =~ s/-//g;            # YYYYMMDD
98
    my $dexpiry     = $kp->{dateexpiry};
111
    my $dexpiry = $kp->{dateexpiry};
99
    $dexpiry and $dexpiry =~ s/-//g;    # YYYYMMDD
112
    $dexpiry and $dexpiry =~ s/-//g;    # YYYYMMDD
100
113
101
    # Get fines and add fines for guarantees (depends on preference NoIssuesChargeGuarantees)
114
# Get fines and add fines for guarantees (depends on preference NoIssuesChargeGuarantees)
102
    my $patron_charge_limits  = $patron->is_patron_inside_charge_limits();
115
    my $patron_charge_limits = $patron->is_patron_inside_charge_limits();
103
    my $fines_amount          = $patron_charge_limits->{noissuescharge}->{charge};
116
    my $fines_amount = $patron_charge_limits->{noissuescharge}->{charge};
104
    my $personal_fines_amount = $fines_amount;
117
    my $personal_fines_amount = $fines_amount;
105
    my $fee_limit             = $patron_charge_limits->{noissuescharge}->{limit} || 5;
118
    my $fee_limit = $patron_charge_limits->{noissuescharge}->{limit} || 5;
106
    my $noissueschargeguarantorswithguarantees =
119
    my $noissueschargeguarantorswithguarantees =
107
        $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}->{limit};
120
      $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}->{limit};
108
    my $noissueschargeguarantees = $patron_charge_limits->{NoIssuesChargeGuarantees}->{limit};
121
    my $noissueschargeguarantees =
122
      $patron_charge_limits->{NoIssuesChargeGuarantees}->{limit};
109
123
110
    my $fines_msg = "";
124
    my $fines_msg    = "";
111
    my $fine_blocked = 0;
125
    my $fine_blocked = 0;
112
    if ( $patron_charge_limits->{noissuescharge}->{overlimit} ) {
126
    if ( $patron_charge_limits->{noissuescharge}->{overlimit} ) {
113
        $fine_blocked = 1;
127
        $fine_blocked = 1;
114
        $fines_msg .= " -- " . "Patron blocked by fines" if $fine_blocked;
128
        $fines_msg .= " -- " . "Patron blocked by fines" if $fine_blocked;
115
    } elsif ($noissueschargeguarantorswithguarantees) {
129
    }
116
        $fines_amount = $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}->{charge};
130
    elsif ($noissueschargeguarantorswithguarantees) {
117
        $fine_blocked = $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}->{overlimit};
131
        $fines_amount =
118
        $fines_msg .= " -- " . "Patron blocked by fines ($fines_amount) on related accounts" if $fine_blocked;
132
          $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}
119
    } elsif ($noissueschargeguarantees) {
133
          ->{charge};
134
        $fine_blocked =
135
          $patron_charge_limits->{NoIssuesChargeGuarantorsWithGuarantees}
136
          ->{overlimit};
137
        $fines_msg .= " -- "
138
          . "Patron blocked by fines ($fines_amount) on related accounts"
139
          if $fine_blocked;
140
    }
141
    elsif ($noissueschargeguarantees) {
120
        if ( $patron->guarantee_relationships->count ) {
142
        if ( $patron->guarantee_relationships->count ) {
121
            $fines_amount += $patron_charge_limits->{NoIssuesChargeGuarantees}->{charge};
143
            $fines_amount +=
122
            $fine_blocked = $patron_charge_limits->{NoIssuesChargeGuarantees}->{overlimit};
144
              $patron_charge_limits->{NoIssuesChargeGuarantees}->{charge};
123
            $fines_msg .= " -- " . "Patron blocked by fines ($fines_amount) on guaranteed accounts" if $fine_blocked;
145
            $fine_blocked =
146
              $patron_charge_limits->{NoIssuesChargeGuarantees}->{overlimit};
147
            $fines_msg .= " -- "
148
              . "Patron blocked by fines ($fines_amount) on guaranteed accounts"
149
              if $fine_blocked;
124
        }
150
        }
125
    }
151
    }
126
152
127
    # Get currency 3 chars max
153
    # Get currency 3 chars max
128
    my $currency = substr Koha::Acquisition::Currencies->get_active->currency, 0, 3;
154
    my $currency = substr Koha::Acquisition::Currencies->get_active->currency,
155
      0, 3;
129
156
130
    my $circ_blocked =( C4::Context->preference('OverduesBlockCirc') ne "noblock" &&  defined $flags->{ODUES}->{itemlist} ) ? 1 : 0;
157
    my $circ_blocked =
158
      ( C4::Context->preference('OverduesBlockCirc') ne "noblock"
159
          && defined $flags->{ODUES}->{itemlist} ) ? 1 : 0;
131
    {
160
    {
132
    no warnings;    # any of these $kp->{fields} being concat'd could be undef
161
        no warnings;  # any of these $kp->{fields} being concat'd could be undef
133
    %ilspatron = (
162
        %ilspatron = (
134
        name => $kp->{firstname} . " " . $kp->{surname},
163
            name => $kp->{firstname} . " " . $kp->{surname},
135
        id   => $kp->{cardnumber},    # to SIP, the id is the BARCODE, not userid
164
            id => $kp->{cardnumber}, # to SIP, the id is the BARCODE, not userid
136
        password        => $pw,
165
            password       => $pw,
137
        ptype           => $kp->{categorycode},     # 'A'dult.  Whatever.
166
            ptype          => $kp->{categorycode},    # 'A'dult.  Whatever.
138
        dateexpiry      => $dexpiry,
167
            dateexpiry     => $dexpiry,
139
        dateexpiry_iso  => $kp->{dateexpiry},
168
            dateexpiry_iso => $kp->{dateexpiry},
140
        birthdate       => $dob,
169
            birthdate      => $dob,
141
        birthdate_iso   => $kp->{dateofbirth},
170
            birthdate_iso  => $kp->{dateofbirth},
142
        branchcode      => $kp->{branchcode},
171
            branchcode     => $kp->{branchcode},
143
        library_name    => "",                      # only populated if needed, cached here
172
            library_name   => "",    # only populated if needed, cached here
144
        borrowernumber  => $kp->{borrowernumber},
173
            borrowernumber => $kp->{borrowernumber},
145
        address         => $adr,
174
            address        => $adr,
146
        home_phone      => $kp->{phone},
175
            home_phone     => $kp->{phone},
147
        email_addr      => $kp->{email},
176
            email_addr     => $kp->{email},
148
        charge_ok       => ( !$debarred && !$expired && !$fine_blocked && !$circ_blocked),
177
            charge_ok      => (
149
        renew_ok        => ( !$debarred && !$expired && !$fine_blocked),
178
                !$debarred && !$expired && !$fine_blocked && !$circ_blocked
150
        recall_ok       => ( !$debarred && !$expired && !$fine_blocked),
179
            ),
151
        hold_ok         => ( !$debarred && !$expired && !$fine_blocked),
180
            renew_ok  => ( !$debarred && !$expired && !$fine_blocked ),
152
        card_lost       => ( $kp->{lost} || $kp->{gonenoaddress} || $flags->{LOST} ),
181
            recall_ok => ( !$debarred && !$expired && !$fine_blocked ),
153
        claims_returned => 0,
182
            hold_ok   => ( !$debarred && !$expired && !$fine_blocked ),
154
        fines           => $personal_fines_amount,
183
            card_lost =>
155
        fees            => 0,             # currently not distinct from fines
184
              ( $kp->{lost} || $kp->{gonenoaddress} || $flags->{LOST} ),
156
        recall_overdue  => 0,
185
            claims_returned => 0,
157
        items_billed    => 0,
186
            fines           => $personal_fines_amount,
158
        screen_msg      => 'Greetings from Koha. ' . $kp->{opacnote} . $fines_msg,
187
            fees            => 0,    # currently not distinct from fines
159
        print_line      => '',
188
            recall_overdue  => 0,
160
        items           => [],
189
            items_billed    => 0,
161
        hold_items      => $flags->{WAITING}->{itemlist},
190
            screen_msg      => 'Greetings from Koha. '
162
        overdue_items   => $flags->{ODUES}->{itemlist},
191
              . $kp->{opacnote}
163
        too_many_overdue => $circ_blocked,
192
              . $fines_msg,
164
        fine_items      => [],
193
            print_line       => '',
165
        recall_items    => [],
194
            items            => [],
166
        unavail_holds   => [],
195
            hold_items       => $flags->{WAITING}->{itemlist},
167
        inet            => ( !$debarred && !$expired ),
196
            overdue_items    => $flags->{ODUES}->{itemlist},
168
        debarred        => $debarred,
197
            too_many_overdue => $circ_blocked,
169
        expired         => $expired,
198
            fine_items       => [],
170
        fine_blocked    => $fine_blocked,
199
            recall_items     => [],
171
        fee_limit       => $fee_limit,
200
            unavail_holds    => [],
172
        userid          => $kp->{userid},
201
            inet             => ( !$debarred && !$expired ),
173
        currency        => $currency,
202
            debarred         => $debarred,
174
    );
203
            expired          => $expired,
204
            fine_blocked     => $fine_blocked,
205
            fee_limit        => $fee_limit,
206
            userid           => $kp->{userid},
207
            currency         => $currency,
208
        );
175
    }
209
    }
176
210
177
    if ( $patron->is_debarred and $patron->debarredcomment ) {
211
    if ( $patron->is_debarred and $patron->debarredcomment ) {
178
        $ilspatron{screen_msg} .= " -- " . $patron->debarredcomment;
212
        $ilspatron{screen_msg} .= " -- " . $patron->debarredcomment;
179
    }
213
    }
180
214
181
    if ( $circ_blocked ) {
215
    if ($circ_blocked) {
182
        $ilspatron{screen_msg} .= " -- " . "Patron has overdues";
216
        $ilspatron{screen_msg} .= " -- " . "Patron has overdues";
183
    }
217
    }
184
218
185
    for (qw(EXPIRED CHARGES CREDITS GNA LOST NOTES)) {
219
    for (qw(EXPIRED CHARGES CREDITS GNA LOST NOTES)) {
186
        ($flags->{$_}) or next;
220
        ( $flags->{$_} ) or next;
187
        if ($_ ne 'NOTES' and $flags->{$_}->{message}) {
221
        if ( $_ ne 'NOTES' and $flags->{$_}->{message} ) {
188
            $ilspatron{screen_msg} .= " -- " . $flags->{$_}->{message};  # show all but internal NOTES
222
            $ilspatron{screen_msg} .=
223
              " -- " . $flags->{$_}->{message};    # show all but internal NOTES
189
        }
224
        }
190
        if ($flags->{$_}->{noissues}) {
225
        if ( $flags->{$_}->{noissues} ) {
191
            foreach my $toggle (qw(charge_ok renew_ok recall_ok hold_ok inet)) {
226
            foreach my $toggle (qw(charge_ok renew_ok recall_ok hold_ok inet)) {
192
                $ilspatron{$toggle} = 0;    # if we get noissues, disable everything
227
                $ilspatron{$toggle} =
228
                  0;    # if we get noissues, disable everything
193
            }
229
            }
194
        }
230
        }
195
    }
231
    }
Lines 203-227 sub new { Link Here
203
        );
239
        );
204
        my @messages_array;
240
        my @messages_array;
205
        while ( my $message = $patron_messages->next ) {
241
        while ( my $message = $patron_messages->next ) {
206
            my $messagedt      = dt_from_string( $message->message_date, 'iso' );
242
            my $messagedt = dt_from_string( $message->message_date, 'iso' );
207
            my $formatted_date = output_pref( { dt => $messagedt, dateonly => 1 } );
243
            my $formatted_date =
244
              output_pref( { dt => $messagedt, dateonly => 1 } );
208
            push @messages_array, $formatted_date . ": " . $message->message;
245
            push @messages_array, $formatted_date . ": " . $message->message;
209
        }
246
        }
210
        if (@messages_array) {
247
        if (@messages_array) {
211
            $ilspatron{screen_msg} .= " Messages for you: " . join( ' / ', @messages_array );
248
            $ilspatron{screen_msg} .=
249
              " Messages for you: " . join( ' / ', @messages_array );
212
        }
250
        }
213
    }
251
    }
214
252
215
    # FIXME: populate recall_items
253
    # FIXME: populate recall_items
216
    $ilspatron{unavail_holds} = _get_outstanding_holds($kp->{borrowernumber});
254
    $ilspatron{unavail_holds} = _get_outstanding_holds( $kp->{borrowernumber} );
217
255
218
    # fine items
256
    # fine items
219
    my $debits = $patron->account->outstanding_debits;
257
    my $debits = $patron->account->outstanding_debits;
220
    my @fine_items;
258
    my @fine_items;
221
    while ( my $debit = $debits->next ) {
259
    while ( my $debit = $debits->next ) {
222
        push @fine_items, { account_line => sprintf '%s %.02f', $debit->description, $debit->amountoutstanding };
260
        push @fine_items,
261
          {
262
            account_line => sprintf '%s %.02f',
263
            $debit->description, $debit->amountoutstanding
264
          };
223
    }
265
    }
224
    $ilspatron{fine_items} =\@fine_items;
266
    $ilspatron{fine_items} = \@fine_items;
225
267
226
    my $pending_checkouts = $patron->pending_checkouts;
268
    my $pending_checkouts = $patron->pending_checkouts;
227
    my @barcodes;
269
    my @barcodes;
Lines 231-278 sub new { Link Here
231
    $ilspatron{items} = \@barcodes;
273
    $ilspatron{items} = \@barcodes;
232
274
233
    $self = \%ilspatron;
275
    $self = \%ilspatron;
234
    siplog("LOG_DEBUG", "new ILS::Patron(%s): found patron '%s'", $patron_id,$self->{id});
276
    siplog( "LOG_DEBUG", "new ILS::Patron(%s): found patron '%s'",
277
        $patron_id, $self->{id} );
235
    bless $self, $type;
278
    bless $self, $type;
236
    return $self;
279
    return $self;
237
}
280
}
238
281
239
240
# 0 means read-only
282
# 0 means read-only
241
# 1 means read/write
283
# 1 means read/write
242
284
243
my %fields = (
285
my %fields = (
244
    id                      => 0,
286
    id                    => 0,
245
    borrowernumber          => 0,
287
    borrowernumber        => 0,
246
    name                    => 0,
288
    name                  => 0,
247
    address                 => 0,
289
    address               => 0,
248
    email_addr              => 0,
290
    email_addr            => 0,
249
    home_phone              => 0,
291
    home_phone            => 0,
250
    birthdate               => 0,
292
    birthdate             => 0,
251
    birthdate_iso           => 0,
293
    birthdate_iso         => 0,
252
    dateexpiry              => 0,
294
    dateexpiry            => 0,
253
    dateexpiry_iso          => 0,
295
    dateexpiry_iso        => 0,
254
    debarred                => 0,
296
    debarred              => 0,
255
    fine_blocked            => 0,
297
    fine_blocked          => 0,
256
    ptype                   => 0,
298
    ptype                 => 0,
257
    charge_ok               => 0,   # for patron_status[0] (inverted)
299
    charge_ok             => 0,    # for patron_status[0] (inverted)
258
    renew_ok                => 0,   # for patron_status[1] (inverted)
300
    renew_ok              => 0,    # for patron_status[1] (inverted)
259
    recall_ok               => 0,   # for patron_status[2] (inverted)
301
    recall_ok             => 0,    # for patron_status[2] (inverted)
260
    hold_ok                 => 0,   # for patron_status[3] (inverted)
302
    hold_ok               => 0,    # for patron_status[3] (inverted)
261
    card_lost               => 0,   # for patron_status[4]
303
    card_lost             => 0,    # for patron_status[4]
262
    recall_overdue          => 0,
304
    recall_overdue        => 0,
263
    currency                => 1,
305
    currency              => 1,
264
    fee_limit               => 0,
306
    fee_limit             => 0,
265
    screen_msg              => 1,
307
    screen_msg            => 1,
266
    print_line              => 1,
308
    print_line            => 1,
267
    too_many_charged        => 0,   # for patron_status[5]
309
    too_many_charged      => 0,    # for patron_status[5]
268
    too_many_overdue        => 0,   # for patron_status[6]
310
    too_many_overdue      => 0,    # for patron_status[6]
269
    too_many_renewal        => 0,   # for patron_status[7]
311
    too_many_renewal      => 0,    # for patron_status[7]
270
    too_many_claim_return   => 0,   # for patron_status[8]
312
    too_many_claim_return => 0,    # for patron_status[8]
271
#   excessive_fines         => 0,   # for patron_status[10]
313
272
#   excessive_fees          => 0,   # for patron_status[11]
314
    #   excessive_fines         => 0,   # for patron_status[10]
273
    recall_overdue          => 0,   # for patron_status[12]
315
    #   excessive_fees          => 0,   # for patron_status[11]
274
    too_many_billed         => 0,   # for patron_status[13]
316
    recall_overdue  => 0,    # for patron_status[12]
275
    inet                    => 0,   # EnvisionWare extension
317
    too_many_billed => 0,    # for patron_status[13]
318
    inet            => 0,    # EnvisionWare extension
276
);
319
);
277
320
278
our $AUTOLOAD;
321
our $AUTOLOAD;
Lines 401-430 sub drop_hold { Link Here
401
sub x_items {
444
sub x_items {
402
    my $self      = shift;
445
    my $self      = shift;
403
    my $array_var = shift or return;
446
    my $array_var = shift or return;
404
    my ($start, $end) = @_;
447
    my ( $start, $end ) = @_;
405
448
406
    my $item_list = [];
449
    my $item_list = [];
407
    if ($self->{$array_var}) {
450
    if ( $self->{$array_var} ) {
408
451
409
        if ($start && $start > 1) {
452
        if ( $start && $start > 1 ) {
410
            --$start;
453
            --$start;
411
        }
454
        }
412
        else {
455
        else {
413
            $start = 0;
456
            $start = 0;
414
        }
457
        }
415
        if ( $end && $end < @{$self->{$array_var}} ) {
458
        if ( $end && $end < @{ $self->{$array_var} } ) {
416
          --$end;
459
            --$end;
417
        }
460
        }
418
        else {
461
        else {
419
            $end = @{$self->{$array_var}};
462
            $end = @{ $self->{$array_var} };
420
            --$end;
463
            --$end;
421
        }
464
        }
422
        @{$item_list} = @{$self->{$array_var}}[ $start .. $end ];
465
        @{$item_list} = @{ $self->{$array_var} }[ $start .. $end ];
423
466
424
    }
467
    }
425
    return $item_list;
468
    return $item_list;
426
}
469
}
427
470
471
428
#
472
#
429
# List of outstanding holds placed
473
# List of outstanding holds placed
430
#
474
#
Lines 440-464 sub hold_items { Link Here
440
484
441
sub overdue_items {
485
sub overdue_items {
442
    my $self = shift;
486
    my $self = shift;
443
    return $self->x_items('overdue_items', @_);
487
    return $self->x_items( 'overdue_items', @_ );
444
}
488
}
489
445
sub charged_items {
490
sub charged_items {
446
    my $self = shift;
491
    my $self = shift;
447
    return $self->x_items('items', @_);
492
    return $self->x_items( 'items', @_ );
448
}
493
}
494
449
sub fine_items {
495
sub fine_items {
450
    my $self = shift;
496
    my $self = shift;
451
    return $self->x_items('fine_items', @_);
497
    return $self->x_items( 'fine_items', @_ );
452
}
498
}
499
453
sub recall_items {
500
sub recall_items {
454
    my $self = shift;
501
    my $self = shift;
455
    return $self->x_items('recall_items', @_);
502
    return $self->x_items( 'recall_items', @_ );
456
}
503
}
504
457
sub unavail_holds {
505
sub unavail_holds {
458
    my $self = shift;
506
    my $self = shift;
459
    return $self->x_items('unavail_holds', @_);
507
    return $self->x_items( 'unavail_holds', @_ );
460
}
508
}
461
509
510
462
sub block {
511
sub block {
463
    my ($self, $card_retained, $blocked_card_msg) = @_;
512
    my ($self, $card_retained, $blocked_card_msg) = @_;
464
    foreach my $field ('charge_ok', 'renew_ok', 'recall_ok', 'hold_ok', 'inet') {
513
    foreach my $field ('charge_ok', 'renew_ok', 'recall_ok', 'hold_ok', 'inet') {
(-)a/C4/SIP/Sip/MsgType.pm (-8 / +22 lines)
Lines 957-972 sub summary_info { Link Here
957
        { func => $patron->can("charged_items"), fid => FID_CHARGED_ITEMS },
957
        { func => $patron->can("charged_items"), fid => FID_CHARGED_ITEMS },
958
        { func => $patron->can("fine_items"),    fid => FID_FINE_ITEMS },
958
        { func => $patron->can("fine_items"),    fid => FID_FINE_ITEMS },
959
        { func => $patron->can("recall_items"),  fid => FID_RECALL_ITEMS },
959
        { func => $patron->can("recall_items"),  fid => FID_RECALL_ITEMS },
960
        { func => $patron->can("unavail_holds"), fid => FID_UNAVAILABLE_HOLD_ITEMS },
960
        {
961
        { func => $patron->can("fine_items"),    fid => FID_FINE_ITEMS },
961
            func => $patron->can("unavail_holds"),
962
            fid  => FID_UNAVAILABLE_HOLD_ITEMS
963
        },
964
        { func => $patron->can("fine_items"), fid => FID_FINE_ITEMS },
962
    );
965
    );
963
966
964
    my $summary_type = index( $summary, 'Y' );
967
    my $summary_type = index( $summary, 'Y' );
965
    return q{} if $summary_type == -1;    # No detailed information required.
968
    return q{} if $summary_type == -1;    # No detailed information required.
966
    return q{} if $summary_type > 6;      # Positions 7-9 are not defined in the sip spec,
969
    return q{}
967
                                          # and we have no extensions to handle them.
970
      if $summary_type > 6;    # Positions 7-9 are not defined in the sip spec,
971
                               # and we have no extensions to handle them.
968
972
969
    siplog( "LOG_DEBUG", "Summary_info: index == '%d', field '%s'", $summary_type, $summary_map[$summary_type]->{fid} );
973
    siplog(
974
        "LOG_DEBUG",   "Summary_info: index == '%d', field '%s'",
975
        $summary_type, $summary_map[$summary_type]->{fid}
976
    );
970
977
971
    my $func     = $summary_map[$summary_type]->{func};
978
    my $func     = $summary_map[$summary_type]->{func};
972
    my $fid      = $summary_map[$summary_type]->{fid};
979
    my $fid      = $summary_map[$summary_type]->{fid};
Lines 974-986 sub summary_info { Link Here
974
981
975
    # fine items use account_line as key
982
    # fine items use account_line as key
976
    if ( $summary_type == 6 ) {
983
    if ( $summary_type == 6 ) {
977
        siplog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map { $_->{account_line} } @{$itemlist} ) );
984
        siplog(
985
            "LOG_DEBUG",
986
            "summary_info: list = (%s)",
987
            join( ", ", map { $_->{account_line} } @{$itemlist} )
988
        );
978
        foreach my $i ( @{$itemlist} ) {
989
        foreach my $i ( @{$itemlist} ) {
979
            $resp .= add_field( $fid, $i->{account_line}, $server );
990
            $resp .= add_field( $fid, $i->{account_line}, $server );
980
        }
991
        }
981
    }
992
    }
982
    else {
993
    else {
983
        siplog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map{ $_->{barcode} } @{$itemlist} ) );
994
        siplog(
995
            "LOG_DEBUG",
996
            "summary_info: list = (%s)",
997
            join( ", ", map { $_->{barcode} } @{$itemlist} )
998
        );
984
        foreach my $i ( @{$itemlist} ) {
999
        foreach my $i ( @{$itemlist} ) {
985
            $resp .= add_field( $fid, $i->{barcode}, $server );
1000
            $resp .= add_field( $fid, $i->{barcode}, $server );
986
        }
1001
        }
987
- 

Return to bug 23426