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

(-)a/C4/Circulation.pm (-8 / +104 lines)
Lines 22-27 use Modern::Perl; Link Here
22
use DateTime;
22
use DateTime;
23
use POSIX qw( floor );
23
use POSIX qw( floor );
24
use Encode;
24
use Encode;
25
use JSON;
25
26
26
use C4::Context;
27
use C4::Context;
27
use C4::Stats qw( UpdateStats );
28
use C4::Stats qw( UpdateStats );
Lines 317-322 A recall for this item was found, and the item needs to be transferred to the re Link Here
317
318
318
=cut
319
=cut
319
320
321
my $query = CGI->new;
322
323
my $stickyduedate      = $query->param('stickyduedate');
324
my $duedatespec        = $query->param('duedatespec');
325
my $restoreduedatespec = $query->param('restoreduedatespec') || $duedatespec;
326
if ( $restoreduedatespec && $restoreduedatespec eq "highholds_empty" ) {
327
    undef $restoreduedatespec;
328
}
329
my $issueconfirmed = $query->param('issueconfirmed');
330
my $cancelreserve  = $query->param('cancelreserve');
331
my $cancel_recall  = $query->param('cancel_recall');
332
my $recall_id      = $query->param('recall_id');
333
my $debt_confirmed = $query->param('debt_confirmed') || 0;     # Don't show the debt error dialog twice
334
my $charges        = $query->param('charges')        || q{};
335
320
sub transferbook {
336
sub transferbook {
321
    my $params = shift;
337
    my $params = shift;
322
    my $tbr      = $params->{to_branch};
338
    my $tbr      = $params->{to_branch};
Lines 803-811 sub CanBookBeIssued { Link Here
803
819
804
    my $now = dt_from_string();
820
    my $now = dt_from_string();
805
    my $message;
821
    my $message;
822
<<<<<<< HEAD
806
    my @message_log;
823
    my @message_log;
824
=======
825
    my @message;
826
>>>>>>> Bug 9762: Log circulation overrides
807
827
808
    $duedate ||= CalcDateDue( $now, $effective_itemtype, $circ_library->branchcode, $patron );
828
    $duedate ||= CalcDateDue( $now, $effective_itemtype, $circ_library->branchcode, $patron );
829
809
    if (DateTime->compare($duedate,$now) == -1 ) { # duedate cannot be before now
830
    if (DateTime->compare($duedate,$now) == -1 ) { # duedate cannot be before now
810
         $needsconfirmation{INVALID_DATE} = $duedate;
831
         $needsconfirmation{INVALID_DATE} = $duedate;
811
        if ($issueconfirmed) {
832
        if ($issueconfirmed) {
Lines 814-820 sub CanBookBeIssued { Link Here
814
            } else {
835
            } else {
815
                $message = "sticky due date is invalid or due date in the past";
836
                $message = "sticky due date is invalid or due date in the past";
816
            }
837
            }
838
<<<<<<< HEAD
817
            push( @message_log, "sticky due date is invalid or due date in the past" );
839
            push( @message_log, "sticky due date is invalid or due date in the past" );
840
=======
841
            push( @message, "sticky due date is invalid or due date in the past" );
842
>>>>>>> Bug 9762: Log circulation overrides
818
        }
843
        }
819
844
820
    }
845
    }
Lines 867-873 sub CanBookBeIssued { Link Here
867
            } else {
892
            } else {
868
                $message = "borrower is restricted";
893
                $message = "borrower is restricted";
869
            }
894
            }
895
<<<<<<< HEAD
870
            push( @message_log, "borrower is restricted" );
896
            push( @message_log, "borrower is restricted" );
897
=======
898
            push( @message, "borrower is restricted" );
899
>>>>>>> Bug 9762: Log circulation overrides
871
        }
900
        }
872
    }
901
    }
873
902
Lines 947-953 sub CanBookBeIssued { Link Here
947
                } else {
976
                } else {
948
                    $message = "borrower had amend";
977
                    $message = "borrower had amend";
949
                }
978
                }
979
<<<<<<< HEAD
950
                push( @message_log, "borrower had amend" );
980
                push( @message_log, "borrower had amend" );
981
=======
982
                push( @message, "borrower had amend" );
983
>>>>>>> Bug 9762: Log circulation overrides
951
            }
984
            }
952
        } elsif ( $patron_borrowing_status->{noissuescharge}->{overlimit} && !$allowfineoverride ) {
985
        } elsif ( $patron_borrowing_status->{noissuescharge}->{overlimit} && !$allowfineoverride ) {
953
            $issuingimpossible{DEBT} = $patron_borrowing_status->{noissuescharge}->{charge};
986
            $issuingimpossible{DEBT} = $patron_borrowing_status->{noissuescharge}->{charge};
Lines 959-965 sub CanBookBeIssued { Link Here
959
                } else {
992
                } else {
960
                    $message = "borrower had amend";
993
                    $message = "borrower had amend";
961
                }
994
                }
