@@ -, +, @@ "item not scanned": when calling GetItemsForInventory, datelastseen should be used when "compare barcodes list to result" is checked. Otherwise, when loading multiple barcodes files for the same inventory, many items will be marked as "item not scanned" when loading the last barcode file ("compare barcodes list to result" checked) even though they were scanned. "wrong place": when searching for wrongly placed items, we should only check for the location (callnumbers, location and branch). To fix this, A new call to GetItemsForInventory has been made with location filters only. Otherwise, any item with a different itemtype for instance will be marked as wrong place even if the location is correct. Test plan: --- tools/inventory.pl | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) --- a/tools/inventory.pl +++ a/tools/inventory.pl @@ -226,11 +226,19 @@ if ( $uploadbarcodes && length($uploadbarcodes) > 0 ) { # now build the result list: inventoried items if requested, and mis-placed items -always- my $inventorylist; +my $wrongplacelist; my @items_with_problems; if ( $markseen or $op ) { # retrieve all items in this range. my $totalrecords; - ($inventorylist, $totalrecords) = GetItemsForInventory($minlocation, $maxlocation, $location, $itemtype, $ignoreissued, '', $branchcode, $branch, 0, undef , $staton); + + # We use datelastseen only when comparing the results to the barcode file. + my $paramdatelastseen = ($compareinv2barcd) ? $datelastseen : ''; + ($inventorylist, $totalrecords) = GetItemsForInventory($minlocation, $maxlocation, $location, $itemtype, $ignoreissued, $paramdatelastseen, $branchcode, $branch, 0, undef, $staton); + + # For the items that may be marked as "wrong place", we only check the location (callnumbers, location and branch) + ($wrongplacelist, $totalrecords) = GetItemsForInventory($minlocation, $maxlocation, $location, undef, undef, undef, $branchcode, $branch, 0, undef, undef); + } # If "compare barcodes list to results" has been checked, we want to alert for missing items @@ -280,7 +288,7 @@ foreach my $item ( @scanned_items ) { $item->{problem} = 'changestatus'; push @items_with_problems, { %$item }; } - if (none { $item->{barcode} eq $_->{barcode} && !$_->{'onloan'} } @$inventorylist) { + if (none { $item->{barcode} eq $_->{barcode} && !$_->{'onloan'} } @$wrongplacelist) { $item->{problem} = 'wrongplace'; push @items_with_problems, { %$item }; } --