@@ -, +, @@
---
Koha/Item.pm | 12 ++++++++++++
.../prog/en/modules/circ/article-requests.tt | 8 ++++++++
t/db_dependent/Koha/Items.t | 18 ++++++++++++++++--
3 files changed, 36 insertions(+), 2 deletions(-)
--- a/Koha/Item.pm
+++ a/Koha/Item.pm
@@ -235,6 +235,18 @@ sub current_holds {
return Koha::Holds->_new_from_dbic($hold_rs);
}
+=head3 is_waiting_or_transit
+
+ Returns true if an item has a waiting or transit hold
+
+=cut
+
+sub is_waiting_or_transit {
+ my ( $self ) = @_;
+ return 1 if Koha::Holds->search({ itemnumber => $self->itemnumber, found => ['W', 'T'] })->count > 0;
+ return q{};
+}
+
=head3 type
=cut
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt
@@ -42,6 +42,12 @@
[% END %]
+[% BLOCK item_status %][%# pass Koha::Item into myitem %]
+ [% IF myitem.onloan %]Checked out
+ [% ELSIF myitem.is_waiting_or_transit %]On hold
+ [% ELSE %]Available
+ [% END %]
+[% END %]
[% INCLUDE 'header.inc' %]
@@ -176,6 +182,7 @@
[% END %]
[% ar.item.itemcallnumber %]
+ [% PROCESS 'item_status' myitem = ar.item %]
[% ar.item.copynumber %] |
[% ar.item.enumchron %] |
@@ -284,6 +291,7 @@
[% END %]
[% ar.item.itemcallnumber %]
+ [% PROCESS 'item_status' myitem = ar.item %]
[% ar.item.copynumber %] |
[% ar.item.enumchron %] |
--- a/t/db_dependent/Koha/Items.t
+++ a/t/db_dependent/Koha/Items.t
@@ -19,7 +19,7 @@
use Modern::Perl;
-use Test::More tests => 8;
+use Test::More tests => 9;
use C4::Circulation;
use Koha::Item;
@@ -31,7 +31,7 @@ use t::lib::TestBuilder;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
-my $builder = t::lib::TestBuilder->new;
+our $builder = t::lib::TestBuilder->new;
my $biblioitem = $builder->build( { source => 'Biblioitem' } );
my $library = $builder->build( { source => 'Branch' } );
my $nb_of_items = Koha::Items->search->count;
@@ -121,5 +121,19 @@ subtest 'checkout' => sub {
$retrieved_item_1->delete;
is( Koha::Items->search->count, $nb_of_items + 1, 'Delete should have deleted the item' );
+subtest 'is_waiting_or_transit' => sub {
+ plan tests => 3;
+
+ my $hold = $builder->build_object({ class => 'Koha::Holds', value => { found => 'W' } });
+ is( Koha::Items->find($hold->itemnumber)->is_waiting_or_transit, 1,
+ 'Item is waiting' );
+ $hold->found('T')->store;
+ is( Koha::Items->find($hold->itemnumber)->is_waiting_or_transit, 1,
+ 'Item has transit hold' );
+ $hold->found(undef)->store;
+ is( Koha::Items->find($hold->itemnumber)->is_waiting_or_transit, q{},
+ 'Item should be available' );
+};
+
$schema->storage->txn_rollback;
--