From 70d7337063250f6261d8a489aa1815bdacb3986d Mon Sep 17 00:00:00 2001 From: hdl Date: Tue, 31 Jan 2006 11:06:42 +0000 Subject: [PATCH] Adding barcode file support for inventory/Stocktaking --- reports/inventory.pl | 68 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/reports/inventory.pl b/reports/inventory.pl index dcd2fc404a..1a443b6201 100755 --- a/reports/inventory.pl +++ b/reports/inventory.pl @@ -24,6 +24,7 @@ use C4::Context; use C4::Output; use C4::Interface::CGI::Output; use C4::Circulation::Circ2; +use C4::Date; use HTML::Template; # Fixed variables @@ -46,6 +47,8 @@ my $markseen = $input->param('markseen'); $offset=0 unless $offset; my $pagesize = $input->param('pagesize'); $pagesize=20 unless $pagesize; +my $uploadbarcodes = $input->param('uploadbarcodes'); +# warn "uploadbarcodes : ".$uploadbarcodes; my ($template, $borrowernumber, $cookie) = get_template_and_user({template_name => "reports/inventory.tmpl", @@ -61,19 +64,62 @@ $template->param(minlocation => $minlocation, pagesize => $pagesize, datelastseen => $datelastseen, ); -if ($markseen) { - foreach my $field ($input->param) { - if ($field =~ /SEEN-(.*)/) { - &itemseen($1); +if ($uploadbarcodes && length($uploadbarcodes)>0){ + my $dbh=C4::Context->dbh; + my $date=format_date($input->param('setdate')); + $date = format_date("today") unless $date; +# warn "$date"; + my $strsth="update items set (datelastseen = $date) where items.barcode =?"; + my $qupdate = $dbh->prepare($strsth); + my $strsth="select * from issues, items where items.itemnumber=issues.itemnumber and items.barcode =? and issues.returndate is null"; + my $qonloan = $dbh->prepare($strsth); + my $strsth="select * from items where items.barcode =? and issues.wthdrawn=1"; + my $qwthdrawn = $dbh->prepare($strsth); + my @errorloop; + my $count=0; + while (my $barcode=<$uploadbarcodes>){ + chomp $barcode; +# warn "$barcode"; + if ($qwthdrawn->execute($barcode) &&$qwthdrawn->rows){ + push @errorloop, {'barcode'=>$barcode,'ERR_WTHDRAWN'=>1}; + }else{ + $qupdate->execute($barcode); + $count += $qupdate->rows; +# warn "$count"; + if ($count){ + $qonloan->execute($barcode); + if ($qonloan->rows){ + my $data = $qonloan->fetchrow_hashref; + my ($doreturn, $messages, $iteminformation, $borrower) =returnbook($barcode, $data->{homebranch}); + if ($doreturn){push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_RET'=>1}} + else {push @errorloop, {'barcode'=>$barcode,'ERR_ONLOAN_NOT_RET'=>1}} + } + } else { + push @errorloop, {'barcode'=>$barcode,'ERR_BARCODE'=>1}; + } } } -} -if ($minlocation) { - my $res = C4::Circulation::Circ2::listitemsforinventory($minlocation,$maxlocation,$datelastseen,$offset,$pagesize); - $template->param(loop =>$res, - nextoffset => ($offset+$pagesize), - prevoffset => ($offset?$offset-$pagesize:0), - ); + $qupdate->finish; + $qonloan->finish; + $qwthdrawn->finish; + $template->param(date=>$date,Number=>$count); +# $template->param(errorfile=>$errorfile) if ($errorfile); + $template->param(errorloop=>\@errorloop) if (@errorloop); +}else{ + if ($markseen) { + foreach my $field ($input->param) { + if ($field =~ /SEEN-(.*)/) { + &itemseen($1); + } + } + } + if ($minlocation) { + my $res = C4::Circulation::Circ2::listitemsforinventory($minlocation,$maxlocation,$datelastseen,$offset,$pagesize); + $template->param(loop =>$res, + nextoffset => ($offset+$pagesize), + prevoffset => ($offset?$offset-$pagesize:0), + ); + } } output_html_with_http_headers $input, $cookie, $template->output;