Bug 21432: (bug 20899 follow-up) Fix patron's name display for deleted patrons

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>
This commit is contained in:
Jonathan Druart 2018-10-01 18:05:44 -03:00 committed by Nick Clemens
parent 051eef767a
commit 7fbd50e3aa
3 changed files with 32 additions and 5 deletions

View 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 );
}

View file

@ -48,7 +48,11 @@
[% 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 %]

View 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;