tweak Inventory tool and sub in C4/Items so call number min and max are not required
authorMichael Hafen <mdhafen@tech.washk12.org>
Tue, 3 Feb 2009 23:46:25 +0000 (16:46 -0700)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Tue, 26 May 2009 19:14:59 +0000 (21:14 +0200)
This changes the setting if default values in the inventory tool where
the min and max call number are concerned.  Also changes how the query
is formed in C4/Items so that these two are not required.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
C4/Items.pm
tools/inventory.pl

index 86bf024..a5d932f 100644 (file)
@@ -1026,35 +1026,43 @@ offset & size can be used to retrieve only a part of the whole listing (defaut b
 sub GetItemsForInventory {
     my ( $minlocation, $maxlocation,$location, $itemtype, $ignoreissued, $datelastseen, $branch, $offset, $size ) = @_;
     my $dbh = C4::Context->dbh;
+    my ( @bind_params, @where_strings );
 
     my $query = <<'END_SQL';
 SELECT items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, datelastseen
 FROM items
   LEFT JOIN biblio ON items.biblionumber = biblio.biblionumber
   LEFT JOIN biblioitems on items.biblionumber = biblioitems.biblionumber
-WHERE itemcallnumber >= ?
-  AND itemcallnumber <= ?
 END_SQL
-    my @bind_params = ( $minlocation, $maxlocation );
+
+    if ($minlocation) {
+        push @where_strings, 'itemcallnumber >= ?';
+        push @bind_params, $minlocation;
+    }
+
+    if ($maxlocation) {
+        push @where_strings, 'itemcallnumber <= ?';
+        push @bind_params, $maxlocation;
+    }
 
     if ($datelastseen) {
         $datelastseen = format_date_in_iso($datelastseen);  
-        $query .= ' AND (datelastseen < ? OR datelastseen IS NULL) ';
+        push @where_strings, '(datelastseen < ? OR datelastseen IS NULL)';
         push @bind_params, $datelastseen;
     }
 
     if ( $location ) {
-        $query.= ' AND items.location = ? ';
+        push @where_strings, 'items.location = ?';
         push @bind_params, $location;
     }
     
     if ( $branch ) {
-        $query.= ' AND items.homebranch = ? ';
+        push @where_strings, 'items.homebranch = ?';
         push @bind_params, $branch;
     }
     
     if ( $itemtype ) {
-        $query.= ' AND biblioitems.itemtype = ? ';
+        push @where_strings, 'biblioitems.itemtype = ?';
         push @bind_params, $itemtype;
     }
     if ( $ignoreissued) {
index c9c5a94..4fa9c94 100755 (executable)
@@ -29,9 +29,9 @@ use C4::Koha;
 use C4::Branch; # GetBranches
 
 my $input = new CGI;
-my $minlocation=$input->param('minlocation') || 'A';
+my $minlocation=$input->param('minlocation') || '';
 my $maxlocation=$input->param('maxlocation');
-$maxlocation=$minlocation.'Z' unless $maxlocation;
+$maxlocation=$minlocation.'Z' unless ( $maxlocation || ! $minlocation );
 my $location=$input->param('location');
 my $itemtype=$input->param('itemtype');
 my $ignoreissued=$input->param('ignoreissued');