995
<<<<<<< HEAD
962
                push( @message_log, "borrower had amend" );
996
                push( @message_log, "borrower had amend" );
997
=======
998
                push( @message, "borrower had amend" );
999
>>>>>>> Bug 9762: Log circulation overrides
963
            }
1000
            }
964
        }
1001
        }
965
    }
1002
    }
Lines 1038-1045 sub CanBookBeIssued { Link Here
1038
        } else {
1075
        } else {
1039
            if ( C4::Context->preference('AutoReturnCheckedOutItems') ) {
1076
            if ( C4::Context->preference('AutoReturnCheckedOutItems') ) {
1040
                $alerts{RETURNED_FROM_ANOTHER} = { patron => $patron };
1077
                $alerts{RETURNED_FROM_ANOTHER} = { patron => $patron };
1041
            }
1078
            } else {
1042
            else {
1043
                $needsconfirmation{ISSUED_TO_ANOTHER} = 1;
1079
                $needsconfirmation{ISSUED_TO_ANOTHER} = 1;
1044
                $needsconfirmation{issued_firstname} = $patron->firstname;
1080
                $needsconfirmation{issued_firstname} = $patron->firstname;
1045
                $needsconfirmation{issued_surname} = $patron->surname;
1081
                $needsconfirmation{issued_surname} = $patron->surname;
Lines 1051-1057 sub CanBookBeIssued { Link Here
1051
                    } else {
1087
                    } else {
1052
                        $message = "item is checked out for someone else";
1088
                        $message = "item is checked out for someone else";
1053
                    }
1089
                    }
1090
<<<<<<< HEAD
1054
                    push( @message_log, "item is checked out for someone else" );
1091
                    push( @message_log, "item is checked out for someone else" );
1092
=======
1093
                    push( @message, "item is checked out for someone else" );
1094
>>>>>>> Bug 9762: Log circulation overrides
1055
                }
1095
                }
1056
            }
1096
            }
1057
        }
1097
        }
Lines 1082-1088 sub CanBookBeIssued { Link Here
1082
                } else {
1122
                } else {
1083
                    $message = "too many checkout";
1123
                    $message = "too many checkout";
1084
                }
1124
                }
1125
<<<<<<< HEAD
1085
                push( @message_log, "too many checkout" );
1126
                push( @message_log, "too many checkout" );
1127
=======
1128
                push( @message, "too many checkout" );
1129
>>>>>>> Bug 9762: Log circulation overrides
1086
            }
1130
            }
1087
        } else {
1131
        } else {
1088
            $issuingimpossible{TOO_MANY}                  = $toomany->{reason};
1132
            $issuingimpossible{TOO_MANY}                  = $toomany->{reason};
Lines 1117-1123 sub CanBookBeIssued { Link Here
1117
                } else {
1161
                } else {
1118
                    $message = "item not for loan";
1162
                    $message = "item not for loan";
1119
                }
1163
                }
1164
<<<<<<< HEAD
1120
                push( @message_log, "item not for loan" );
1165
                push( @message_log, "item not for loan" );
1166
=======
1167
                push( @message, "item not for loan" );
1168
>>>>>>> Bug 9762: Log circulation overrides
1121
            }
1169
            }
1122
        }
1170
        }
1123
    }
1171
    }
Lines 1171-1177 sub CanBookBeIssued { Link Here
1171
            } else {
1219
            } else {
1172
                $message = "item lost";
1220
                $message = "item lost";
1173
            }
1221
            }
1222
<<<<<<< HEAD
1174
            push( @message_log, "item lost" );
1223
            push( @message_log, "item lost" );
1224
=======
1225
            push( @message, "item lost" );
1226
>>>>>>> Bug 9762: Log circulation overrides
1175
        }
1227
        }
1176
    }
1228
    }
1177
    if ( C4::Context->preference("IndependentBranches") ) {
1229
    if ( C4::Context->preference("IndependentBranches") ) {
Lines 1276-1285 sub CanBookBeIssued { Link Here
1276
                        } else {
1328
                        } else {
1277
                            $message = "item is on reserve and waiting, but has been reserved by some other patron.";
1329
                            $message = "item is on reserve and waiting, but has been reserved by some other patron.";
1278
                        }
1330
                        }
1331
<<<<<<< HEAD
1279
                        push(
1332
                        push(
1280
                            @message_log,
1333
                            @message_log,
1281
                            "item is on reserve and waiting, but has been reserved by some other patron"
1334
                            "item is on reserve and waiting, but has been reserved by some other patron"
1282
                        );
1335
                        );
1336
=======
1337
                        push( @message, "item is on reserve and waiting, but has been reserved by some other patron" );
1338
>>>>>>> Bug 9762: Log circulation overrides
1283
                    }
