=head2 DelItem
- DelItem($dbh, $biblionumber, $itemnumber);
+ DelItem({ itemnumber => $itemnumber, [ biblionumber => $biblionumber ] } );
Exported function (core API) for deleting an item record in Koha.
=cut
sub DelItem {
- my ( $dbh, $biblionumber, $itemnumber ) = @_;
-
+ my ( $params ) = @_;
+
+ my $itemnumber = $params->{itemnumber};
+ my $biblionumber = $params->{biblionumber};
+
+ unless ($biblionumber) {
+ $biblionumber = C4::Biblio::GetBiblionumberFromItemnumber($itemnumber);
+ }
+
+ # If there is no biblionumber for the given itemnumber, there is nothing to delete
+ return 0 unless $biblionumber;
+
# FIXME check the item has no current issues
-
- _koha_delete_item( $dbh, $itemnumber );
+ my $deleted = _koha_delete_item( $itemnumber );
# get the MARC record
my $record = GetMarcBiblio($biblionumber);
#search item field code
logaction("CATALOGUING", "DELETE", $itemnumber, "item") if C4::Context->preference("CataloguingLog");
+ return $deleted;
}
=head2 CheckItemPreSave
sub GetItemInfosOf {
my @itemnumbers = @_;
- my $query = '
+ my $itemnumber_values = @itemnumbers ? join( ',', @itemnumbers ) : "''";
+
+ my $query = "
SELECT *
FROM items
- WHERE itemnumber IN (' . join( ',', @itemnumbers ) . ')
- ';
+ WHERE itemnumber IN ($itemnumber_values)
+ ";
return get_infos_of( $query, 'itemnumber' );
}
itemtypes.notforloan as notforloan_per_itemtype,
holding.branchurl,
holding.branchname,
- holding.opac_info as branch_opac_info
+ holding.opac_info as holding_branch_opac_info,
+ home.opac_info as home_branch_opac_info
FROM items
LEFT JOIN branches AS holding ON items.holdingbranch = holding.branchcode
LEFT JOIN branches AS home ON items.homebranch=home.branchcode
} elsif ($countanalytics > 0){
$error = "linked_analytics";
} else {
- DelItem($dbh, $biblionumber, $itemnumber);
+ DelItem(
+ {
+ biblionumber => $biblionumber,
+ itemnumber => $itemnumber
+ }
+ );
return 1;
}
}
$query =~ s/,$//;
$query .= " WHERE itemnumber=?";
push @bind, $item->{'itemnumber'};
- my $sth = C4::Context->dbh->prepare($query);
+ my $sth = $dbh->prepare($query);
$sth->execute(@bind);
- if ( C4::Context->dbh->errstr ) {
- $error.="ERROR in _koha_modify_item $query".$dbh->errstr;
+ if ( $sth->err ) {
+ $error.="ERROR in _koha_modify_item $query: ".$sth->errstr;
warn $error;
}
return ($item->{'itemnumber'},$error);
=head2 _koha_delete_item
- _koha_delete_item( $dbh, $itemnum );
+ _koha_delete_item( $itemnum );
Internal function to delete an item record from the koha tables
=cut
sub _koha_delete_item {
- my ( $dbh, $itemnum ) = @_;
+ my ( $itemnum ) = @_;
+ my $dbh = C4::Context->dbh;
# save the deleted item to deleteditems table
my $sth = $dbh->prepare("SELECT * FROM items WHERE itemnumber=?");
$sth->execute($itemnum);
my $data = $sth->fetchrow_hashref();
+
+ # There is no item to delete
+ return 0 unless $data;
+
my $query = "INSERT INTO deleteditems SET ";
my @bind = ();
foreach my $key ( keys %$data ) {
# delete from items table
$sth = $dbh->prepare("DELETE FROM items WHERE itemnumber=?");
- $sth->execute($itemnum);
- return;
+ my $deleted = $sth->execute($itemnum);
+ return ( $deleted == 1 ) ? 1 : 0;
}
=head2 _marc_from_item_hash
$subfield_data{mandatory} = $tagslib->{$tag}->{$subfield}->{mandatory};
$subfield_data{repeatable} = $tagslib->{$tag}->{$subfield}->{repeatable};
$subfield_data{hidden} = "display:none"
- if $tagslib->{$tag}->{$subfield}->{hidden};
+ if ( ( $tagslib->{$tag}->{$subfield}->{hidden} > 4 )
+ || ( $tagslib->{$tag}->{$subfield}->{hidden} < -4 ) );
my ( $x, $defaultvalue );
if ($itemrecord) {
( $x, $defaultvalue ) = _find_value( $tag, $subfield, $itemrecord );
$authorised_lib{$value} = $lib;
}
}
- $subfield_data{marc_value} = CGI::scrolling_list(
- -name => 'field_value',
- -values => \@authorised_values,
- -default => "$defaultvalue",
- -labels => \%authorised_lib,
- -size => 1,
- -tabindex => '',
- -multiple => 0,
- );
+ $subfield_data{marc_value} = {
+ type => 'select',
+ values => \@authorised_values,
+ default => "$defaultvalue",
+ labels => \%authorised_lib,
+ };
} elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) {
# opening plugin
my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};