@@ -, +, @@ --- 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" ); --