1339
                    }
1284
                }
1340
                }
1285
                elsif ( $restype eq "Reserved" ) {
1341
                elsif ( $restype eq "Reserved" ) {
Lines 1298-1304 sub CanBookBeIssued { Link Here
1298
                        } else {
1354
                        } else {
1299
                            $message = "item is on reserve for someone else";
1355
                            $message = "item is on reserve for someone else";
1300
                        }
1356
                        }
1357
<<<<<<< HEAD
1301
                        push( @message_log, "item is on reserve for someone else" );
1358
                        push( @message_log, "item is on reserve for someone else" );
1359
=======
1360
                        push( @message, "item is on reserve for someone else" );
1361
>>>>>>> Bug 9762: Log circulation overrides
1302
                    }
1362
                    }
1303
                }
1363
                }
1304
                elsif ( $restype eq "Transferred" ) {
1364
                elsif ( $restype eq "Transferred" ) {
Lines 1317-1323 sub CanBookBeIssued { Link Here
1317
                        } else {
1377
                        } else {
1318
                            $message = "item is determined hold being transferred for someone else";
1378
                            $message = "item is determined hold being transferred for someone else";
1319
                        }
1379
                        }
1380
<<<<<<< HEAD
1320
                        push( @message_log, "item is determined hold being transferred for someone else" );
1381
                        push( @message_log, "item is determined hold being transferred for someone else" );
1382
=======
1383
                        push( @message, "item is determined hold being transferred for someone else" );
1384
>>>>>>> Bug 9762: Log circulation overrides
1321
                    }
1385
                    }
1322
                }
1386
                }
1323
                elsif ( $restype eq "Processing" ) {
1387
                elsif ( $restype eq "Processing" ) {
Lines 1336-1342 sub CanBookBeIssued { Link Here
1336
                        } else {
1400
                        } else {
1337
                            $message = "item is determined hold being processed for someone else";
1401
                            $message = "item is determined hold being processed for someone else";
1338
                        }
1402
                        }
1403
<<<<<<< HEAD
1339
                        push( @message_log, "item is determined hold being processed for someone else" );
1404
                        push( @message_log, "item is determined hold being processed for someone else" );
1405
=======
1406
                        push( @message, "item is determined hold being processed for someone else" );
1407
>>>>>>> Bug 9762: Log circulation overrides
1340
                    }
1408
                    }
1341
                }
1409
                }
1342
            }
1410
            }
Lines 1386-1392 sub CanBookBeIssued { Link Here
1386
            } else {
1454
            } else {
1387
                $message = "age restriction";
1455
                $message = "age restriction";
1388
            }
1456
            }
1457
<<<<<<< HEAD
1389
            push( @message_log, "age restriction" );
1458
            push( @message_log, "age restriction" );
1459
=======
1460
            push( @message, "age restriction" );
1461
>>>>>>> Bug 9762: Log circulation overrides
1390
        }
1462
        }
