Bugzilla – Attachment 114031 Details for
Bug 26282
Allow staff to decide if a hold cancellation notice will be sent when cancelling a hold
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 26282: Allow staff to decide if a hold cancellation notice will be sent when cancelling a hold
Bug-26282-Allow-staff-to-decide-if-a-hold-cancella.patch (text/plain), 8.66 KB, created by
Josef Moravec
on 2020-11-27 09:08:35 UTC
(
hide
)
Description:
Bug 26282: Allow staff to decide if a hold cancellation notice will be sent when cancelling a hold
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2020-11-27 09:08:35 UTC
Size:
8.66 KB
patch
obsolete
>From c19c140779a6717e07d99554a99e688c67b5fb4a Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Fri, 28 Aug 2020 10:01:04 -0400 >Subject: [PATCH] Bug 26282: Allow staff to decide if a hold cancellation > notice will be sent when cancelling a hold > >Bug 25534 adds the option to send hold cancellation notices when a >reason was given. It would be nice if you could give a reason but still >decide not to send to the patron. > >Say the patron called and will not be able to pick up numerous holds for >some time. You cancel them all with "patron requested cancellation" but >don't want to send multiple notices. > >I could imagine a checkbox next to the reason to activate/deactivate >sending the notice. > >Test Plan: >1) Apply this patch >2) Visit each area in Koha where a hold can be canceled with a reason >3) Note the new 'Notify patron' checkbox >4) Test canceling a hold with and without this checkbox checked >5) Verify leaving it unchecked does not trigger a notice to be sent to the patron > >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> >--- > C4/Reserves.pm | 3 ++- > Koha/Hold.pm | 2 +- > circ/pendingreserves.pl | 3 ++- > .../intranet-tmpl/prog/en/modules/circ/pendingreserves.tt | 3 +++ > koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt | 10 ++++++++++ > reserve/modrequest.pl | 3 +++ > reserve/request.pl | 3 ++- > 7 files changed, 23 insertions(+), 4 deletions(-) > >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index c5a8d4ab53..aa3b6d4360 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -1002,6 +1002,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"; >@@ -1019,7 +1020,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) ) >diff --git a/Koha/Hold.pm b/Koha/Hold.pm >index 7754691238..735a7fa3f9 100644 >--- a/Koha/Hold.pm >+++ b/Koha/Hold.pm >@@ -447,7 +447,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', >diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl >index 01cf877b55..5934e9d982 100755 >--- a/circ/pendingreserves.pl >+++ b/circ/pendingreserves.pl >@@ -56,7 +56,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| ) { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >index c14d8720f9..cab941c1d4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >@@ -167,6 +167,9 @@ > <option value="[% reason.authorised_value | html %]">[% reason.lib | html %]</option> > [% END %] > </select> >+ >+ <input type="checkbox" name="cancellation-notify-patron" id="cancellation-notify-patron" value="1" checked/> >+ <label for="cancellation-notify-patron">Notify patron</label> > </div> > [% END %] > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >index f479387c7e..4d12fcc433 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >@@ -817,6 +817,9 @@ > <option value="[% reason.authorised_value | html %]">[% reason.lib | html %]</option> > [% END %] > </select> >+ >+ <input type="checkbox" name="cancellation-notify-patron" id="cancellation-notify-patron" value="1" checked/> >+ <label for="cancellation-notify-patron">Notify patron</label> > [% END %] > </fieldset> > </div> >@@ -967,6 +970,9 @@ > <option value="[% reason.authorised_value | html %]">[% reason.lib | html %]</option> > [% END %] > </select> >+ >+ <input type="checkbox" name="modal-cancellation-notify-patron" id="modal-cancellation-notify-patron" value="1" checked> >+ <label for="modal-cancellation-notify-patron">Notify patron</label> > [% END %] > </fieldset> > </div> >@@ -1299,10 +1305,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; > }); >diff --git a/reserve/modrequest.pl b/reserve/modrequest.pl >index b2d138378a..c112fc627d 100755 >--- a/reserve/modrequest.pl >+++ b/reserve/modrequest.pl >@@ -71,6 +71,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], >@@ -79,6 +81,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; >diff --git a/reserve/request.pl b/reserve/request.pl >index 38d6f56ed2..a0018705a7 100755 >--- a/reserve/request.pl >+++ b/reserve/request.pl >@@ -106,8 +106,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 ); >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 26282
:
109286
|
113960
|
113991
|
114007
|
114008
|
114009
|
114010
|
114011
|
114012
|
114013
|
114014
|
114015
|
114016
|
114028
|
114030
|
114031
|
114032
|
114033
|
114034
|
114035
|
114247
|
114248
|
114249
|
114250
|
114251
|
114252
|
114253
|
114254
|
114255
|
114259
|
115193
|
115194
|
115195
|
115196
|
115197
|
115198
|
115199
|
115200
|
115201
|
122448
|
122449
|
122450
|
122451
|
122452
|
122453
|
122454
|
122455
|
122456
|
122550
|
138407
|
138408
|
138409
|
138410
|
138411
|
138412
|
138413
|
138414
|
138415
|
138416
|
138417
|
138418
|
138419
|
138469
|
141210
|
171577
|
171578
|
171579
|
171580
|
171581
|
171582
|
171583
|
171584
|
171585
|
171586
|
171587
|
171588
|
171589
|
171590
|
171592
|
171593