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