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