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]); |