|
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 |
} |