@@ -, +, @@ notice will be sent when cancelling a hold --- C4/Reserves.pm | 3 ++- Koha/Hold.pm | 2 +- circ/pendingreserves.pl | 3 ++- .../prog/en/modules/circ/pendingreserves.tt | 3 +++ .../intranet-tmpl/prog/en/modules/reserve/request.tt | 10 ++++++++++ reserve/modrequest.pl | 3 +++ reserve/request.pl | 3 ++- 7 files changed, 23 insertions(+), 4 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -984,6 +984,7 @@ sub ModReserve { my $borrowernumber = $params->{'borrowernumber'}; my $biblionumber = $params->{'biblionumber'}; my $cancellation_reason = $params->{'cancellation_reason'}; + my $notify_patron = $params->{'notify_patron'}; return if $rank eq "W"; return if $rank eq "n"; @@ -1001,7 +1002,7 @@ sub ModReserve { $hold ||= Koha::Holds->find($reserve_id); if ( $rank eq "del" ) { - $hold->cancel({ cancellation_reason => $cancellation_reason }); + $hold->cancel({ cancellation_reason => $cancellation_reason, notify_patron => $notify_patron }); } elsif ($rank =~ /^\d+/ and $rank > 0) { logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) ) --- a/Koha/Hold.pm +++ a/Koha/Hold.pm @@ -376,7 +376,7 @@ sub cancel { $self->cancellation_reason( $params->{cancellation_reason} ); $self->store(); - if ( $params->{cancellation_reason} ) { + if ( $params->{cancellation_reason} && $params->{notify_patron} ) { my $letter = C4::Letters::GetPreparedLetter( module => 'reserves', letter_code => 'HOLD_CANCELLATION', --- a/circ/pendingreserves.pl +++ a/circ/pendingreserves.pl @@ -57,7 +57,8 @@ if ( $op eq 'cancel_reserve' and $reserve_id ) { my $hold = Koha::Holds->find( $reserve_id ); if ( $hold ) { my $cancellation_reason = $input->param('cancellation-reason'); - $hold->cancel({ cancellation_reason => $cancellation_reason }); + my $cancellation_notify_patron = $input->param('cancellation-notify-patron'); + $hold->cancel({ cancellation_reason => $cancellation_reason, notify_patron => $cancellation_notify_patron }); push @messages, { type => 'message', code => 'hold_cancelled' }; } } elsif ( $op =~ m|^mark_as_lost| ) { --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt @@ -162,6 +162,9 @@ [% END %] + + + [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -811,6 +811,9 @@ [% END %] + + + [% END %] @@ -961,6 +964,9 @@ [% END %] + + + [% END %] @@ -1292,10 +1298,14 @@ let biblionumber = cancel_link.data('biblionumber'); let reserve_id = cancel_link.data('id'); let reason = $("#modal-cancellation-reason").val(); + let notify = $("#modal-cancellation-notify-patron").prop('checked'); let link = `request.pl?action=cancel&borrowernumber=${ borrowernumber }&biblionumber=${ biblionumber }&reserve_id=${ reserve_id }`; if ( reason ) { link += "&cancellation-reason=" + reason } + if ( notify ) { + link += "&cancellation-notify-patron=1"; + } window.location.href = link; return false; }); --- a/reserve/modrequest.pl +++ a/reserve/modrequest.pl @@ -72,6 +72,8 @@ else { undef $itemnumber[$i] if !$itemnumber[$i]; my $suspend_until = $query->param( "suspend_until_" . $reserve_id[$i] ); my $cancellation_reason = $query->param("cancellation-reason"); + my $cancellation_notify_patron = $query->param("cancellation-notify-patron"); + my $params = { rank => $rank[$i], reserve_id => $reserve_id[$i], @@ -80,6 +82,7 @@ else { itemnumber => $itemnumber[$i], defined $suspend_until ? ( suspend_until => $suspend_until ) : (), cancellation_reason => $cancellation_reason, + notify_patron => $cancellation_notify_patron, }; if (C4::Context->preference('AllowHoldDateInFuture')) { $params->{reservedate} = $reservedates[$i] ? dt_from_string($reservedates[$i]) : undef; --- a/reserve/request.pl +++ a/reserve/request.pl @@ -107,8 +107,9 @@ if ( $action eq 'move' ) { } elsif ( $action eq 'cancel' ) { my $reserve_id = $input->param('reserve_id'); my $cancellation_reason = $input->param("cancellation-reason"); + my $cancellation_notify_patron = $input->param("cancellation-notify-patron"); my $hold = Koha::Holds->find( $reserve_id ); - $hold->cancel({ cancellation_reason => $cancellation_reason }) if $hold; + $hold->cancel({ cancellation_reason => $cancellation_reason, notify_patron => $cancellation_notify_patron }) if $hold; } elsif ( $action eq 'setLowestPriority' ) { my $reserve_id = $input->param('reserve_id'); ToggleLowestPriority( $reserve_id ); --