|
Lines 93-99
if (defined C4::Context->preference('SCOAllowCheckin')) {
Link Here
|
| 93 |
} |
93 |
} |
| 94 |
|
94 |
|
| 95 |
my $issuerid = $loggedinuser; |
95 |
my $issuerid = $loggedinuser; |
| 96 |
my ($op, $patronlogin, $patronpw, $barcode, $confirmed, $newissues) = ( |
96 |
my ($op, $patronlogin, $patronpw, $barcodestr, $confirmed, $newissues) = ( |
| 97 |
$query->param("op") || '', |
97 |
$query->param("op") || '', |
| 98 |
$query->param("patronlogin")|| '', |
98 |
$query->param("patronlogin")|| '', |
| 99 |
$query->param("patronpw") || '', |
99 |
$query->param("patronpw") || '', |
|
Lines 109-115
if ($op eq "logout") {
Link Here
|
| 109 |
undef $jwt; |
109 |
undef $jwt; |
| 110 |
} |
110 |
} |
| 111 |
|
111 |
|
| 112 |
$barcode = barcodedecode( $barcode ) if $barcode; |
112 |
my $barcodes = []; |
|
|
113 |
if ( $barcodestr ) { |
| 114 |
push @$barcodes, split( /\s\n/, $barcodestr ); |
| 115 |
$barcodes = [ map { $_ =~ /^\s*$/ ? () : barcodedecode( $_ ) } @$barcodes ]; |
| 116 |
} |
| 113 |
|
117 |
|
| 114 |
my @newissueslist = split /,/, $newissues; |
118 |
my @newissueslist = split /,/, $newissues; |
| 115 |
my $issuenoconfirm = 1; #don't need to confirm on issue. |
119 |
my $issuenoconfirm = 1; #don't need to confirm on issue. |
|
Lines 139-148
my $branch = $issuer->{branchcode};
Link Here
|
| 139 |
my $confirm_required = 0; |
143 |
my $confirm_required = 0; |
| 140 |
my $return_only = 0; |
144 |
my $return_only = 0; |
| 141 |
|
145 |
|
|
|
146 |
if ( C4::Context->preference('BatchCheckouts') ) { |
| 147 |
my @batch_category_codes = split ',', C4::Context->preference('BatchCheckoutsValidCategories'); |
| 148 |
my $categorycode = $issuer->{categorycode}; |
| 149 |
if ( $categorycode && grep { $_ eq $categorycode } @batch_category_codes ) { |
| 150 |
# do nothing - logged in patron is allowed to do batch checkouts |
| 151 |
} else { |
| 152 |
# patron category not allowed to do batch checkouts, only allow first barcode |
| 153 |
while ( scalar @$barcodes > 1 ) { |
| 154 |
pop @$barcodes; |
| 155 |
} |
| 156 |
} |
| 157 |
} else { |
| 158 |
# batch checkouts not enabled, only allow first barcode |
| 159 |
while ( scalar @$barcodes > 1 ) { |
| 160 |
pop @$barcodes; |
| 161 |
} |
| 162 |
} |
| 163 |
|
| 142 |
if ( $patron && $op eq "returnbook" && $allowselfcheckreturns ) { |
164 |
if ( $patron && $op eq "returnbook" && $allowselfcheckreturns ) { |
| 143 |
my $success = 1; |
165 |
my $success = 1; |
| 144 |
|
166 |
|
| 145 |
|
167 |
foreach my $barcode ( @$barcodes ) { |
| 146 |
my $item = Koha::Items->find( { barcode => $barcode } ); |
168 |
my $item = Koha::Items->find( { barcode => $barcode } ); |
| 147 |
if ( $success && C4::Context->preference("CircConfirmItemParts") ) { |
169 |
if ( $success && C4::Context->preference("CircConfirmItemParts") ) { |
| 148 |
if ( defined($item) |
170 |
if ( defined($item) |
|
Lines 162-171
if ( $patron && $op eq "returnbook" && $allowselfcheckreturns ) {
Link Here
|
| 162 |
($success) = AddReturn( $barcode, $branch ) |
184 |
($success) = AddReturn( $barcode, $branch ) |
| 163 |
} |
185 |
} |
| 164 |
|
186 |
|
| 165 |
$template->param( returned => $success ); |
187 |
$template->param( |
|
|
188 |
returned => $success, |
| 189 |
barcode => $barcode |
| 190 |
); |
| 191 |
} # foreach barcode in barcodes |
| 166 |
} |
192 |
} |
| 167 |
elsif ( $patron && ( $op eq 'checkout' ) ) { |
193 |
elsif ( $patron && ( $op eq 'checkout' ) ) { |
| 168 |
|
194 |
foreach my $barcode ( @$barcodes ) { |
| 169 |
my $item = Koha::Items->find( { barcode => $barcode } ); |
195 |
my $item = Koha::Items->find( { barcode => $barcode } ); |
| 170 |
my $impossible = {}; |
196 |
my $impossible = {}; |
| 171 |
my $needconfirm = {}; |
197 |
my $needconfirm = {}; |
|
Lines 208-221
elsif ( $patron && ( $op eq 'checkout' ) ) {
Link Here
|
| 208 |
barcode => $barcode, |
234 |
barcode => $barcode, |
| 209 |
); |
235 |
); |
| 210 |
} |
236 |
} |
|
|
237 |
last; |
| 211 |
} elsif ( $needconfirm->{RENEW_ISSUE} ){ |
238 |
} elsif ( $needconfirm->{RENEW_ISSUE} ){ |
| 212 |
$template->param( |
239 |
$template->param( |
| 213 |
renew => 1, |
240 |
renew => 1, |
| 214 |
barcode => $barcode, |
241 |
barcode => $barcode, |
| 215 |
confirm => 1, |
242 |
confirm => $item->biblio->title, |
| 216 |
confirm_renew_issue => 1, |
243 |
confirm_renew_issue => 1, |
| 217 |
hide_main => 1, |
244 |
hide_main => 1, |
| 218 |
); |
245 |
); |
|
|
246 |
last; |
| 219 |
} elsif ( $confirm_required && !$confirmed ) { |
247 |
} elsif ( $confirm_required && !$confirmed ) { |
| 220 |
$template->param( |
248 |
$template->param( |
| 221 |
impossible => 1, |
249 |
impossible => 1, |
|
Lines 225-230
elsif ( $patron && ( $op eq 'checkout' ) ) {
Link Here
|
| 225 |
if ($issue_error eq 'DEBT') { |
253 |
if ($issue_error eq 'DEBT') { |
| 226 |
$template->param(DEBT => $needconfirm->{DEBT}); |
254 |
$template->param(DEBT => $needconfirm->{DEBT}); |
| 227 |
} |
255 |
} |
|
|
256 |
last; |
| 228 |
} else { |
257 |
} else { |
| 229 |
if ( $confirmed || $issuenoconfirm ) { # we'll want to call getpatroninfo again to get updated issues. |
258 |
if ( $confirmed || $issuenoconfirm ) { # we'll want to call getpatroninfo again to get updated issues. |
| 230 |
my ( $hold_existed, $item ); |
259 |
my ( $hold_existed, $item ); |
|
Lines 247-253
elsif ( $patron && ( $op eq 'checkout' ) ) {
Link Here
|
| 247 |
|
276 |
|
| 248 |
AddIssue( $patron, $barcode ); |
277 |
AddIssue( $patron, $barcode ); |
| 249 |
$template->param( issued => 1 ); |
278 |
$template->param( issued => 1 ); |
| 250 |
push @newissueslist, $barcode; |
279 |
push @newissueslist, $barcode unless ( grep /^$barcode$/, @newissueslist ); |
| 251 |
|
280 |
|
| 252 |
if ( $hold_existed ) { |
281 |
if ( $hold_existed ) { |
| 253 |
my $dtf = Koha::Database->new->schema->storage->datetime_parser; |
282 |
my $dtf = Koha::Database->new->schema->storage->datetime_parser; |
|
Lines 273-281
elsif ( $patron && ( $op eq 'checkout' ) ) {
Link Here
|
| 273 |
); |
302 |
); |
| 274 |
} |
303 |
} |
| 275 |
} |
304 |
} |
|
|
305 |
} # foreach barcode in barcodes |
| 276 |
} # $op |
306 |
} # $op |
| 277 |
|
307 |
|
| 278 |
if ( $patron && ( $op eq 'renew' ) ) { |
308 |
if ( $patron && ( $op eq 'renew' ) ) { |
|
|
309 |
foreach my $barcode ( @$barcodes ) { |
| 279 |
my $item = Koha::Items->find({ barcode => $barcode }); |
310 |
my $item = Koha::Items->find({ barcode => $barcode }); |
| 280 |
|
311 |
|
| 281 |
if ( $patron->checkouts->find( { itemnumber => $item->itemnumber } ) ) { |
312 |
if ( $patron->checkouts->find( { itemnumber => $item->itemnumber } ) ) { |
|
Lines 289-299
if ( $patron && ( $op eq 'renew' ) ) {
Link Here
|
| 289 |
} |
320 |
} |
| 290 |
); |
321 |
); |
| 291 |
push @newissueslist, $barcode; |
322 |
push @newissueslist, $barcode; |
| 292 |
$template->param( renewed => 1 ); |
323 |
$template->param( |
|
|
324 |
renewed => 1, |
| 325 |
barcode => $barcode |
| 326 |
); |
| 293 |
} |
327 |
} |
| 294 |
} else { |
328 |
} else { |
| 295 |
$template->param( renewed => 0 ); |
329 |
$template->param( renewed => 0 ); |
| 296 |
} |
330 |
} |
|
|
331 |
} # foreach barcode in barcodes |
| 297 |
} |
332 |
} |
| 298 |
|
333 |
|
| 299 |
if ( $patron) { |
334 |
if ( $patron) { |
| 300 |
- |
|
|