Lines 927-932
sub get_transfers {
Link Here
|
927 |
return Koha::Item::Transfers->_new_from_dbic($transfers_rs); |
927 |
return Koha::Item::Transfers->_new_from_dbic($transfers_rs); |
928 |
} |
928 |
} |
929 |
|
929 |
|
|
|
930 |
=head3 last_returned_by_all |
931 |
|
932 |
Returns all patrons who have returned this item, ordered by most recent first. |
933 |
|
934 |
=cut |
935 |
|
936 |
sub last_returned_by_all { |
937 |
my ($self) = @_; |
938 |
|
939 |
my $max_stored_borrowers = C4::Context->preference('StoreLastBorrower') || 0; |
940 |
|
941 |
my @borrowers = $self->_result->last_returned_by( |
942 |
{}, |
943 |
{ |
944 |
order_by => [ { '-desc' => 'created_on' }, { '-desc' => 'id' } ], |
945 |
( $max_stored_borrowers > 0 ? ( rows => $max_stored_borrowers ) : () ), |
946 |
} |
947 |
); |
948 |
|
949 |
return map { Koha::Patron->_new_from_dbic( $_->borrowernumber ) } @borrowers; |
950 |
} |
951 |
|
930 |
=head3 last_returned_by |
952 |
=head3 last_returned_by |
931 |
|
953 |
|
932 |
Gets and sets the last patron to return an item. |
954 |
Gets and sets the last patron to return an item. |
Lines 941-953
my $patron = $item->last_returned_by();
Link Here
|
941 |
|
963 |
|
942 |
sub last_returned_by { |
964 |
sub last_returned_by { |
943 |
my ( $self, $borrowernumber ) = @_; |
965 |
my ( $self, $borrowernumber ) = @_; |
|
|
966 |
|
944 |
if ($borrowernumber) { |
967 |
if ($borrowernumber) { |
945 |
$self->_result->update_or_create_related( |
968 |
|
|
|
969 |
# Clean up the table by deleting older entries, depending on what StoreLastBorrower is set to |
970 |
my $max_stored_borrowers = C4::Context->preference('StoreLastBorrower') || 0; |
971 |
|
972 |
# If StoreLastBorrower is 0 or disabled, bail without storing anything. Also delete any remaining rows from the table. |
973 |
if ( $max_stored_borrowers == 0 ) { |
974 |
$self->_result->last_returned_by->delete_all; |
975 |
return $self; |
976 |
} |
977 |
|
978 |
#Create an entry for last_returned_by |
979 |
my $new_record = $self->_result->create_related( |
946 |
'last_returned_by', |
980 |
'last_returned_by', |
947 |
{ borrowernumber => $borrowernumber, itemnumber => $self->itemnumber } |
981 |
{ borrowernumber => $borrowernumber, itemnumber => $self->itemnumber } |
948 |
); |
982 |
); |
|
|
983 |
|
984 |
# Get all entries, ordered by newest first |
985 |
my @all_entries = |
986 |
$self->_result->last_returned_by( {}, { order_by => [ { '-desc' => 'created_on' }, { '-desc' => 'id' } ] } ) |
987 |
->all; |
988 |
|
989 |
# If we have more than the limit, delete the excess oldest ones |
990 |
if ( scalar(@all_entries) > $max_stored_borrowers ) { |
991 |
my @entries_to_delete = splice( @all_entries, $max_stored_borrowers ); |
992 |
$_->delete for @entries_to_delete; |
993 |
} |
994 |
|
995 |
return $self; |
949 |
} |
996 |
} |
950 |
my $rs = $self->_result->last_returned_by; |
997 |
|
|
|
998 |
# Return the most recent borrower |
999 |
my $rs = $self->_result->last_returned_by( |
1000 |
{}, |
1001 |
{ |
1002 |
order_by => [ { '-desc' => 'created_on' }, { '-desc' => 'id' } ], |
1003 |
rows => 1 |
1004 |
} |
1005 |
)->first; |
1006 |
|
951 |
return unless $rs; |
1007 |
return unless $rs; |
952 |
return Koha::Patron->_new_from_dbic( $rs->borrowernumber ); |
1008 |
return Koha::Patron->_new_from_dbic( $rs->borrowernumber ); |
953 |
} |
1009 |
} |