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