|
Lines 32-38
BEGIN {
Link Here
|
| 32 |
Item2Marc |
32 |
Item2Marc |
| 33 |
ModDateLastSeen |
33 |
ModDateLastSeen |
| 34 |
ModItemTransfer |
34 |
ModItemTransfer |
| 35 |
DelItem |
|
|
| 36 |
CheckItemPreSave |
35 |
CheckItemPreSave |
| 37 |
GetItemsForInventory |
36 |
GetItemsForInventory |
| 38 |
GetItemsInfo |
37 |
GetItemsInfo |
|
Lines 425-464
sub ModDateLastSeen {
Link Here
|
| 425 |
$item->store({ log_action => 0 }); |
424 |
$item->store({ log_action => 0 }); |
| 426 |
} |
425 |
} |
| 427 |
|
426 |
|
| 428 |
=head2 DelItem |
|
|
| 429 |
|
| 430 |
DelItem({ itemnumber => $itemnumber, [ biblionumber => $biblionumber ] } ); |
| 431 |
|
| 432 |
Exported function (core API) for deleting an item record in Koha. |
| 433 |
|
| 434 |
=cut |
| 435 |
|
| 436 |
sub DelItem { |
| 437 |
my ( $params ) = @_; |
| 438 |
|
| 439 |
my $itemnumber = $params->{itemnumber}; |
| 440 |
my $biblionumber = $params->{biblionumber}; |
| 441 |
|
| 442 |
unless ($biblionumber) { |
| 443 |
my $item = Koha::Items->find( $itemnumber ); |
| 444 |
$biblionumber = $item ? $item->biblio->biblionumber : undef; |
| 445 |
} |
| 446 |
|
| 447 |
# If there is no biblionumber for the given itemnumber, there is nothing to delete |
| 448 |
return 0 unless $biblionumber; |
| 449 |
|
| 450 |
# FIXME check the item has no current issues |
| 451 |
my $deleted = _koha_delete_item( $itemnumber ); |
| 452 |
|
| 453 |
ModZebra( $biblionumber, "specialUpdate", "biblioserver" ); |
| 454 |
|
| 455 |
_after_item_action_hooks({ action => 'delete', item_id => $itemnumber }); |
| 456 |
|
| 457 |
#search item field code |
| 458 |
logaction("CATALOGUING", "DELETE", $itemnumber, "item") if C4::Context->preference("CataloguingLog"); |
| 459 |
return $deleted; |
| 460 |
} |
| 461 |
|
| 462 |
=head2 CheckItemPreSave |
427 |
=head2 CheckItemPreSave |
| 463 |
|
428 |
|
| 464 |
my $item_ref = TransformMarcToKoha($marc, 'items'); |
429 |
my $item_ref = TransformMarcToKoha($marc, 'items'); |
|
Lines 1480-1491
sub DelItemCheck {
Link Here
|
| 1480 |
my $status = ItemSafeToDelete( $biblionumber, $itemnumber ); |
1445 |
my $status = ItemSafeToDelete( $biblionumber, $itemnumber ); |
| 1481 |
|
1446 |
|
| 1482 |
if ( $status == 1 ) { |
1447 |
if ( $status == 1 ) { |
| 1483 |
DelItem( |
1448 |
my $item = Koha::Items->find($itemnumber); |
| 1484 |
{ |
1449 |
$item->move_to_deleted; |
| 1485 |
biblionumber => $biblionumber, |
1450 |
$item->delete; |
| 1486 |
itemnumber => $itemnumber |
|
|
| 1487 |
} |
| 1488 |
); |
| 1489 |
} |
1451 |
} |
| 1490 |
return $status; |
1452 |
return $status; |
| 1491 |
} |
1453 |
} |
|
Lines 1518-1560
sub _mod_item_dates { # date formatting for date fields in item hash
Link Here
|
| 1518 |
} |
1480 |
} |
| 1519 |
} |
1481 |
} |
| 1520 |
|
1482 |
|
| 1521 |
=head2 _koha_delete_item |
|
|
| 1522 |
|
| 1523 |
_koha_delete_item( $itemnum ); |
| 1524 |
|
| 1525 |
Internal function to delete an item record from the koha tables |
| 1526 |
|
| 1527 |
=cut |
| 1528 |
|
| 1529 |
sub _koha_delete_item { |
| 1530 |
my ( $itemnum ) = @_; |
| 1531 |
|
| 1532 |
my $dbh = C4::Context->dbh; |
| 1533 |
# save the deleted item to deleteditems table |
| 1534 |
my $sth = $dbh->prepare("SELECT * FROM items WHERE itemnumber=?"); |
| 1535 |
$sth->execute($itemnum); |
| 1536 |
my $data = $sth->fetchrow_hashref(); |
| 1537 |
|
| 1538 |
# There is no item to delete |
| 1539 |
return 0 unless $data; |
| 1540 |
|
| 1541 |
my $query = "INSERT INTO deleteditems SET "; |
| 1542 |
my @bind = (); |
| 1543 |
foreach my $key ( keys %$data ) { |
| 1544 |
next if ( $key eq 'timestamp' ); # timestamp will be set by db |
| 1545 |
$query .= "$key = ?,"; |
| 1546 |
push( @bind, $data->{$key} ); |
| 1547 |
} |
| 1548 |
$query =~ s/\,$//; |
| 1549 |
$sth = $dbh->prepare($query); |
| 1550 |
$sth->execute(@bind); |
| 1551 |
|
| 1552 |
# delete from items table |
| 1553 |
$sth = $dbh->prepare("DELETE FROM items WHERE itemnumber=?"); |
| 1554 |
my $deleted = $sth->execute($itemnum); |
| 1555 |
return ( $deleted == 1 ) ? 1 : 0; |
| 1556 |
} |
| 1557 |
|
| 1558 |
=head2 _marc_from_item_hash |
1483 |
=head2 _marc_from_item_hash |
| 1559 |
|
1484 |
|
| 1560 |
my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]); |
1485 |
my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]); |