From c273fdd78569de27f83ab43daa52104e54c8ac46 Mon Sep 17 00:00:00 2001 From: tonnesen Date: Mon, 22 Jul 2002 17:38:06 +0000 Subject: [PATCH] New script copied over from trunk. Templates call this script. --- bookcount.pl | 194 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100755 bookcount.pl diff --git a/bookcount.pl b/bookcount.pl new file mode 100755 index 0000000000..1057492d8f --- /dev/null +++ b/bookcount.pl @@ -0,0 +1,194 @@ +#!/usr/bin/perl + +#written 7/3/2002 by Finlay +#script to display reports + +use strict; +use CGI; +use C4::Search; +use C4::Circulation::Circ2; +use C4::Output; + +# get all the data .... +my %env; +my $main='#cccc99'; +my $secondary='#ffffcc'; + +my $input = new CGI; +my $itm = $input->param('itm'); +my $bi = $input->param('bi'); +my $bib = $input->param('bib'); +my $branches = getbranches(\%env); + +my $idata = itemdatanum($itm); +my $data = bibitemdata($bi); + +my $homebranch = $branches->{$idata->{'homebranch'}}->{'branchname'}; +my $holdingbranch = $branches->{$idata->{'holdingbranch'}}->{'branchname'}; + +my ($lastmove, $message) = lastmove($itm); + +my $lastdate; +my $count; +if (not $lastmove) { + $lastdate = $message; + $count = issuessince($itm , 0); +} else { + $lastdate = $lastmove->{'datearrived'}; + $count = issuessince($itm ,$lastdate); +} + + +# make the page ... +print $input->header; + + +print startpage; +print startmenu('report'); +print center; + +print <<"EOF"; +
+$data->{'title'} ($data->{'author'})

+

+ + + + + + + +
+ BARCODE $idata->{'barcode'}
+ +Home Branch: $homebranch
+Current Branch: $holdingbranch
+Date arrived at current branch: $lastdate
+Number of issues since since the above date : $count
+ + + +EOF + +foreach my $branchcode (keys %$branches) { + my $issues = issuesat($itm, $branchcode); + my $date = lastseenat($itm, $branchcode); + my $seen = slashdate($date); + print << "EOF"; + + +EOF +} +print <<"EOF"; +
Branch No. of Issues Last seen at branch
$branches->{$branchcode}->{'branchname'} $issues $seen
+
+EOF + + +print endmenu('report'); +print endpage; + + +############################################## +# This stuff should probably go into C4::Search +# database includes +use DBI; +use C4::Database; + +sub itemdatanum { + my ($itemnumber)=@_; + my $dbh=C4Connect; + my $itm = $dbh->quote("$itemnumber"); + my $query = "select * from items where itemnumber=$itm"; + my $sth=$dbh->prepare($query); + $sth->execute; + my $data=$sth->fetchrow_hashref; + $sth->finish; + $dbh->disconnect; + return($data); +} + +sub lastmove { + my ($itemnumber)=@_; + my $dbh=C4Connect; + my $var1 = $dbh->quote($itemnumber); + my $sth =$dbh->prepare("select max(branchtransfers.datearrived) from branchtransfers where branchtransfers.itemnumber=$var1"); + $sth->execute; + my ($date) = $sth->fetchrow_array; + return(0, "Item has no branch transfers record") if not $date; + my $var2 = $dbh->quote($date); + $sth=$dbh->prepare("Select * from branchtransfers where branchtransfers.itemnumber=$var1 and branchtransfers.datearrived=$var2"); + $sth->execute; + my ($data) = $sth->fetchrow_hashref; + return(0, "Item has no branch transfers record") if not $data; + $sth->finish; + $dbh->disconnect; + return($data,""); + } + +sub issuessince { + my ($itemnumber, $date)=@_; + my $dbh=C4Connect; + my $itm = $dbh->quote($itemnumber); + my $dat = $dbh->quote($date); + my $sth=$dbh->prepare("Select count(*) from issues where issues.itemnumber=$itm and issues.timestamp > $dat"); + $sth->execute; + my $count=$sth->fetchrow_hashref; + $sth->finish; + $dbh->disconnect; + return($count->{'count(*)'}); +} + +sub issuesat { + my ($itemnumber, $brcd)=@_; + my $dbh=C4Connect; + my $itm = $dbh->quote($itemnumber); + my $brc = $dbh->quote($brcd); + my $query = "Select count(*) from issues where itemnumber=$itm and branchcode = $brc"; + my $sth=$dbh->prepare($query); + $sth->execute; + my ($count)=$sth->fetchrow_array; + $sth->finish; + $dbh->disconnect; + return($count); +} + +sub lastseenat { + my ($itemnumber, $brcd)=@_; + my $dbh=C4Connect; + my $itm = $dbh->quote($itemnumber); + my $brc = $dbh->quote($brcd); + my $query = "Select max(timestamp) from issues where itemnumber=$itm and branchcode = $brc"; + my $sth=$dbh->prepare($query); + $sth->execute; + my ($date1)=$sth->fetchrow_array; + $sth->finish; + $query = "Select max(datearrived) from branchtransfers where itemnumber=$itm and tobranch = $brc"; + my $sth=$dbh->prepare($query); + $sth->execute; + my ($date2)=$sth->fetchrow_array; + $sth->finish; + $dbh->disconnect; + $date2 =~ s/-//g; + $date2 =~ s/://g; + $date2 =~ s/ //g; + my $date; + if ($date1 < $date2) { + $date = $date2; + } else { + $date = $date1; + } + return($date); +} + + +##################################################### +# write date.... +sub slashdate { + my ($date) = @_; + if (not $date) { + return "never"; + } + my ($yr, $mo, $da, $hr, $mi) = (substr($date, 0, 4), substr($date, 4, 2), substr($date, 6, 2), substr($date, 8, 2), substr($date, 10, 2)); + return "$hr:$mi $da/$mo/$yr"; +} -- 2.39.5