Bug 7454 Initialize return arrays in ILS/Transaction/RenewAll
authorColin Campbell <colin.campbell@ptfs-europe.com>
Tue, 17 Jan 2012 14:46:09 +0000 (14:46 +0000)
committerPaul Poulain <paul.poulain@biblibre.com>
Tue, 21 Feb 2012 16:35:56 +0000 (17:35 +0100)
Explicitly clear these arrays and update them directly.
In practice item numbers were already in them when called
so that more items were being returned than were actually
renewed (or failed)

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Functionally sound patch, and tested in production

Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
C4/SIP/ILS/Transaction/RenewAll.pm

index a712806..2e49bf7 100644 (file)
@@ -38,6 +38,8 @@ sub do_renew_all {
        my $patron = $self->{patron};                                                   # SIP's  patron
        my $borrower = GetMember('cardnumber'=>$patron->id);    # Koha's patron
        my $all_ok = 1;
+    $self->{renewed} = [];
+    $self->{unrenewed} = [];
        foreach my $itemx (@{$patron->{items}}) {
                my $item_id = $itemx->{barcode};
                my $item = new ILS::Item $item_id;
@@ -52,9 +54,9 @@ sub do_renew_all {
                $self->do_renew_for($borrower);
                if ($self->ok) {
                        $item->{due_date} = $self->{due};
-                       push @{$self->renewed  }, $item_id;
+            push @{$self->{renewed}  }, $item_id;
                } else {
-                       push @{$self->unrenewed}, $item_id;
+            push @{$self->{unrenewed}}, $item_id;
                }
        }
        $self->ok($all_ok);