From 74bdd48bf6e267108bb5799b57e1e3b6ff8c328e Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Tue, 24 Mar 2020 07:02:25 +0000
Subject: [PATCH] Bug 26481: Add Koha::Item::Transfer->in_transit method

This method returns a boolean representing the in_transit state of the
transfer.

Test plan
1/ Run the included tests

Signed-off-by: Kathleen Milne <kathleen.milne@cne-siar.gov.uk>
---
 Koha/Item/Transfer.pm               | 13 ++++++++++
 t/db_dependent/Koha/Item/Transfer.t | 39 ++++++++++++++++++++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/Koha/Item/Transfer.pm b/Koha/Item/Transfer.pm
index 80ba0458ba..50c6df832c 100644
--- a/Koha/Item/Transfer.pm
+++ b/Koha/Item/Transfer.pm
@@ -82,6 +82,19 @@ sub transit {
 
     ModDateLastSeen( $self->item->itemnumber );
     return $self;
+
+}
+
+=head3 in_transit
+
+Boolean returning whether the transfer is in transit or waiting
+
+=cut
+
+sub in_transit {
+    my ($self) = @_;
+
+    return ( defined( $self->datesent ) && !defined( $self->datearrived ) );
 }
 
 =head3 receipt
diff --git a/t/db_dependent/Koha/Item/Transfer.t b/t/db_dependent/Koha/Item/Transfer.t
index 2814acec5c..da34292135 100644
--- a/t/db_dependent/Koha/Item/Transfer.t
+++ b/t/db_dependent/Koha/Item/Transfer.t
@@ -20,10 +20,11 @@
 use Modern::Perl;
 
 use Koha::Database;
+use Koha::DateUtils;
 
 use t::lib::TestBuilder;
 
-use Test::More tests => 3;
+use Test::More tests => 4;
 use Test::Exception;
 
 my $schema  = Koha::Database->new->schema;
@@ -167,5 +168,41 @@ subtest 'receipt tests' => sub {
     # Last seen
     ok( $item->datelastseen, 'Receipt set item datelastseen date' );
 
+    $schema->storage->txn_rollback;
+};
+
+subtest 'in_transit tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $library_from = $builder->build_object( { class => 'Koha::Libraries' } );
+    my $library_to   = $builder->build_object( { class => 'Koha::Libraries' } );
+    my $item     = $builder->build_sample_item(
+        {
+            homebranch    => $library_to->branchcode,
+            holdingbranch => $library_from->branchcode,
+        }
+    );
+
+    my $transfer = Koha::Item::Transfer->new(
+        {
+            itemnumber    => $item->itemnumber,
+            frombranch    => $library_from->branchcode,
+            tobranch      => $library_to->branchcode,
+            daterequested => dt_from_string,
+        }
+    )->store;
+
+    ok( !$transfer->in_transit, 'in_transit returns false when only daterequested is defined' );
+
+    $transfer->datesent(dt_from_string)->store;
+    ok( $transfer->in_transit, 'in_transit returns true when datesent is defined');
+
+    $transfer->datearrived(dt_from_string)->store;
+    ok( !$transfer->in_transit, 'in_transit returns false when datearrived is defined');
+
+
     $schema->storage->txn_rollback;
 };
-- 
2.20.1