@@ -, +, @@
---
C4/Items.pm | 12 ++++++++----
koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt | 13 ++++++++++++-
t/db_dependent/Items/GetItemsForInventory.t | 2 +-
tools/inventory.pl | 10 ++++++++++
4 files changed, 31 insertions(+), 6 deletions(-)
--- a/C4/Items.pm
+++ a/C4/Items.pm
@@ -809,6 +809,7 @@ sub GetItemsForInventory {
my ( $parameters ) = @_;
my $minlocation = $parameters->{'minlocation'} // '';
my $maxlocation = $parameters->{'maxlocation'} // '';
+ my $class_source = $parameters->{'class_source'} // C4::Context->preference('DefaultClassificationSource');
my $location = $parameters->{'location'} // '';
my $itemtype = $parameters->{'itemtype'} // '';
my $ignoreissued = $parameters->{'ignoreissued'} // '';
@@ -822,6 +823,9 @@ sub GetItemsForInventory {
my $dbh = C4::Context->dbh;
my ( @bind_params, @where_strings );
+ my $min_cnsort = GetClassSort($class_source,undef,$minlocation);
+ my $max_cnsort = GetClassSort($class_source,undef,$maxlocation);
+
my $select_columns = q{
SELECT items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, biblio.frameworkcode, datelastseen, homebranch, location, notforloan, damaged, itemlost, withdrawn, stocknumber
};
@@ -841,13 +845,13 @@ sub GetItemsForInventory {
}
if ($minlocation) {
- push @where_strings, 'itemcallnumber >= ?';
- push @bind_params, $minlocation;
+ push @where_strings, 'items.cn_sort >= ?';
+ push @bind_params, $min_cnsort;
}
if ($maxlocation) {
- push @where_strings, 'itemcallnumber <= ?';
- push @bind_params, $maxlocation;
+ push @where_strings, 'items.cn_sort <= ?';
+ push @bind_params, $max_cnsort;
}
if ($datelastseen) {
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt
@@ -79,7 +79,18 @@
(items.itemcallnumber)
-
+
+
+
+
--- a/t/db_dependent/Items/GetItemsForInventory.t
+++ a/t/db_dependent/Items/GetItemsForInventory.t
@@ -79,7 +79,7 @@ subtest 'Use cn_sort rather than callnumber to determine correct location' => su
minlocation => 'GT90',
class_source => $class_source->{cn_source},
});
- is($item_count,1,"We should return GT95 as betwen GT90 and GT100");
+ is($item_count,1,"We should return GT95 as between GT90 and GT100");
$schema->storage->txn_rollback;
};
--- a/tools/inventory.pl
+++ a/tools/inventory.pl
@@ -39,10 +39,12 @@ use Koha::Biblios;
use Koha::DateUtils;
use Koha::AuthorisedValues;
use Koha::BiblioFrameworks;
+use Koha::ClassSources;
use List::MoreUtils qw( none );
my $minlocation=$input->param('minlocation') || '';
my $maxlocation=$input->param('maxlocation');
+my $class_source=$input->param('class_source');
$maxlocation=$minlocation.'Z' unless ( $maxlocation || ! $minlocation );
my $location=$input->param('location') || '';
my $ignoreissued=$input->param('ignoreissued');
@@ -114,6 +116,10 @@ for my $authvfield (@$statuses) {
}
}
+my @class_sources = Koha::ClassSources->search();
+my $pref_class = C4::Context->preference("DefaultClassificationSource");
+
+
$template->param(
authorised_values => \@authorised_value_list,
today => dt_from_string,
@@ -126,6 +132,8 @@ $template->param(
datelastseen => $datelastseen,
compareinv2barcd => $compareinv2barcd,
uploadedbarcodesflag => $uploadbarcodes ? 1 : 0,
+ class_sources => \@class_sources,
+ pref_class => $pref_class
);
# Walk through uploaded barcodes, report errors, mark as seen, check in
@@ -222,6 +230,7 @@ if ( $op && ( !$uploadbarcodes || $compareinv2barcd )) {
( $inventorylist ) = GetItemsForInventory({
minlocation => $minlocation,
maxlocation => $maxlocation,
+ class_source => $class_source,
location => $location,
ignoreissued => $ignoreissued,
datelastseen => $datelastseen,
@@ -236,6 +245,7 @@ if( @scanned_items ) {
( $rightplacelist ) = GetItemsForInventory({
minlocation => $minlocation,
maxlocation => $maxlocation,
+ class_source => $class_source,
location => $location,
ignoreissued => undef,
datelastseen => undef,
--