diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 04b43af250..4ace8d9907 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -22,6 +22,8 @@ package C4::Reserves; use Modern::Perl; +use JSON qw( to_json ); + use C4::Accounts; use C4::Biblio qw( GetMarcFromKohaField ); use C4::Circulation qw( CheckIfIssuedToPatron GetAgeRestriction GetBranchItemRule ); @@ -192,6 +194,8 @@ sub AddReserve { my $itemtype = $params->{itemtype}; my $non_priority = $params->{non_priority}; my $item_group_id = $params->{item_group_id}; + my $confirmations = $params->{confirmations}; + my $forced = $params->{forced}; $resdate ||= dt_from_string; @@ -261,8 +265,24 @@ sub AddReserve { # record patron activity $hold->patron->update_lastseen('hold'); - logaction( 'HOLDS', 'CREATE', $hold->id, $hold ) - if C4::Context->preference('HoldsLog'); + # Log the hold creation + if ( C4::Context->preference('HoldsLog') ) { + my $info = $hold->id; + if ( defined($confirmations) || defined($forced) ) { + $info = to_json( + { + hold => $hold->id, + branchcode => $hold->branchcode, + biblionumber => $hold->biblionumber, + itemnumber => $hold->itemnumber, + confirmations => $confirmations, + forced => $forced + }, + { pretty => 1, canonical => 1 } + ); + } + logaction( 'HOLDS', 'CREATE', $hold->id, $info ); + } my $reserve_id = $hold->id(); diff --git a/Koha/REST/V1/Holds.pm b/Koha/REST/V1/Holds.pm index 53abf9c2cd..f4f74d655a 100644 --- a/Koha/REST/V1/Holds.pm +++ b/Koha/REST/V1/Holds.pm @@ -191,6 +191,12 @@ sub add { my $priority = C4::Reserves::CalculatePriority($biblio_id); + # Build confirmations array for logging overrides + my $confirmations = []; + if ($override_all) { + push @{$confirmations}, 'HOLD_POLICY_OVERRIDE'; + } + my $hold_id = C4::Reserves::AddReserve( { branchcode => $pickup_library_id, @@ -206,6 +212,7 @@ sub add { itemtype => $item_type, non_priority => $non_priority, item_group_id => $item_group_id, + confirmations => $confirmations, } ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc index 774e05477f..57092d75e7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc @@ -179,6 +179,8 @@ [% BLOCK translate_log_override %] [% SWITCH override %] + [% CASE 'HOLD_POLICY_OVERRIDE' %] + Hold policy override [% CASE 'INVALID_DATE' %] Invalid date confirmed [% CASE 'DEBT_GUARANTEES' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt index 44e6e4b20e..03efca0532 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt @@ -349,6 +349,28 @@
[% PROCESS translate_log_override override=confirmation %]
[% END %] + [% ELSIF ( loopro.module == 'HOLDS' && loopro.json_found ) %] +
+
+ Hold [% loopro.json.hold | html %] on biblio [% loopro.json.biblionumber | html %] + [% IF loopro.json.itemnumber %] + - + Item [% loopro.json.itemnumber | html %] + [% END %] +
+ [% FOREACH force IN loopro.json.forced %] +
[% PROCESS translate_log_override override=force %]
+ [% END %] + [% FOREACH confirmation IN loopro.json.confirmations %] +
[% PROCESS translate_log_override override=confirmation %]
+ [% END %] +
[% ELSIF loopro.module == "SYSTEMPREFERENCE" || loopro.module == "REPORTS" || loopro.module == "NEWS" %]
[% loopro.info | trim | html %]
diff --git a/reserve/request.pl b/reserve/request.pl index dd2023c6b5..a553070e4b 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -40,7 +40,6 @@ use C4::Serials qw( CountSubscriptionFromBiblionumber ); use C4::Circulation qw( _GetCircControlBranch GetBranchItemRule ); use Koha::DateUtils qw( dt_from_string ); use C4::Search qw( enabled_staff_search_views ); -use C4::Log qw( logaction ); use Koha::Biblios; use Koha::Checkouts; @@ -570,33 +569,6 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) $num_alreadyheld++; } - my $borrower = $patron; - my $borrowernumber = $patron->borrowernumber; - my $user = C4::Context->userenv->{number}; - my $branchcode = C4::Context->userenv->{branch}; - my $message = "Override limitation of hold"; - my @message = ("Override limitation of hold"); - my $barcode = $item->{barcode}; - - my $infos = ( - { - message => \@message, - borrowernumber => $borrowernumber, - barcode => $barcode, - manager_id => $user, - branchcode => $branchcode, - } - ); - - my $json_infos = JSON->new->utf8->pretty->encode($infos); - $json_infos =~ s/"/'/g; - - logaction( - "HOLD", "ISSUE", - $borrower->{'borrowernumber'}, - $json_infos, - ) if C4::Context->preference("IssueLog"); - push( @available_itemtypes, $item->{itype} ); } else {