1391
        else {
1463
        else {
1392
            $issuingimpossible{AGE_RESTRICTION} = "$agerestriction";
1464
            $issuingimpossible{AGE_RESTRICTION} = "$agerestriction";
Lines 1454-1460 sub CanBookBeIssued { Link Here
1454
1526
1455
        my $infos = (
1527
        my $infos = (
1456
            {
1528
            {
1529
<<<<<<< HEAD
1457
                message        => \@message_log,
1530
                message        => \@message_log,
1531
=======
1532
                message        => \@message,
1533
>>>>>>> Bug 9762: Log circulation overrides
1458
                borrowernumber => $borrower->borrowernumber,
1534
                borrowernumber => $borrower->borrowernumber,
1459
                barcode        => $barcode,
1535
                barcode        => $barcode,
1460
                manager_id     => $user,
1536
                manager_id     => $user,
Lines 1473-1479 sub CanBookBeIssued { Link Here
1473
    }
1549
    }
1474
1550
1475
1551
1552
<<<<<<< HEAD
1476
    return ( \%issuingimpossible, \%needsconfirmation, \%alerts, \%messages, \@message_log );
1553
    return ( \%issuingimpossible, \%needsconfirmation, \%alerts, \%messages, \@message_log );
1554
=======
1555
    return ( \%issuingimpossible, \%needsconfirmation, \%alerts, \%messages, );
1556
>>>>>>> Bug 9762: Log circulation overrides
1477
}
1557
}
1478
1558
1479
=head2 CanBookBeReturned
1559
=head2 CanBookBeReturned
Lines 2496-2504 sub AddReturn { Link Here
2496
            if ( $transfer->tobranch eq $branch ) {
2576
            if ( $transfer->tobranch eq $branch ) {
2497
                $transfer->receive;
2577
                $transfer->receive;
2498
                $messages->{'TransferArrived'} = $transfer->frombranch;
2578
                $messages->{'TransferArrived'} = $transfer->frombranch;
2579
2499
                # validTransfer=1 allows us returning the item back if the reserve is cancelled
2580
                # validTransfer=1 allows us returning the item back if the reserve is cancelled
2500
                $validTransfer = 1
2581
                $validTransfer = 1 if $transfer->reason eq 'Reserve';
2501
                  if defined $transfer->reason && $transfer->reason eq 'Reserve';
2502
            }
2582
            }
2503
            else {
2583
            else {
2504
                $messages->{'WrongTransfer'}     = $transfer->tobranch;
2584
                $messages->{'WrongTransfer'}     = $transfer->tobranch;
Lines 3226-3231 sub CanBookBeRenewed { Link Here
3226
    return ( 0, "on_reserve" )
3306
    return ( 0, "on_reserve" )
3227
      if ( $item->current_holds->search( { non_priority => 0 } )->count );
3307
      if ( $item->current_holds->search( { non_priority => 0 } )->count );
3228
3308
3309
    my $issuing_rule = Koha::CirculationRules->get_effective_rules(
3310
        {
3311
            categorycode => $patron->categorycode,
3312
            itemtype     => $item->effective_itemtype,
3313
            branchcode   => $branchcode,
3314
            rules        => [
3315
                'renewalsallowed',
3316
                'lengthunit',
3317
                'unseen_renewals_allowed'
3318
            ]
3319
        }
3320
    );
3321
3322
    return ( 0, "too_many" )
3323
        if not $issuing_rule->{renewalsallowed}
3324
        or $issuing_rule->{renewalsallowed} <= $issue->renewals_count;
3229
3325
3230
    my ( $status, $matched_reserve, $possible_holds ) = C4::Reserves::CheckReserves($item);
3326
    my ( $status, $matched_reserve, $possible_holds ) = C4::Reserves::CheckReserves($item);
3231
    my @fillable_holds = ();
3327
    my @fillable_holds = ();
Lines 3354-3361 fallback to a true value Link Here
3354
3450
3355
C<$automatic> is a boolean flag indicating the renewal was triggered automatically and not by a person ( librarian or patron )
3451
C<$automatic> is a boolean flag indicating the renewal was triggered automatically and not by a person ( librarian or patron )
3356
3452
3357
C<$skip_record_index> is an optional boolean flag to indicate whether queuing the search indexing
3453
C<$skip_record_index> is an optional boolean flag to indicate whether queuing the search indexing should be skipped for this renewal.
3358
should be skipped for this renewal.
3359
3454
3360
=cut
3455
=cut
3361
3456
Lines 3557-3565 sub AddRenewal { Link Here
3557
        });
3652
        });
3558
    });
3653
    });
3559
3654
3560
    unless( $skip_record_index ){
3655
    unless ($skip_record_index) {
3656
3561
        # We index now, after the transaction is committed
3657
        # We index now, after the transaction is committed
3562
        my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX });
3658
        my $indexer = Koha::SearchEngine::Indexer->new( { index => $Koha::SearchEngine::BIBLIOS_INDEX } );
3563
        $indexer->index_records( $item_object->biblionumber, "specialUpdate", "biblioserver" );
3659
        $indexer->index_records( $item_object->biblionumber, "specialUpdate", "biblioserver" );
3564
    }
3660
    }
