Bug 14673: Work around change to AddIssue return
authorColin Campbell <colin.campbell@ptfs-europe.com>
Tue, 11 Aug 2015 15:51:53 +0000 (16:51 +0100)
committerLiz Rea <wizzyrea@gmail.com>
Thu, 10 Dec 2015 01:26:25 +0000 (14:26 +1300)
Return from AddIssue used to be due date or undef.
Now it is less straightforward returning am issue object
if an issue row is created or undef. If the issue is a renewal
undef is returned. As that case was not handled properly it
caused the server site to crash the listener causing a
communications error on the client.

Signed-off-by: Frederic Demians <f.demians@tamil.fr>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit b4967bf0ed60c5cca0c7f60591d21d2919f477a1)
Signed-off-by: Frédéric Demians <f.demians@tamil.fr>
(cherry picked from commit 374f5f4a38883d351d441412cfdf4785bbe7f4b6)
Signed-off-by: Liz Rea <wizzyrea@gmail.com>

C4/SIP/ILS/Transaction.pm
C4/SIP/ILS/Transaction/Checkout.pm
C4/SIP/ILS/Transaction/Renew.pm

index 4e74e93..c751125 100644 (file)
@@ -8,6 +8,8 @@ use Carp;
 use strict;
 use warnings;
 use C4::Context;
+use C4::Circulation qw( GetItemIssue );
+use Koha::DateUtils;
 
 my %fields = (
        ok            => 0,
@@ -35,6 +37,24 @@ sub new {
        return bless $self, $class;
 }
 
+sub duedatefromissue {
+    my ($self, $iss, $itemnum) = @_;
+    my $due_dt;
+    if (defined $iss ) {
+        $due_dt = dt_from_string( $iss->date_due() );
+    } # renew from AddIssue ??
+    else {
+        # need to reread the issue to get due date
+        $iss = GetItemIssue($itemnum);
+        if ($iss && $iss->{date_due} ) {
+            $due_dt = dt_from_string( $iss->{date_due} );
+        }
+    }
+    return $due_dt;
+}
+
+
+
 sub DESTROY {
     # be cool
 }
index 2b41c13..f046b15 100644 (file)
@@ -140,14 +140,8 @@ sub do_checkout {
                # . "w/ \$borrower: " . Dumper($borrower)
                . "w/ C4::Context->userenv: " . Dumper(C4::Context->userenv);
     my $issue = AddIssue( $borrower, $barcode, $overridden_duedate, 0 );
-    my $due_dt = dt_from_string( $issue->date_due() );
-    if ($due_dt) {
-        $self->{due} = $due_dt->clone();
-    } else {
-        $self->{due} = undef;
-    }
+    $self->{due} = $self->duedatefromissue($issue, $itemnumber);
 
-    #$self->{item}->due_date($due);
        $self->ok(1);
        return $self;
 }
index e0f905b..699f566 100644 (file)
@@ -45,12 +45,8 @@ sub do_renew_for  {
 
     }
     if ($renewokay){
-        $self->{due} = undef;
         my $issue = AddIssue( $borrower, $self->{item}->id, undef, 0 );
-        my $due_date = dt_from_string( $issue->date_due() );
-        if ($due_date) {
-            $self->{due} = $due_date;
-        }
+        $self->{due} = $self->duedatefromissue($issue, $self->{item}->{itemnumber});
         $self->renewal_ok(1);
     } else {
         $renewerror=~s/on_reserve/Item unavailable due to outstanding holds/;