From 3545292513453b2383c406e96c3d51a3a2f5e6c5 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 28 Feb 2023 16:13:56 +0100 Subject: [PATCH] Bug 32894: Koha::Item->last_returned_by Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens --- C4/Circulation.pm | 2 +- Koha/Item.pm | 28 +++++----------------------- Koha/Schema/Result/Item.pm | 7 +++++++ 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 5333d46d4f..4fdc525330 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2621,7 +2621,7 @@ sub MarkIssueReturned { if ( C4::Context->preference('StoreLastBorrower') ) { my $item = Koha::Items->find( $itemnumber ); - $item->last_returned_by( $patron ); + $item->last_returned_by( $patron->borrowernumber )->store; } # Remove any OVERDUES related debarment if the borrower has no overdues diff --git a/Koha/Item.pm b/Koha/Item.pm index f437fd4215..bce8bb1c2a 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -596,35 +596,17 @@ sub get_transfers { =head3 last_returned_by -Gets and sets the last borrower to return an item. - -Accepts and returns Koha::Patron objects - -$item->last_returned_by( $borrowernumber ); +Gets the last borrower to return an item. $last_returned_by = $item->last_returned_by(); =cut sub last_returned_by { - my ( $self, $borrower ) = @_; - - my $items_last_returned_by_rs = Koha::Database->new()->schema()->resultset('ItemsLastBorrower'); - - if ($borrower) { - return $items_last_returned_by_rs->update_or_create( - { borrowernumber => $borrower->borrowernumber, itemnumber => $self->id } ); - } - else { - unless ( $self->{_last_returned_by} ) { - my $result = $items_last_returned_by_rs->single( { itemnumber => $self->id } ); - if ($result) { - $self->{_last_returned_by} = Koha::Patrons->find( $result->get_column('borrowernumber') ); - } - } - - return $self->{_last_returned_by}; - } + my ( $self ) = @_; + my $rs = $self->_result->last_returned_by; + return unless $rs; + return Koha::Patron->_new_from_dbic($rs); } =head3 can_article_request diff --git a/Koha/Schema/Result/Item.pm b/Koha/Schema/Result/Item.pm index 50a9aac2cd..d29296b77e 100644 --- a/Koha/Schema/Result/Item.pm +++ b/Koha/Schema/Result/Item.pm @@ -982,6 +982,13 @@ __PACKAGE__->has_many( } ); +__PACKAGE__->might_have( + "last_returned_by", + "Koha::Schema::Result::ItemsLastBorrower", + { "foreign.itemnumber" => "self.itemnumber" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + use C4::Context; sub effective_itemtype { my ( $self ) = @_; -- 2.39.5