3565
3661
(-)a/circ/circulation.pl (-6 / +44 lines)
Lines 36-44 use C4::Auth qw( get_session get_template_and_user ); Link Here
36
use C4::Koha;
36
use C4::Koha;
37
use C4::Circulation qw( barcodedecode CanBookBeIssued AddIssue AddReturn );
37
use C4::Circulation qw( barcodedecode CanBookBeIssued AddIssue AddReturn );
38
use C4::Members;
38
use C4::Members;
39
use C4::Biblio   qw( TransformMarcToKoha );
39
use C4::Biblio qw( TransformMarcToKoha );
40
use C4::Search   qw( new_record_from_zebra );
40
use C4::Search qw( new_record_from_zebra );
41
use C4::Reserves qw( ModReserveAffect );
41
use C4::Reserves;
42
use C4::Log qw( logaction );
42
use Koha::Holds;
43
use Koha::Holds;
43
use C4::Context;
44
use C4::Context;
44
use CGI::Session;
45
use CGI::Session;
Lines 239-245 if ( @$barcodes == 0 && $charges eq 'yes' ) { Link Here
239
# STEP 2 : FIND BORROWER
240
# STEP 2 : FIND BORROWER
240
# if there is a list of find borrowers....
241
# if there is a list of find borrowers....
241
#
242
#
242
my $message;
243
243
if ($findborrower) {
244
if ($findborrower) {
244
    Koha::Plugins->call( 'patron_barcode_transform', \$findborrower );
245
    Koha::Plugins->call( 'patron_barcode_transform', \$findborrower );
245
    my $patron = Koha::Patrons->find( { cardnumber => $findborrower } );
246
    my $patron = Koha::Patrons->find( { cardnumber => $findborrower } );
Lines 325-331 if ($patron) { Link Here
325
# STEP 3 : ISSUING
326
# STEP 3 : ISSUING
326
#
327
#
327
#
328
#
328
if ( @$barcodes && $op eq 'cud-checkout' ) {
329
my $message;
330
my @message;
331
332
if (@$barcodes && $op eq 'cud-checkout') {
329
    my $checkout_infos;
333
    my $checkout_infos;
330
    for my $barcode (@$barcodes) {
334
    for my $barcode (@$barcodes) {
331
335
Lines 518-523 if ( @$barcodes && $op eq 'cud-checkout' ) { Link Here
518
                    push( @{ $template_params->{sessionConfirmationKeys} }, $needsconfirmation_key );
522
                    push( @{ $template_params->{sessionConfirmationKeys} }, $needsconfirmation_key );
519
                }
523
                }
520
            }
524
            }
525
521
            unless ($confirm_required) {
526
            unless ($confirm_required) {
522
                my $switch_onsite_checkout = exists $messages->{ONSITE_CHECKOUT_WILL_BE_SWITCHED};
527
                my $switch_onsite_checkout = exists $messages->{ONSITE_CHECKOUT_WILL_BE_SWITCHED};
523
                if ( C4::Context->preference('UseRecalls') && !$recall_id ) {
528
                if ( C4::Context->preference('UseRecalls') && !$recall_id ) {
Lines 531-536 if ( @$barcodes && $op eq 'cud-checkout' ) { Link Here
531
                        }
536
                        }
532
                    );
537
                    );
533
                    $recall_id = ( $recall and $recall->id ) ? $recall->id : undef;
538
                    $recall_id = ( $recall and $recall->id ) ? $recall->id : undef;
539
534
                }
540
                }
535
541
536
                # If booked (alerts or confirmation) update datedue to end of booking
542
                # If booked (alerts or confirmation) update datedue to end of booking
Lines 551-558 if ( @$barcodes && $op eq 'cud-checkout' ) { Link Here
551
                $session->clear('auto_renew');
557
                $session->clear('auto_renew');
552
                $inprocess = 1;
558
                $inprocess = 1;
553
            }
559
            }
554
        }
555
560
561
        }
556
        if (   $needsconfirmation->{RESERVE_WAITING}
562
        if (   $needsconfirmation->{RESERVE_WAITING}
557
            or $needsconfirmation->{RESERVED}
563
            or $needsconfirmation->{RESERVED}
558
            or $needsconfirmation->{TRANSFERRED}
564
            or $needsconfirmation->{TRANSFERRED}
Lines 564-569 if ( @$barcodes && $op eq 'cud-checkout' ) { Link Here
564
            );
570
            );
565
        }
571
        }
566
572
573
                my $borrower       = $patron;
574
                my $borrowernumber = $patron->borrowernumber;
575
                my $user           = C4::Context->userenv->{number};
576
                my $branchcode     = C4::Context->userenv->{branch};
577
                $message = "Restriction overridden temporarily";
578
                @message = ("Restriction overridden temporarily");
579
580
                if ($issueconfirmed) {
581
                    my $infos = (
582
                        {
583
                            message        => \@message,
584
                            borrowernumber => $borrowernumber,
585
                            barcode        => $barcode,
586
                            manager_id     => $user,
587
                            branchcode     => $branchcode,
588
                        }
589
                    );
590
591
                    my $json_infos = JSON->new->utf8->pretty->encode($infos);
592
                    $json_infos =~ s/"/'/g;
593
594
                    logaction(
595
                        "CIRCULATION", "ISSUE",
596
                        $borrower->{'borrowernumber'},
597
                        $json_infos,
598
                    ) if C4::Context->preference("IssueLog");
599
                }
600
                $session->clear('auto_renew');
601
                $inprocess = 1;
602
603
604
567
        # FIXME If the issue is confirmed, we launch another time checkouts->count, now display the issue count after issue
605
        # FIXME If the issue is confirmed, we launch another time checkouts->count, now display the issue count after issue
568
        $patron = Koha::Patrons->find($borrowernumber);
606
        $patron = Koha::Patrons->find($borrowernumber);
569
        $template_params->{issuecount} = $patron->checkouts->count;
607
        $template_params->{issuecount} = $patron->checkouts->count;
