@@ -, +, @@ - Making the atomic updates executable - Preventing warns when running tests - Updating db updates - Fixing terminology - Make 'cancel selected recalls' button yellow - Fix HTML makeup of recalls request page - Show a warning when placing a recall if there is already a - Show a link to mark a hold for conversion which selects the recall --- ...D_CANCELLATION-RECALLED_authorised_value.pl | 4 +++- ...bug_31391_-_add_RecallsInterface_syspref.pl | 4 +++- .../prog/en/includes/holds_table.inc | 6 ++++++ .../modules/admin/preferences/circulation.pref | 18 +++++++++--------- .../prog/en/modules/recalls/request.tt | 18 ++++++++++++++---- .../prog/en/modules/reserve/request.tt | 4 ++++ recalls/request.pl | 2 ++ t/db_dependent/Holds.t | 12 ++++++++++++ 8 files changed, 53 insertions(+), 15 deletions(-) mode change 100644 => 100755 installer/data/mysql/atomicupdate/bug_31391_-_add_HOLD_CANCELLATION-RECALLED_authorised_value.pl mode change 100644 => 100755 installer/data/mysql/atomicupdate/bug_31391_-_add_RecallsInterface_syspref.pl --- a/installer/data/mysql/atomicupdate/bug_31391_-_add_HOLD_CANCELLATION-RECALLED_authorised_value.pl +++ a/installer/data/mysql/atomicupdate/bug_31391_-_add_HOLD_CANCELLATION-RECALLED_authorised_value.pl @@ -2,11 +2,13 @@ use Modern::Perl; return { bug_number => "31391", - description => "Add new RECALLED value to HOLD_CANCELLATION authorised value category", + description => "Staff-side recalls", up => sub { my ($args) = @_; my ($dbh, $out) = @$args{qw(dbh out)}; $dbh->do(q{ INSERT IGNORE INTO authorised_values (category, authorised_value, lib) VALUES ('HOLD_CANCELLATION','RECALLED','Hold was converted to a recall') }); + + say $out "Added RECALLED value to HOLD_CANCELLATION authorised value category"; }, }; --- a/installer/data/mysql/atomicupdate/bug_31391_-_add_RecallsInterface_syspref.pl +++ a/installer/data/mysql/atomicupdate/bug_31391_-_add_RecallsInterface_syspref.pl @@ -2,11 +2,13 @@ use Modern::Perl; return { bug_number => "31391", - description => "Add new system preference RecallsInterface", + description => "Staff-side recalls", up => sub { my ($args) = @_; my ($dbh, $out) = @$args{qw(dbh out)}; $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('RecallsInterface','opac','opac|staff|both','The interface that recalls can be placed through','Choice') }); + + say $out "Added system preference 'RecallsInterface'"; }, }; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -23,6 +23,7 @@     Print hold/transfer slip +   [%- SET first_priority = 0 -%] @@ -249,6 +250,11 @@ [% ELSE %] [% END %] + + [% IF Koha.Preference('UseRecalls') AND Koha.Preference('RecallsInterface') != 'opac' %] + Mark for conversion to recall + [% END %] + [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -1334,6 +1334,15 @@ Circulation: 1: Use 0: "Don't use" - recalls. Make sure you configure circulation and fines rules for recalls once enabled. + - + - Recalls can be placed through + - pref: RecallsInterface + default: opac + choices: + opac: the OPAC only + staff: the staff interface only + both: both the OPAC and the staff interface + - . (Requires UseRecalls.) SIP2: - @@ -1368,12 +1377,3 @@ Circulation: 1: Enable 0: Disable - "the curbside pickup module." - - - - Recalls can be placed through - - pref: RecallsInterface - default: opac - choices: - opac: the OPAC only - staff: the staff interface only - both: both the OPAC and the staff interface - - . (Requires UseRecalls.) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/recalls/request.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/recalls/request.tt @@ -57,6 +57,12 @@ [% END %] + [% IF patron_holds_count %] +
+ Patron has placed one or more record-level holds. Convert a hold to a recall. +
+ [% END %] +
Recall details
@@ -109,7 +115,7 @@ Barcode [% UNLESS ( single_branch_mode ) %] Home library - Last location + Holding library [% END %] Collection Call number @@ -146,7 +152,7 @@ In transit from [% Branches.GetName( item.get_transfer.frombranch ) | html %] to [% Branches.GetName( item.get_transfer.tobranch ) | html %] since [% item.get_transfer.datesent | $KohaDates %] [% END %] [% IF ( item.itemlost || item.withdrawn ) %] - Unavailable (lost or missing) + Unavailable (lost or withdrawn) [% END %] [% IF ( item.notforloan ) %] Not for loan ([% item.notforloan | html %]) @@ -166,7 +172,7 @@ [% ELSIF ( hold.borrowernumber == logged_in_user.borrowernumber ) %] - Patron has already placed a reserve on this item. + Patron has already placed a hold on this item. [% END # / IF ( item.recall or hold ) %] @@ -213,6 +219,8 @@ [% END %] +
+

Existing recalls

[% IF Koha.Preference('UseRecalls') %] @@ -223,7 +231,7 @@ Select all [% INCLUDE 'recalls.inc' %]
- +
[% ELSE %] @@ -233,6 +241,8 @@
Recalls have not been enabled. Enable the UseRecalls system preference to use recalls.
[% END %] +
+ [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -1761,6 +1761,10 @@ window.open("/cgi-bin/koha/circ/hold-transfer-slip.pl?reserve_id=" + reserve_id); return false; }) + $(".convert-to-recall").click(function(){ + var reserve_id = $(this).attr('data-id'); + $("select[class='rank-request'][data-hold-id='"+reserve_id+"']").val('recall'); + }); [% END %] --- a/recalls/request.pl +++ a/recalls/request.pl @@ -122,9 +122,11 @@ if ( $borrowernumber ) { if ( !$biblio->can_be_recalled({ patron => $patron }) ) { $error = 1; } + my $patron_holds_count = Koha::Holds->search({ borrowernumber => $borrowernumber, biblionumber => $biblio->biblionumber, item_level_hold => 0 })->count; $template->param( patron => $patron, + patron_holds_count => $patron_holds_count, ); } } --- a/t/db_dependent/Holds.t +++ a/t/db_dependent/Holds.t @@ -1825,6 +1825,7 @@ subtest 'ModReserve to convert a hold to a recall' => sub { surname => 'whatever surname', categorycode => $category->{categorycode}, branchcode => $branch, + email => 'name@email.com', } )->store; my $borrowernumber = $patron->borrowernumber; @@ -1835,6 +1836,7 @@ subtest 'ModReserve to convert a hold to a recall' => sub { surname => 'whatever surname', categorycode => $category->{categorycode}, branchcode => $branch, + email => 'name2@email.com', } )->store; @@ -1854,6 +1856,16 @@ subtest 'ModReserve to convert a hold to a recall' => sub { }, }); + my $notice = Koha::Notice::Template->new({ + name => 'Hold cancellation', + module => 'reserves', + code => 'HOLD_CANCELLATION', + title => 'Hold cancelled', + content => 'Your hold was cancelled.', + message_transport_type => 'email', + branchcode => q{}, + })->store(); + my $reserve_id = AddReserve( { branchcode => $branch, --