# and we would have no way to remove it (except manually in zebra, but I bet it would be very hard to handle the problem)
ModZebra($biblionumber, "delete_record", "biblioserver", undef);
- # delete biblio from Koha tables and save in deletedbiblio
- $error = &_koha_delete_biblio( $dbh, $biblionumber );
-
# delete biblioitems and items from Koha tables and save in deletedbiblioitems,deleteditems
$sth =
$dbh->prepare(
while ( my $biblioitemnumber = $sth->fetchrow ) {
# delete this biblioitem
- $error = &_koha_delete_biblioitems( $dbh, $biblioitemnumber );
+ $error = _koha_delete_biblioitems( $dbh, $biblioitemnumber );
return $error if $error;
}
+
+ # delete biblio from Koha tables and save in deletedbiblio
+ # must do this *after* _koha_delete_biblioitems, otherwise
+ # delete cascade will prevent deletedbiblioitems rows
+ # from being generated by _koha_delete_biblioitems
+ $error = _koha_delete_biblio( $dbh, $biblionumber );
+
&logaction(C4::Context->userenv->{'number'},"CATALOGUING","DELETE",$biblionumber,"")
if C4::Context->preference("CataloguingLog");
return;
my $error;
- # get the next biblionumber
- my $sth = $dbh->prepare("SELECT MAX(biblionumber) FROM biblio");
- $sth->execute();
- my $data = $sth->fetchrow_arrayref();
- my $biblionumber = $$data[0] + 1;
# set the series flag
my $serial = 0;
if ( $biblio->{'seriestitle'} ) { $serial = 1 };
- $sth->finish();
my $query =
"INSERT INTO biblio
- SET biblionumber = ?,
- frameworkcode = ?,
+ SET frameworkcode = ?,
author = ?,
title = ?,
unititle =?,
datecreated=NOW(),
abstract = ?
";
- $sth = $dbh->prepare($query);
+ my $sth = $dbh->prepare($query);
$sth->execute(
- $biblionumber,
$frameworkcode,
$biblio->{'author'},
$biblio->{'title'},
$biblio->{'abstract'}
);
+ my $biblionumber = $dbh->{'mysql_insertid'};
if ( $dbh->errstr ) {
$error.="ERROR in _koha_add_biblio $query".$dbh->errstr;
warn $error;
sub _koha_add_biblioitem {
my ( $dbh, $biblioitem ) = @_;
my $error;
- my $sth = $dbh->prepare("SELECT MAX(biblioitemnumber) FROM biblioitems");
- $sth->execute();
- my $data = $sth->fetchrow_arrayref;
- my $bibitemnum = $$data[0] + 1;
- $sth->finish();
my ($cn_sort) = GetClassSort($biblioitem->{'biblioitems.cn_source'}, $biblioitem->{'cn_class'}, $biblioitem->{'cn_item'} );
my $query =
"INSERT INTO biblioitems SET
- biblioitemnumber = ?,
biblionumber = ?,
volume = ?,
number = ?,
cn_sort = ?,
totalissues = ?
";
- $sth = $dbh->prepare($query);
+ my $sth = $dbh->prepare($query);
$sth->execute(
- $bibitemnum,
$biblioitem->{'biblionumber'},
$biblioitem->{'volume'},
$biblioitem->{'number'},
$cn_sort,
$biblioitem->{'totalissues'}
);
+ my $bibitemnum = $dbh->{'mysql_insertid'};
if ( $dbh->errstr ) {
$error.="ERROR in _koha_add_biblioitem $query".$dbh->errstr;
warn $error;
my ( $dbh, $item, $barcode ) = @_;
my $error;
- my $sth = $dbh->prepare("SELECT MAX(itemnumber) FROM items");
- $sth->execute();
- my $data = $sth->fetchrow_hashref;
- my $itemnumber = $data->{'MAX(itemnumber)'} + 1;
- $sth->finish;
-
my ($items_cn_sort) = GetClassSort($item->{'items.cn_source'}, $item->{'itemcallnumber'}, "");
# if dateaccessioned is provided, use it. Otherwise, set to NOW()
}
my $query =
"INSERT INTO items SET
- itemnumber = ?,
biblionumber = ?,
biblioitemnumber = ?,
barcode = ?,
materials = ?,
uri = ?
";
- $sth = $dbh->prepare($query);
+ my $sth = $dbh->prepare($query);
$sth->execute(
- $itemnumber,
$item->{'biblionumber'},
$item->{'biblioitemnumber'},
$barcode,
$item->{'materials'},
$item->{'uri'},
);
+ my $itemnumber = $dbh->{'mysql_insertid'};
if ( defined $sth->errstr ) {
$error.="ERROR in _koha_new_items $query".$sth->errstr;
}