Bug 21432: (bug 20899 follow-up) Fix patron's name display for deleted patrons
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 1 Oct 2018 21:05:44 +0000 (18:05 -0300)
committerNick Clemens <nick@bywatersolutions.com>
Wed, 3 Oct 2018 17:18:44 +0000 (17:18 +0000)
Template process failed: undef error - DBIC result _type  isn't of the
_type Borrower at
/home/vagrant/kohaclone/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt
line 54.

Koha::Old::Checkout->patron should return undef if the patron record has
been removed.

Test plan:
- Check 2 items out on the same bibliographic record
- Check them in
- Delete the patron's record of one of the issuer (Is this word really
exist?)
- View the checkout history for this bib record (Home › Catalog ›
Checkout history)
=> Without this patch you get the error
=> With this patch applied one of the "Patron" cells will be empty

Signed-off-by: Claudio <costalc@gmail.com>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Koha/Old/Checkout.pm
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt
t/db_dependent/Koha/Checkouts.t

index 876e0cd..d602a63 100644 (file)
@@ -54,6 +54,7 @@ Return the patron for who the checkout has been done
 sub patron {
     my ( $self ) = @_;
     my $patron_rs = $self->_result->borrower;
+    return unless $patron_rs;
     return Koha::Patron->_new_from_dbic( $patron_rs );
 }
 
index caede4d..215b40d 100644 (file)
         [% FOREACH checkout IN checkouts %]
             <tr>
                 [% IF show_patron_column %]
-                <td>[% INCLUDE 'patron-title.inc' patron => checkout.patron hide_patron_infos_if_needed=1 %]</td>
+                    <td>
+                        [% IF checkout.patron %][%# Not set for deleted patron records %]
+                            [% INCLUDE 'patron-title.inc' patron => checkout.patron hide_patron_infos_if_needed=1 %]
+                        [% END %]
+                    </td>
                 [% END %]
                 <td>
                     [% IF checkout.item.barcode %] [%# FIXME This test is not mandatory I think %]
index c8ec4c5..dfb90e4 100644 (file)
@@ -21,6 +21,7 @@ use Modern::Perl;
 
 use Test::More tests => 7;
 
+use C4::Circulation;
 use Koha::Checkouts;
 use Koha::Database;
 use Koha::DateUtils qw( dt_from_string );
@@ -94,10 +95,31 @@ subtest 'item' => sub {
 };
 
 subtest 'patron' => sub {
-    plan tests => 2;
-    my $p = $new_checkout_1->patron;
-    is( ref($p), 'Koha::Patron', 'Koha::Checkout->patron should return a Koha::Patron' );
-    is( $p->borrowernumber, $patron->{borrowernumber}, 'Koha::Checkout->patron should return the correct patron' );
+    plan tests => 3;
+    my $patron = $builder->build_object({class=>'Koha::Patrons', value => {branchcode => $library->{branchcode}}});
+
+    my $item = $builder->build_object( { class=> 'Koha::Items' } );
+    my $checkout = Koha::Checkout->new(
+        {   borrowernumber => $patron->borrowernumber,
+            itemnumber     => $item->itemnumber,
+            branchcode     => $library->{branchcode},
+        }
+    )->store;
+
+    my $p = $checkout->patron;
+    is( ref($p), 'Koha::Patron',
+        'Koha::Checkout->patron should return a Koha::Patron' );
+    is( $p->borrowernumber, $patron->borrowernumber,
+        'Koha::Checkout->patron should return the correct patron' );
+
+    # Testing Koha::Old::Checkout->patron now
+    my $issue_id = $checkout->issue_id;
+    C4::Circulation::MarkIssueReturned( $p->borrowernumber, $checkout->itemnumber );
+    $p->delete;
+    my $old_issue = Koha::Old::Checkouts->find($issue_id);
+    is( $old_issue->patron, undef,
+        'Koha::Checkout->patron should return undef if the patron record has been deleted'
+    );
 };
 
 $retrieved_checkout_1->delete;