@@ -, +, @@ --- C4/Items.pm | 31 +++++++---- .../prog/en/modules/tools/inventory.tt | 5 ++ tools/inventory.pl | 65 ++++++++++++---------- 3 files changed, 60 insertions(+), 41 deletions(-) --- a/C4/Items.pm +++ a/C4/Items.pm @@ -1037,6 +1037,7 @@ sub GetLostItems { size => $size, statushash => $statushash, interface => $interface, + ignore_holds_waiting => $ignore_holds_waiting, } ); Retrieve a list of title/authors/barcode/callnumber, for biblio inventory. @@ -1056,18 +1057,19 @@ $iTotalRecords is the number of rows that would have been returned without the $ sub GetItemsForInventory { my ( $parameters ) = @_; - my $minlocation = $parameters->{'minlocation'} // ''; - my $maxlocation = $parameters->{'maxlocation'} // ''; - my $location = $parameters->{'location'} // ''; - my $itemtype = $parameters->{'itemtype'} // ''; - my $ignoreissued = $parameters->{'ignoreissued'} // ''; - my $datelastseen = $parameters->{'datelastseen'} // ''; - my $branchcode = $parameters->{'branchcode'} // ''; - my $branch = $parameters->{'branch'} // ''; - my $offset = $parameters->{'offset'} // ''; - my $size = $parameters->{'size'} // ''; - my $statushash = $parameters->{'statushash'} // ''; - my $interface = $parameters->{'interface'} // ''; + my $minlocation = $parameters->{minlocation} // ''; + my $maxlocation = $parameters->{maxlocation} // ''; + my $location = $parameters->{location} // ''; + my $itemtype = $parameters->{itemtype} // ''; + my $ignoreissued = $parameters->{ignoreissued} // ''; + my $datelastseen = $parameters->{datelastseen} // ''; + my $branchcode = $parameters->{branchcode} // ''; + my $branch = $parameters->{branch} // ''; + my $offset = $parameters->{offset} // ''; + my $size = $parameters->{size} // ''; + my $statushash = $parameters->{statushash} // ''; + my $interface = $parameters->{interface} // ''; + my $ignore_holds_waiting = $parameters->{ignore_holds_waiting} // ''; my $dbh = C4::Context->dbh; my ( @bind_params, @where_strings ); @@ -1130,6 +1132,11 @@ sub GetItemsForInventory { push @where_strings, 'issues.date_due IS NULL'; } + if ( $ignore_holds_waiting ) { + $query .= "LEFT JOIN reserves ON items.itemnumber = reserves.itemnumber "; + push( @where_strings, q{reserves.found != 'W' OR reserves.found IS NULL} ); + } + if ( @where_strings ) { $query .= 'WHERE '; $query .= join ' AND ', @where_strings; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt @@ -207,6 +207,11 @@ $(document).ready(function(){ [% END %]
  • +
  • + + +
  • +
  • --- a/tools/inventory.pl +++ a/tools/inventory.pl @@ -46,6 +46,7 @@ $maxlocation=$minlocation.'Z' unless ( $maxlocation || ! $minlocation ); my $location=$input->param('location') || ''; my $itemtype=$input->param('itemtype'); # FIXME note, template does not currently supply this my $ignoreissued=$input->param('ignoreissued'); +my $ignore_holds_waiting = $input->param('ignore_holds_waiting'); my $datelastseen = $input->param('datelastseen'); my $markseen = $input->param('markseen'); my $branchcode = $input->param('branchcode') || ''; @@ -136,6 +137,7 @@ $template->param( maxlocation => $maxlocation, location => $location, ignoreissued => $ignoreissued, + ignore_holds_waiting => $ignore_holds_waiting, branchcode => $branchcode, branch => $branch, datelastseen => $datelastseen, @@ -244,37 +246,42 @@ if ( $markseen or $op ) { # We use datelastseen only when comparing the results to the barcode file. my $paramdatelastseen = ($compareinv2barcd) ? $datelastseen : ''; - ($inventorylist, $totalrecords) = GetItemsForInventory( { - minlocation => $minlocation, - maxlocation => $maxlocation, - location => $location, - itemtype => $itemtype, - ignoreissued => $ignoreissued, - datelastseen => $paramdatelastseen, - branchcode => $branchcode, - branch => $branch, - offset => 0, - size => undef, - statushash => $staton, - interface => 'staff', - } ); + ( $inventorylist, $totalrecords ) = GetItemsForInventory( + { + minlocation => $minlocation, + maxlocation => $maxlocation, + location => $location, + itemtype => $itemtype, + ignoreissued => $ignoreissued, + datelastseen => $paramdatelastseen, + branchcode => $branchcode, + branch => $branch, + offset => 0, + size => undef, + statushash => $staton, + interface => 'staff', + ignore_holds_waiting => $ignore_holds_waiting, + } + ); # For the items that may be marked as "wrong place", we only check the location (callnumbers, location and branch) - ($wrongplacelist, $totalrecords) = GetItemsForInventory( { - minlocation => $minlocation, - maxlocation => $maxlocation, - location => $location, - itemtype => undef, - ignoreissued => undef, - datelastseen => undef, - branchcode => $branchcode, - branch => $branch, - offset => 0, - size => undef, - statushash => undef, - interface => 'staff', - } ); - + ( $wrongplacelist, $totalrecords ) = GetItemsForInventory( + { + minlocation => $minlocation, + maxlocation => $maxlocation, + location => $location, + itemtype => undef, + ignoreissued => undef, + datelastseen => undef, + branchcode => $branchcode, + branch => $branch, + offset => 0, + size => undef, + statushash => undef, + interface => 'staff', + ignore_holds_waiting => $ignore_holds_waiting, + } + ); } # If "compare barcodes list to results" has been checked, we want to alert for missing items --