Bug 30742: Remove 'bad_bibs' and send a list of holdable bibs

Currently place request gets a list of bad_bibs that is created via javascript on the
template. It ignores this list

Ths patch instead doesn't add info for bad bibs, and provides a list of the bibs that
can be held

To test:
1 - Attempt multi hold with some items that can be held, and one that cannot due to notforloan
2 - Fill in pickup locations and place hold
3 - Note hold is place on bib with no avilable items and hsows twice in results
4 - Apply patch
5 - repeat with another patron
6 - Note no aidditonal hold on record with notforloan items
7 - Note with with not for loan items appears only once in results

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Nick Clemens 2022-05-13 15:23:30 +00:00 committed by Tomas Cohen Arazi
parent 1c1c1e19f5
commit 503a7f0ab1
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F
2 changed files with 13 additions and 22 deletions

View file

@ -200,11 +200,13 @@
<form action="/api/v1/clubs/[% club.id | html %]/holds" method="post" name="form" id="club-request-form">
[% IF ( multi_hold ) %]
<input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
<input type="hidden" name="request" value="any"/>
[% FOREACH biblioloo IN biblioloop %]
<input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
<input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
[% UNLESS biblioloo.none_avail %]
<input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
<input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
<input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
[% END %]
[% END %]
[% ELSE %]
<input type="hidden" name="title" value="[% biblio.title | html %]" />
@ -446,15 +448,17 @@
<input type="hidden" name="type" value="str8" />
[% FOREACH biblionumber IN biblionumbers %]
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
[% END %]
[% IF ( multi_hold ) %]
<input type="hidden" name="multi_holds" id="multi_holds" value="1" />
<input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
<input type="hidden" name="request" value="any"/>
[% FOREACH biblioloo IN biblioloop %]
<input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
<input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
[% UNLESS biblioloo.none_avail %]
<input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
<input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
<input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
[% END %]
[% END %]
[% ELSE %]
<input type="hidden" name="title" value="[% biblio.title | html %]" />
@ -1411,15 +1415,6 @@
return false;
}
var badSpans = $(".not_holdable");
var badBibs = "";
$(badSpans).each(function() {
var bibnum = $(this).attr("title");
badBibs += bibnum + "/";
});
$("#bad_bibs").val(badBibs);
$('#hold-request-form').preventDoubleFormSubmit();
return true;

View file

@ -37,6 +37,7 @@ checkauth($input, 0, { reserveforothers => 'place_holds' }, 'intranet');
my @reqbib = $input->multi_param('reqbib');
my @biblionumbers = $input->multi_param('biblionumber');
my @holdable_bibs = $input->multi_param('holdable_bibs');
my $borrowernumber = $input->param('borrowernumber');
my $notes = $input->param('notes');
my $branch = $input->param('pickup');
@ -51,12 +52,10 @@ my $non_priority = $input->param('non_priority');
my $patron = Koha::Patrons->find( $borrowernumber );
my $bad_bibs_param = $input->param('bad_bibs');
my @bad_bibs = split '/', $bad_bibs_param;
my $holds_to_place_count = $input->param('holds_to_place_count') || 1;
my %bibinfos = ();
foreach my $bibnum (@biblionumbers) {
foreach my $bibnum ( @holdable_bibs ) {
my %bibinfo = ();
$bibinfo{title} = $input->param("title_$bibnum");
$bibinfo{rank} = $input->param("rank_$bibnum");
@ -148,9 +147,6 @@ if ( $type eq 'str8' && $patron ) {
}
}
if (@bad_bibs) {
push @biblionumbers, @bad_bibs;
}
my $redirect_url = URI->new("request.pl");
$redirect_url->query_form( biblionumber => [@biblionumbers]);
print $input->redirect($redirect_url);