(-)a/circ/renew.pl (-2 / +53 lines)
Lines 24-29 use C4::Context; Link Here
24
use C4::Auth qw( get_template_and_user );
24
use C4::Auth qw( get_template_and_user );
25
use C4::Output qw( output_html_with_http_headers );
25
use C4::Output qw( output_html_with_http_headers );
26
use C4::Circulation qw( barcodedecode CanBookBeRenewed GetLatestAutoRenewDate AddRenewal );
26
use C4::Circulation qw( barcodedecode CanBookBeRenewed GetLatestAutoRenewDate AddRenewal );
27
use C4::Log qw( logaction );
27
use Koha::DateUtils qw( dt_from_string );
28
use Koha::DateUtils qw( dt_from_string );
28
use Koha::Database;
29
use Koha::Database;
29
use Koha::BiblioFrameworks;
30
use Koha::BiblioFrameworks;
Lines 64-71 if ($op eq 'cud-renew' && $barcode) { Link Here
64
        if ($checkout) {
65
        if ($checkout) {
65
66
66
            $patron = $checkout->patron;
67
            $patron = $checkout->patron;
67
68
            my $borrower       = $patron;
68
            if ( ( $patron->is_debarred || q{} ) lt dt_from_string()->ymd() ) {
69
            my $borrowernumber = $borrower->borrowernumber;
70
            my $user           = C4::Context->userenv->{number};
71
            my $branchcode     = C4::Context->userenv->{branch};
72
            my $message;
73
            my @message;
74
75
            if ( ( $borrower->debarred() || q{} ) lt dt_from_string()->ymd() ) {
69
                my $can_renew;
76
                my $can_renew;
70
                my $info;
77
                my $info;
71
                ( $can_renew, $error, $info ) =
78
                ( $can_renew, $error, $info ) =
Lines 75-80 if ($op eq 'cud-renew' && $barcode) { Link Here
75
                    if ($override_holds) {
82
                    if ($override_holds) {
76
                        $can_renew = 1;
83
                        $can_renew = 1;
77
                        $error     = undef;
84
                        $error     = undef;
85
86
                        $message = "Override Renew hold for another";
87
                        @message = ("Override Renew hold for another");
88
89
                        my $infos = (
90
                            {
91
                                message        => \@message,
92
                                borrowernumber => $borrowernumber,
93
                                barcode        => $barcode,
94
                                manager_id     => $user,
95
                                branchcode     => $branchcode,
96
                            }
97
                        );
98
99
                        my $json_infos = JSON->new->utf8->pretty->encode($infos);
100
                        $json_infos =~ s/"/'/g;
101
102
                        logaction(
103
                            "CIRCULATION", "RENEWAL",
104
                            $borrower->{'borrowernumber'},
105
                            $json_infos,
106
                        ) if C4::Context->preference("RenewalLog");
78
                    }
107
                    }
79
                    else {
108
                    else {
80
                        $can_renew = 0;
109
                        $can_renew = 0;
Lines 107-112 if ($op eq 'cud-renew' && $barcode) { Link Here
107
                        }
136
                        }
108
                    );
137
                    );
109
                    $template->param( date_due => $date_due );
138
                    $template->param( date_due => $date_due );
139
140
                    $message = "Override limit Renew";
141
                    @message = ("Override limit Renew");
142
143
                    my $infos = (
144
                        {
145
                            message        => \@message,
146
                            borrowernumber => $borrowernumber,
147
                            barcode        => $barcode,
148
                            manager_id     => $user,
149
                            branchcode     => $branchcode,
150
                        }
151
                    );
152
153
                    my $json_infos = JSON->new->utf8->pretty->encode($infos);
154
                    $json_infos =~ s/"/'/g;
155
156
                    logaction(
157
                        "CIRCULATION", "RENEWAL",
158
                        $borrower->{'borrowernumber'},
159
                        $json_infos,
160
                    ) if C4::Context->preference("RenewalLog");
110
                }
161
                }
111
            }
162
            }
112
            else {
163
            else {
(-)a/circ/returns.pl (-1 / +28 lines)
Lines 42-47 use C4::Members; Link Here
42
use C4::Output qw( output_html_with_http_headers );
42
use C4::Output qw( output_html_with_http_headers );
43
use C4::Reserves qw( ModReserve ModReserveAffect CheckReserves );
43
use C4::Reserves qw( ModReserve ModReserveAffect CheckReserves );
44
use C4::RotatingCollections;
44
use C4::RotatingCollections;
45
use C4::Log qw( logaction );
45
use Koha::AuthorisedValues;
46
use Koha::AuthorisedValues;
46
use Koha::BiblioFrameworks;
47
use Koha::BiblioFrameworks;
47
use Koha::Calendar;
48
use Koha::Calendar;
Lines 193-198 if ( $query->param('reserve_id') && $op eq 'cud-affect_reserve') { Link Here
193
            diffbranch     => 1,
194
            diffbranch     => 1,
194
        );
195
        );
195
    }
196
    }
