[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>&nbsp;</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/\"/\&quot\;/g;
  return($inp);
}





More information about the Koha-cvs mailing list