From 2b37db0d7dfd6375621edcdbc83e740d3f2f8407 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 1 Oct 2018 18:05:44 -0300 Subject: [PATCH] Bug 21432: (bug 20899 follow-up) Fix patron's name display for deleted patrons MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens (cherry picked from commit 7fbd50e3aa07e46f0558d4f52231896937c998bc) Signed-off-by: Martin Renvoize --- Koha/Old/Checkout.pm | 1 + .../prog/en/modules/catalogue/issuehistory.tt | 2 +- t/db_dependent/Koha/Checkouts.t | 30 ++++++++++++++++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Koha/Old/Checkout.pm b/Koha/Old/Checkout.pm index 876e0cd18d..d602a63602 100644 --- a/Koha/Old/Checkout.pm +++ b/Koha/Old/Checkout.pm @@ -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 ); } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt index 785857a094..4a3d57d1b8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt @@ -44,7 +44,7 @@ [% FOREACH checkout IN checkouts %] [% IF Koha.Preference('intranetreadinghistory') AND CAN_user_circulate_circulate_remaining_permissions %] - [% INCLUDE 'patron-title.inc' patron => checkout.patron hide_patron_infos_if_needed=1 %] + [% IF checkout.patron %][%# Not set for deleted patron records %][% INCLUDE 'patron-title.inc' patron => checkout.patron hide_patron_infos_if_needed=1 %][% END %] [% END %] [% IF checkout.item.barcode %] [%# FIXME This test is not mandatory I think %] diff --git a/t/db_dependent/Koha/Checkouts.t b/t/db_dependent/Koha/Checkouts.t index c8ec4c52fa..dfb90e42a8 100644 --- a/t/db_dependent/Koha/Checkouts.t +++ b/t/db_dependent/Koha/Checkouts.t @@ -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; -- 2.39.5