197
} else {
198
    my $message    = "return an element that is reserved";
199
    my @message    = ("return an element that is reserved");
200
    my $user       = C4::Context->userenv->{number};
201
    my $branchcode = C4::Context->userenv->{branch};
202
    my $barcode    = $query->param('barcode');
203
204
    my $infos = (
205
        {
206
            message => \@message,
207
208
            #'card number' => $cardnumber,
209
            barcode    => $barcode,
210
            manager_id => $user,
211
            branchcode => $branchcode,
212
        }
213
    );
214
215
    my $json_infos = JSON->new->utf8->pretty->encode($infos);
216
    $json_infos =~ s/"/'/g;
217
218
    logaction(
219
        "CIRCULATION", "RETURN",
220
        $session,
221
        $json_infos,
222
    ) if C4::Context->preference("ReturnLog");
196
}
223
}
197
224
198
if ( $query->param('recall_id') && $op eq 'cud-affect_recall' ) {
225
if ( $query->param('recall_id') && $op eq 'cud-affect_recall' ) {
Lines 459-465 if ($barcode && ( $op eq 'cud-checkin' || $op eq 'cud-affect_reserve' ) ) { Link Here
459
    }
486
    }
460
487
461
    # Mark missing bundle items as lost and report unexpected items
488
    # Mark missing bundle items as lost and report unexpected items
462
    if ( $item && $item->is_bundle && $query->param('confirm_items_bundle_return') && !$query->param('do_not_verify_items_bundle_contents') ) {
489
    if ( $item && $item->is_bundle && $query->param('confirm_items_bundle_return') ) {
463
        my $BundleLostValue = C4::Context->preference('BundleLostValue');
490
        my $BundleLostValue = C4::Context->preference('BundleLostValue');
464
        my $barcodes = $query->param('verify-items-bundle-contents-barcodes');
491
        my $barcodes = $query->param('verify-items-bundle-contents-barcodes');
465
        my @barcodes = map { s/^\s+|\s+$//gr } ( split /\n/, $barcodes );
492
        my @barcodes = map { s/^\s+|\s+$//gr } ( split /\n/, $barcodes );
(-)a/reserve/request.pl (-5 / +36 lines)
Lines 27-32 script to place reserves/requests Link Here
27
=cut
27
=cut
28
28
29
use Modern::Perl;
29
use Modern::Perl;
30
use Data::Dumper;
30
31
31
use CGI qw ( -utf8 );
32
use CGI qw ( -utf8 );
32
use List::MoreUtils qw( uniq );
33
use List::MoreUtils qw( uniq );
Lines 40-45 use C4::Serials qw( CountSubscriptionFromBiblionumber ); Link Here
40
use C4::Circulation qw( _GetCircControlBranch GetBranchItemRule );
41
use C4::Circulation qw( _GetCircControlBranch GetBranchItemRule );
41
use Koha::DateUtils qw( dt_from_string );
42
use Koha::DateUtils qw( dt_from_string );
42
use C4::Search qw( enabled_staff_search_views );
43
use C4::Search qw( enabled_staff_search_views );
44
use C4::Log qw( logaction );
43
45
44
use Koha::Biblios;
46
use Koha::Biblios;
45
use Koha::Checkouts;
47
use Koha::Checkouts;
Lines 553-567 if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) Link Here
553
555
554
                                my $default_pickup_location;
556
                                my $default_pickup_location;
555
557
556
                                ($default_pickup_location) = grep { $_->branchcode eq $default_pickup_branch } @pickup_locations;
558
                                ($default_pickup_location) =
559
                                    grep { $_->branchcode eq $default_pickup_branch } @pickup_locations;
557
560
558
                                $item->{default_pickup_location} = $default_pickup_location;
561
                                $item->{default_pickup_location} = $default_pickup_location;
559
                            }
562
                            } else {
560
                            else {
563
                                $item->{available}    = 0;
561
                                $item->{available} = 0;
562
                                $item->{not_holdable} = "no_valid_pickup_location";
564
                                $item->{not_holdable} = "no_valid_pickup_location";
563
                            }
565
                            }
564
                        } else { $num_alreadyheld++ }
566
                        } else {
567
                            $num_alreadyheld++;
568
                        }
569
570
                        my $borrower       = $patron;
571
                        my $borrowernumber = $patron->borrowernumber;
572
                        my $user           = C4::Context->userenv->{number};
573
                        my $branchcode     = C4::Context->userenv->{branch};
574
                        my $message        = "Override limitation of hold";
575
                        my @message        = ("Override limitation of hold");
