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') { |