my $branch = $input->param('branch');
my $op = $input->param('op');
my $compareinv2barcd = $input->param('compareinv2barcd');
+my $dont_checkin = $input->param('dont_checkin');
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
{ template_name => "tools/inventory.tt",
my @errorloop;
if ( $uploadbarcodes && length($uploadbarcodes) > 0 ) {
my $dbh = C4::Context->dbh;
- my $date = dt_from_string( $input->param('setdate') );
+ my $date = dt_from_string( scalar $input->param('setdate') );
$date = output_pref ( { dt => $date, dateformat => 'iso' } );
my $strsth = "select * from issues, items where items.itemnumber=issues.itemnumber and items.barcode =?";
my $count = 0;
my @barcodes;
+ my @uploadedbarcodes;
my $sth = $dbh->column_info(undef,undef,"items","barcode");
my $barcode_def = $sth->fetchall_hashref('COLUMN_NAME');
my $err_data=0;
my $lines_read=0;
binmode($uploadbarcodes, ":encoding(UTF-8)");
- while (my $barcode=<$uploadbarcodes>){
- $barcode =~ s/\r?\n$//;
+ while (my $barcode=<$uploadbarcodes>) {
+ $barcode =~ s/\r/\n/g;
+ $barcode =~ s/\n\n/\n/g;
+ my @data = split(/\n/,$barcode);
+ push @uploadedbarcodes, @data;
+ }
+ for my $barcode (@uploadedbarcodes) {
next unless $barcode;
++$lines_read;
if (length($barcode)>$barcode_size) {
ModItem( { datelastseen => $date }, undef, $item->{'itemnumber'} );
push @scanned_items, $item;
$count++;
- $qonloan->execute($barcode);
- if ($qonloan->rows){
- my $data = $qonloan->fetchrow_hashref;
- my ($doreturn, $messages, $iteminformation, $borrower) =AddReturn($barcode, $data->{homebranch});
- if ($doreturn){
- push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_RET'=>1}
- } else {
- push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_NOT_RET'=>1}
+ unless ( $dont_checkin ) {
+ $qonloan->execute($barcode);
+ if ($qonloan->rows){
+ my $data = $qonloan->fetchrow_hashref;
+ my ($doreturn, $messages, $iteminformation, $borrower) =AddReturn($barcode, $data->{homebranch});
+ if ($doreturn){
+ push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_RET'=>1}
+ } else {
+ push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_NOT_RET'=>1}
+ }
}
}
} else {
# 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);
+ ($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',
+ } );
# 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);
+ ($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',
+ } );
}
# If "compare barcodes list to results" has been checked, we want to alert for missing items
if ( $compareinv2barcd ) {
- # set "missing" flags for all items with a datelastseen (dls) before the choosen datelastseen (cdls)
+ # set "missing" flags for all items with a datelastseen (dls) before the chosen datelastseen (cdls)
my $dls = output_pref( { dt => dt_from_string( $datelastseen ),
dateformat => 'iso' } );
foreach my $item ( @$inventorylist ) {
- my $cdls = output_pref( { dt => dt_from_string( $_->{datelastseen} ),
+ my $cdls = output_pref( { dt => dt_from_string( $item->{datelastseen} ),
dateformat => 'iso' } );
if ( $cdls lt $dls ) {
$item->{problem} = 'missingitem';
# insert "wrongplace" to all scanned items that are not supposed to be in this range
-# note this list is always displayed, whatever the librarian has choosen for comparison
+# note this list is always displayed, whatever the librarian has chosen for comparison
my $moddatecount = 0;
foreach my $item ( @scanned_items ) {
}
# Modify date last seen for scanned items
- ModDateLastSeen($_->{'itemnumber'});
+ ModDateLastSeen($item->{'itemnumber'});
$moddatecount++;
}