[Koha-cvs] CVS: koha serials.pl,NONE,1.1.2.1
Steve Tonnesen
tonnesen at users.sourceforge.net
Thu Sep 25 19:40:25 CEST 2003
Update of /cvsroot/koha/koha
In directory sc8-pr-cvs1:/tmp/cvs-serv11778
Added Files:
Tag: rel-1-2
serials.pl
Log Message:
Added a basic serials module. Currently only tested with simple acquisitions.
--- NEW FILE ---
#!/usr/bin/perl
# serials.pl
#
# A simple serials module. Looks for all biblios where the "serial" flag is
# set to 1 and allows you to quickly add new issues for those serials. Barcode
# entry is manual, facilitating "throwaway" barcodes for serial issues.
#
# Written September 2003 by Steve Tonnesen <tonnesen at cmsd.bc.ca>
#
#
use strict;
use C4::Search;
use CGI;
use C4::Output;
use C4::Auth;
use C4::Context;
use C4::Biblio;
my $input = new CGI;
my $dbh=C4::Context->dbh();
my $flagsrequired;
$flagsrequired->{editcatalogue}=1;
my ($loggedinuser, $cookie, $sessionID) = checkauth($input, 0, $flagsrequired);
print $input->header;
#my ($analytictitle) = analytic($biblionumber,'t');
#my ($analyticauthor) = analytic($biblionumber,'a');
print startpage();
print startmenu('acquisitions');
print << "EOF";
<h1>Serials Module</h1>
EOF
if ($input->param('removeissues')) {
foreach ($input->param) {
if (m#remove-(\d+)#) {
my $itemnumber=$1;
my $sth=$dbh->prepare("update items set wthdrawn=1 where itemnumber=?");
$sth->execute($itemnumber);
}
}
my $biblionumber=$input->param('biblionumber');
my @items = ItemInfo(undef, $biblionumber);
print "<form method=post>
<input type=hidden name=biblionumber value=$biblionumber>
<input type=hidden name=removeissues value=1>
";
print "<table border=1 cellspacing=0 cellpadding=3 bgcolor=#cccccc>\n";
print "<tr><th colspan=6 background=/images/background-mem.gif>Select copies of <i>".$items[0]->{title}."</i> to remove from circulation</th></tr>\n";
print "<tr background=/images/background-mem.gif><th> </th><th>Barcode</th><th>Vol/No</th><th>Date/Desc</th><th>Notes</th></tr>\n";
foreach (@items) {
print "<tr>
<td valign=top align=center><input type=checkbox name=remove-$_->{itemnumber}></td>
<td valign=top align=center>$_->{barcode}</td>
<td valign=top align=center>$_->{volume} $_->{number}</td>
<td valign=top>$_->{volumeddesc}</td>
<td valign=top>$_->{notes}</td>\n";
}
print "<tr><td align=center colspan=6><input type=submit value=\"Retire Issues\"></td></tr>\n";
print "</table>\n";
print "<p><a href=serials.pl>Back to Serials List</a>\n";
} elsif ($input->param('addissue')) {
my $biblionumber=$input->param('biblionumber');
my ($count, @results) = getbiblio($biblionumber);
my $biblio=$results[0];
my $title=$biblio->{'title'};
if ($input->param('setbarcodes')) {
my $copies=$input->param('copies');
if ($copies>1) {
my $issn=$input->param('issn');
my $notes=$input->param('notes');
my $volume=$input->param('volume');
my $number=$input->param('number');
my $date=$input->param('date');
my $hidden=$input->hidden(-name => 'notes', -value => $notes)."\n";
$hidden.=$input->hidden(-name => 'volume', -value => $volume)."\n";
$hidden.=$input->hidden(-name => 'number', -value => $number)."\n";
$hidden.=$input->hidden(-name => 'issn', -value => $issn)."\n";
$hidden.=$input->hidden(-name => 'date', -value => $date)."\n";
$hidden.=$input->hidden(-name => 'biblionumber', -value => $biblionumber)."\n";
$hidden.=$input->hidden(-name => 'copies', -value => $copies)."\n";
print << "EOF";
<form method=post>
<input type=hidden name=addissue value=1>
$hidden
<input type=hidden name=createissues value=1>
<table border=1 cellspacing=0 cellpadding=3 bgcolor=#cccccc>
<tr><th colspan=2 background=/images/background-mem.gif><i>$title</i><br>Barcodes</th></tr>
EOF
if ($input->param('barcode')) {
my $barcode=$input->param('barcode');
print "<tr><td>Barcode for copy 1</td><td><input type=hidden name=barcode-1 value=$barcode>$barcode\n";
} else {
print "<tr><td>Barcode for copy 1</td><td><input name=barcode-1>\n";
}
for (my $i=2; $i<=$copies; $i++) {
print "<tr><td>Barcode for copy $i</td><td><input name=barcode-$i>\n";
}
print "<tr><td colspan=2 align=center><input type=submit value=\"Add Issue(s)\"></td></tr>\n";
print "</table>\n";
} else {
print "New issue added for <i>$title</i><br>\n";
my $biblioitem;
$biblioitem->{'biblionumber'}=$input->param('biblionumber');
$biblioitem->{'volume'}=$input->param('volume');
$biblioitem->{'number'}=$input->param('number');
$biblioitem->{'volumeddesc'}=$input->param('date');
$biblioitem->{'issn'}=$input->param('issn');
$biblioitem->{'notes'}=$input->param('notes');
$biblioitem->{'itemtype'}="PER";
my $biblioitemnumber=newbiblioitem($biblioitem);
my $item;
$item->{'biblionumber'}=$input->param('biblionumber');
$item->{'biblioitemnumber'}=$biblioitemnumber;
$item->{'homebranch'}='STWE';
$item->{'holdingbranch'}='STWE';
my @barcodes;
if ($input->param('barcode')) {
push @barcodes, $input->param('barcode');
newitems($item, @barcodes);
} else {
print "<font color=red size=+1>Error. No barcode entered. Item not added.</font><br>\n";
}
print "<hr><a href=serials.pl>Back to Serials List</a>\n";
}
} elsif ($input->param('createissues')) {
print "New issues added for <i>$title</i><br>\n";
my $biblioitem;
$biblioitem->{'biblionumber'}=$input->param('biblionumber');
$biblioitem->{'volume'}=$input->param('volume');
$biblioitem->{'number'}=$input->param('number');
$biblioitem->{'volumeddesc'}=$input->param('date');
$biblioitem->{'issn'}=$input->param('issn');
$biblioitem->{'notes'}=$input->param('notes');
$biblioitem->{'itemtype'}="PER";
my $biblioitemnumber=newbiblioitem($biblioitem);
my $item;
$item->{'biblionumber'}=$input->param('biblionumber');
$item->{'biblioitemnumber'}=$biblioitemnumber;
$item->{'homebranch'}='AF';
$item->{'holdingbranch'}='AF';
my @barcodes;
foreach ($input->param) {
if (m#barcode-(\d+)#) {
my $copynumber=$1;
if ($input->param($_)) {
push @barcodes, $input->param($_);
} else {
print "<font color=red size=+1>Error. No barcode entered. Copy #$copynumber not added.</font><br>\n";
}
}
}
newitems($item, @barcodes);
print "<hr><a href=serials.pl>Back to Serials List</a>\n";
} else {
my $sth=$dbh->prepare("select issn from biblioitems where biblionumber=? and issn !='' and !isnull(issn)");
$sth->execute($biblionumber);
my ($issn) = $sth->fetchrow;
print << "EOF";
<form method=post>
<input type=hidden name=addissue value=1>
<input type=hidden name=setbarcodes value=1>
<input type=hidden name=biblionumber value=$biblionumber>
<table border=1 cellspacing=0 cellpadding=3 bgcolor=#cccccc>
<tr><th colspan=2 background=/images/background-mem.gif>
<i>$title</i>
<br>
New Issue Details
</th></tr>
<tr><td><b>Volume</b>:</td><td><input name=volume size=10></td></tr>
<tr><td><b>Number</b>:</td><td><input name=number size=10></td></tr>
<tr><td><b>ISSN</b>:</td><td><input name=issn size=10 value=$issn></td></tr>
<tr><td><b>Date (or volume description):</td><td><input name=date size=20></td></tr>
<tr><td><b>Copies</b>:</td><td><input name=copies value=1 size=5></td></tr>
<tr><td><b>Barcode</b>:<br>(extra barcodes can be<br>entered on next page if<br>cataloguing multiple copies)</td><td valign=top><input name=barcode size=20></td></tr>
<tr><td valign=top><b>Notes</b>:</td><td><textarea rows=4 cols=40 wrap=physical name=notes></textarea></td></tr>
<tr><td colspan=2 align=center><input type=submit value="Add Issue(s)"></td></tr>
</table>
</form>
<p><a href=serials.pl>Back to Serials List</a>
EOF
}
} else {
my $sth=$dbh->prepare("select biblionumber,title from biblio where serial=1");
$sth->execute;
print "<table border=1 cellspacing=0 cellpadding=3 bgcolor=#cccccc>\n";
print "<tr background=/images/background-mem.gif><th colspan=4>Serials List</th></tr>\n";
while (my ($biblionumber, $title) = $sth->fetchrow) {
print "<tr><td>$title</td>
<td bgcolor=#dddddd><a href=serials.pl?biblionumber=$biblionumber&addissue=1>New Issue</a></td>
<td><a href=serials.pl?biblionumber=$biblionumber&removeissues=1>Retire Issues</a></td>
<td bgcolor=#dddddd><a href=modbib.pl?bibnum=$biblionumber&submit.x=1&submit.y=1>Modify Record</a></td>
</tr>\n";
}
print "</table>\n";
}
print endmenu();
print endpage();
sub tidyhtml {
my ($inp)=@_;
$inp=~ s/\"/\"\;/g;
return($inp);
}
More information about the Koha-cvs
mailing list