From 7e945358bb28b14449e5cd7a39f2e81304af5114 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Wed, 2 Jan 2013 08:21:52 -0500
Subject: [PATCH] Bug 7703 - Don't block bulk hold action if some items can't be placed on hold

If you select multiple titles on the search results page in order to
place a bulk hold and some of those titles have no items you get a
JavaScript alert warning you can some cannot be placed on hold. You are
blocked from completing the action until you deselect the invalid hold.

This is unnecessary because the bulk hold process will safely refuse to
place a hold on these titles later in the process.

This patch removes the check that prevents submitting a multi-hold if
one or more records in the multi-hold have no items.

Test plan:
1) Apply patch
2) On the staff interface, do a search
3) On the search results, select at least one record with items and one
record with no items.
4) Click the 'Place hold' button.
5) You should be redirected to reserve/request.pl with the message
"Cannot place hold: this record has no items attached."

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Added a description of the problem and copied the test plan from the bug
report, fulfilling commit message guidelines.
---
 C4/Biblio.pm                                       |    2 ++
 C4/Items.pm                                        |    2 ++
 .../prog/en/modules/catalogue/results.tt           |   10 ----------
 3 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 7af8619..875a9a0 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -1051,6 +1051,8 @@ sub GetBiblio {
 sub GetBiblioItemInfosOf {
     my @biblioitemnumbers = @_;
 
+    return unless ( @biblioitemnumbers );
+
     my $query = '
         SELECT biblioitemnumber,
             publicationyear,
diff --git a/C4/Items.pm b/C4/Items.pm
index 212a9d3..55d3bed 100644
--- a/C4/Items.pm
+++ b/C4/Items.pm
@@ -1097,6 +1097,8 @@ sub GetItemsCount {
 sub GetItemInfosOf {
     my @itemnumbers = @_;
 
+    return unless ( @itemnumbers );
+
     my $query = '
         SELECT *
         FROM items
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt
index 1b20b07..72e9d21 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt
@@ -4,7 +4,6 @@
 <script type="text/javascript">
 //<![CDATA[
 var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
-var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be placed on hold.");
 var q_array = new Array();  // will hold search terms, if present
 [% IF ( AmazonCoverImages ) %]
 // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
@@ -154,19 +153,10 @@ function placeHold () {
         return false;
     }
     var bibs = "";
-    var badBibs = false;
     $(checkedItems).each(function() {
         var bib = $(this).val();
-        if ($("#reserve_" + bib).size() == 0) {
-            alert(MSG_NON_RESERVES_SELECTED);
-            badBibs = true;
-            return false;
-        }
         bibs += bib + "/";
     });
-    if (badBibs) {
-        return false;
-    }
     $("#hold_form_biblios").val(bibs);
     $("#hold_form").submit();
     return false;
-- 
1.7.2.5