576
                        my $barcode        = $item->{barcode};
577
578
                        my $infos = (
579
                            {
580
                                message        => \@message,
581
                                borrowernumber => $borrowernumber,
582
                                barcode        => $barcode,
583
                                manager_id     => $user,
584
                                branchcode     => $branchcode,
585
                            }
586
                        );
587
588
                        my $json_infos = JSON->new->utf8->pretty->encode($infos);
589
                        $json_infos =~ s/"/'/g;
590
591
                        logaction(
592
                            "HOLD", "ISSUE",
593
                            $borrower->{'borrowernumber'},
594
                            $json_infos,
595
                        ) if C4::Context->preference("IssueLog");
565
596
566
                        push( @available_itemtypes, $item->{itype} );
597
                        push( @available_itemtypes, $item->{itype} );
567
                    } else {
598
                    } else {
(-)a/svc/renew (-3 / +56 lines)
Lines 26-31 use Try::Tiny; Link Here
26
use C4::Circulation qw( AddRenewal CanBookBeRenewed );
26
use C4::Circulation qw( AddRenewal CanBookBeRenewed );
27
use C4::Context;
27
use C4::Context;
28
use C4::Auth qw(check_cookie_auth);
28
use C4::Auth qw(check_cookie_auth);
29
use C4::Log qw( logaction );
29
30
30
use Koha::DateUtils qw(output_pref dt_from_string);
31
use Koha::DateUtils qw(output_pref dt_from_string);
31
32
Lines 52-57 my $date_due; Link Here
52
if ( $input->param('date_due') ) {
53
if ( $input->param('date_due') ) {
53
    $date_due = dt_from_string( scalar $input->param('date_due') );
54
    $date_due = dt_from_string( scalar $input->param('date_due') );
54
}
55
}
56
my $borrower = Koha::Patrons->find($borrowernumber);
57
my $user     = C4::Context->userenv->{'number'};
58
my $message;
59
my @message;
55
60
56
my $data;
61
my $data;
57
$data->{itemnumber} = $itemnumber;
62
$data->{itemnumber} = $itemnumber;
Lines 65-73 my $item = Koha::Items->find($itemnumber); Link Here
65
    CanBookBeRenewed( $patron, $item->checkout, $override_limit );
70
    CanBookBeRenewed( $patron, $item->checkout, $override_limit );
66
71
67
# If we're allowing reserved items to be renewed...
72
# If we're allowing reserved items to be renewed...
68
if ( $data->{error} && $data->{error} eq 'on_reserve' && C4::Context->preference('AllowRenewalOnHoldOverride')) {
73
if ( $data->{error} && $data->{error} eq 'on_reserve' && C4::Context->preference('AllowRenewalOnHoldOverride') ) {
69
    $data->{renew_okay} = 1;
74
    $data->{renew_okay} = 1;
70
    $data->{error} = undef;
75
    $data->{error}      = undef;
76
77
    $message = "Override Renew hold for another";
78
    @message = ("Override Renew hold for another");
79
80
    my $infos = (
81
        {
82
            message        => \@message,
83
            borrowernumber => $borrowernumber,
84
            barcode        => $item->barcode,
85
            manager_id     => $user,
86
            branchcode     => $branchcode,
87
        }
88
    );
89
90
    my $json_infos = JSON->new->utf8->pretty->encode($infos);
91
    $json_infos =~ s/"/'/g;
92
93
    logaction(
94
        "CIRCULATION", "RENEWAL",
95
        $borrower->{'borrowernumber'},
96
        $json_infos,
97
    ) if C4::Context->preference("IssueLog");
98
}
99
100
if ( $data->{error} && $data->{error} eq 'too_many' && C4::Context->preference('AllowRenewalLimitOverride') ) {
101
    $data->{renew_okay} = 1;
102
    $data->{error}      = undef;
103
104
    $message = "Override limit Renew";
105
    @message = ("Override limit Renew");
106
107
    my $infos = (
108
        {
109
            message        => \@message,
110
            borrowernumber => $borrowernumber,
111
            barcode        => $item->barcode,
112
            manager_id     => $user,
113
            branchcode     => $branchcode,
114
        }
115
    );
116
117
    my $json_infos = JSON->new->utf8->pretty->encode($infos);
118
    $json_infos =~ s/"/'/g;
119
120
    logaction(
121
        "CIRCULATION", "RENEWAL",
122
        $borrower->{'borrowernumber'},
123
        $json_infos,
124
    ) if C4::Context->preference("IssueLog");
71
}
125
}
72
126
73
if ( $data->{renew_okay} || ( $seen && $data->{error} eq 'too_unseen') ) {
127
if ( $data->{renew_okay} || ( $seen && $data->{error} eq 'too_unseen') ) {
74
- 

Return to bug 9762