@@ -, +, @@
---
Koha/Item.pm | 80 +++++++++++++++++++-
.../opac-tmpl/bootstrap/en/modules/opac-user.tt | 4 +-
t/db_dependent/Circulation/transfers.t | 27 ++++++-
3 files changed, 107 insertions(+), 4 deletions(-)
--- a/Koha/Item.pm
+++ a/Koha/Item.pm
@@ -26,6 +26,8 @@ use Koha::Database;
use Koha::Patrons;
use Koha::Libraries;
+use C4::Circulation qw( GetTransfers );
+
use base qw(Koha::Object);
=head1 NAME
@@ -107,7 +109,83 @@ sub last_returned_by {
}
}
-=head3 type
+=head3 _get_transit_data
+
+=cut
+
+sub _get_transit_data {
+ my ($self) = @_;
+
+ return $self->{_transit_data} if defined $self->{_transit_data};
+
+ $self->{_transit_data} = {};
+
+ my ( $date, $from, $to ) = C4::Circulation::GetTransfers( $self->id );
+
+ $self->{_transit_data}->{date} = $date;
+ $self->{_transit_data}->{from} = $from;
+ $self->{_transit_data}->{to} = $to;
+
+ return $self->{_transit_data};
+}
+
+=head3 is_in_transit
+
+$item->is_in_transit();
+
+=cut
+
+sub is_in_transit {
+ my ($self) = @_;
+
+ my $data = $self->_get_transit_data();
+
+ return $data->{date} ? 1 : 0;
+}
+
+=head3 in_transit_date
+
+my $transfer_date = $item->in_transit_date();
+
+=cut
+
+sub in_transit_date {
+ my ($self) = @_;
+
+ my $data = $self->_get_transit_data();
+
+ return $data->{date};
+}
+
+=head3 in_transit_to
+
+my $library_id = $item->in_transit_to();
+
+=cut
+
+sub in_transit_to {
+ my ($self) = @_;
+
+ my $data = $self->_get_transit_data();
+
+ return $data->{to};
+}
+
+=head3 in_transit_from
+
+my $library_id = $item->in_transit_from();
+
+=cut
+
+sub in_transit_from {
+ my ($self) = @_;
+
+ my $data = $self->_get_transit_data();
+
+ return $data->{from};
+}
+
+=head3 _type
=cut
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
@@ -604,8 +604,8 @@
[% END %]
[% ELSE %]
[% IF ( RESERVE.is_in_transit ) %]
- Item in transit from [% RESERVE.frombranch %] since
- [% RESERVE.datesent | $KohaDates %]
+ Item in transit from [% Branches.GetName( RESERVE.item.in_transit_from ) %] since
+ [% RESERVE.item.in_transit_date | $KohaDates %]
[% ELSIF ( RESERVE.suspend ) %]
Suspended [% IF ( RESERVE.suspend_until ) %] until [% RESERVE.suspend_until %] [% END %]
[% ELSE %]
--- a/t/db_dependent/Circulation/transfers.t
+++ a/t/db_dependent/Circulation/transfers.t
@@ -8,11 +8,12 @@ use C4::Branch;
use C4::Circulation;
use Koha::Database;
use Koha::DateUtils;
+use Koha::Items;
use DateTime::Duration;
use t::lib::TestBuilder;
-use Test::More tests => 22;
+use Test::More tests => 37;
use Test::Deep;
BEGIN {
@@ -77,6 +78,18 @@ my @sampleitem2 = C4::Items::AddItem(
);
my $item_id2 = $sampleitem2[2];
+my $item = Koha::Items->find( $item_id1 );
+my $transit_data = $item->_get_transit_data();
+is( ref($transit_data), 'HASH', '_get_transit_data() returns hashref even if item is not in transit' );
+is( $transit_data->{date}, undef, 'Got transit date undef from _get_transit_data()' );
+is( $transit_data->{from}, undef, 'Got transit from undef from _get_transit_data()' );
+is( $transit_data->{to}, undef, 'Got transit to undef from _get_tranist_data()' );
+
+is( $item->is_in_transit(), 0, 'Item is not in transit' );
+is( $item->in_transit_date(), undef, 'Transit date is undef' );
+is( $item->in_transit_to(), undef, 'Transit to library is undef' );
+is( $item->in_transit_from(), undef, 'Transit from library is undef' );
+
#Add transfers
ModItemTransfer(
$item_id1,
@@ -116,6 +129,18 @@ cmp_deeply(
[ re('^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$'), $samplebranch1->{branchcode}, $samplebranch2->{branchcode} ],
"Transfers of the item1"
); #NOTE: Only the first transfer is returned
+
+$item = Koha::Items->find( $item_id1 );
+$transit_data = $item->_get_transit_data();
+is( $transit_data->{date}, $transfers[0], 'Got transit date correctly from _get_transit_data()' );
+is( $transit_data->{from}, $samplebranch1->{branchcode}, 'Got transit from correctly from _get_transit_data()' );
+is( $transit_data->{to}, $samplebranch2->{branchcode}, 'Got transit to correctly from _get_tranist_data()' );
+
+is( $item->is_in_transit(), 1, 'Item is in transit' );
+is( $item->in_transit_date(), $transfers[0], 'Transit date is correct' );
+is( $item->in_transit_to(), $samplebranch2->{branchcode}, 'Transit to library is correct' );
+is( $item->in_transit_from(), $samplebranch1->{branchcode}, 'Transit from library is correct' );
+
@transfers = GetTransfers;
is_deeply( \@transfers, [],
"GetTransfers without params returns an empty array" );
--