DelItemCheck
MoveItemFromBiblio
CartToShelf
- ShelfToCart
GetAnalyticsCount
SearchItemsByField
SearchItems
}
use Carp;
+use Try::Tiny;
use C4::Context;
use C4::Koha;
use C4::Biblio;
}
}
-=head2 ShelfToCart
-
- ShelfToCart($itemnumber);
-
-Set the current shelving location of the item
-to shelving cart ('CART').
-
-=cut
-
-sub ShelfToCart {
- my ( $itemnumber ) = @_;
-
- unless ( $itemnumber ) {
- croak "FAILED ShelfToCart() - no itemnumber supplied";
- }
-
- ModItem({ location => 'CART'}, undef, $itemnumber);
-}
-
=head2 AddItemFromMarc
my ($biblionumber, $biblioitemnumber, $itemnumber)
logaction( "CATALOGUING", "ADD", $itemnumber, "item" )
if C4::Context->preference("CataloguingLog");
+ _after_item_action_hooks({ action => 'create', item_id => $itemnumber });
+
return ( $item->{biblionumber}, $item->{biblioitemnumber}, $itemnumber );
}
materials => undef,
new_status => undef,
notforloan => 0,
- # paidfor => undef, # commented, see bug 12817
price => undef,
replacementprice => undef,
replacementpricedate => undef,
# item status is possible
ModZebra( $biblionumber, "specialUpdate", "biblioserver" );
+ _after_item_action_hooks({ action => 'modify', item_id => $itemnumber });
+
logaction( "CATALOGUING", "MODIFY", $itemnumber, "item " . Dumper($item) )
if $log_action && C4::Context->preference("CataloguingLog");
}
my ( $itemnumber, $frombranch, $tobranch ) = @_;
my $dbh = C4::Context->dbh;
+ my $item = Koha::Items->find( $itemnumber );
# Remove the 'shelving cart' location status if it is being used.
- CartToShelf( $itemnumber ) if ( C4::Context->preference("ReturnToShelvingCart") );
+ CartToShelf( $itemnumber ) if ( $item->location eq 'CART' && $item->permanent_location ne 'CART' );
$dbh->do("UPDATE branchtransfers SET datearrived = NOW(), comments = ? WHERE itemnumber = ? AND datearrived IS NULL", undef, "Canceled, new transfer from $frombranch to $tobranch created", $itemnumber);
ModZebra( $biblionumber, "specialUpdate", "biblioserver" );
+ _after_item_action_hooks({ action => 'delete', item_id => $itemnumber });
+
#search item field code
logaction("CATALOGUING", "DELETE", $itemnumber, "item") if C4::Context->preference("CataloguingLog");
return $deleted;
holding.opac_info as holding_branch_opac_info,
home.opac_info as home_branch_opac_info
";
+ $query .= ",IF(tmp_holdsqueue.itemnumber,1,0) AS has_pending_hold" if !C4::Context->preference('AllowItemsOnHoldCheckout');
$query .= "
FROM items
LEFT JOIN branches AS holding ON items.holdingbranch = holding.branchcode
LEFT JOIN serial USING (serialid)
LEFT JOIN itemtypes ON itemtypes.itemtype = "
. (C4::Context->preference('item-level_itypes') ? 'items.itype' : 'biblioitems.itemtype');
+ $query .= "
+ LEFT JOIN tmp_holdsqueue USING (itemnumber)" if !C4::Context->preference('AllowItemsOnHoldCheckout');
$query .= q|
LEFT JOIN localization ON itemtypes.itemtype = localization.code
AND localization.entity = 'itemtypes'
itemnotes = ?,
itemnotes_nonpublic = ?,
holdingbranch = ?,
- paidfor = ?,
location = ?,
permanent_location = ?,
onloan = ?,
$item->{'itemnotes'},
$item->{'itemnotes_nonpublic'},
$item->{'holdingbranch'},
- $item->{'paidfor'},
$item->{'location'},
$item->{'permanent_location'},
$item->{'onloan'},
my $age = $rule->{age};
my $conditions = $rule->{conditions};
my $substitutions = $rule->{substitutions};
+ foreach ( @$substitutions ) {
+ ( $_->{item_field} ) = ( $_->{field} =~ /items\.(.*)/ );
+ }
my @params;
my $query = q|
- SELECT items.biblionumber, items.itemnumber
+ SELECT items.*
FROM items
LEFT JOIN biblioitems ON biblioitems.biblionumber = items.biblionumber
WHERE 1
my $itemnumber = $values->{itemnumber};
for my $substitution ( @$substitutions ) {
next unless $substitution->{field};
- C4::Items::ModItem( {$substitution->{field} => $substitution->{value}}, $biblionumber, $itemnumber )
+ next if ( defined $values->{ $substitution->{item_field} } and $values->{ $substitution->{item_field} } eq $substitution->{value} );
+ C4::Items::ModItem( { $substitution->{item_field} => $substitution->{value} }, $biblionumber, $itemnumber )
unless $report_only;
push @{ $report->{$itemnumber} }, $substitution;
}
return $report;
}
+=head2 _after_item_action_hooks
+
+Helper method that takes care of calling all plugin hooks
+
+=cut
+
+sub _after_item_action_hooks {
+ my ( $args ) = @_;
+
+ my $item_id = $args->{item_id};
+ my $action = $args->{action};
+
+ if ( C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins") ) {
+
+ my @plugins = Koha::Plugins->new->GetPlugins({
+ method => 'after_item_action',
+ });
+
+ if (@plugins) {
+
+ my $item = Koha::Items->find( $item_id );
+
+ foreach my $plugin ( @plugins ) {
+ try {
+ $plugin->after_item_action({ action => $action, item => $item, item_id => $item_id });
+ }
+ catch {
+ warn "$_";
+ };
+ }
+ }
+ }
+}
1;