diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 72ff091b80..0dac77f95c 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1520,6 +1520,17 @@ sub AddIssue { auto_renew => $auto_renew ? 1 : 0, }; + # Get ID of logged in user. if called from a batch job, + # no user session exists and C4::Context->userenv() returns + # the scalar '0'. Only do this is the syspref says so + if ( C4::Context->preference('RecordIssuer') ) { + my $userenv = C4::Context->userenv(); + my $usernumber = (ref($userenv) eq 'HASH') ? $userenv->{'number'} : undef; + if ($usernumber) { + $issue_attributes->{issuer} = $usernumber; + } + } + # In the case that the borrower has an on-site checkout # and SwitchOnSiteCheckouts is enabled this converts it to a regular checkout $issue = Koha::Checkouts->find( { itemnumber => $item_object->itemnumber } ); diff --git a/C4/Members.pm b/C4/Members.pm index 854c5c5f10..efee49b809 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -276,16 +276,18 @@ sub GetAllIssues { 'SELECT *, issues.timestamp as issuestimestamp, issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp FROM issues LEFT JOIN items on items.itemnumber=issues.itemnumber + LEFT JOIN borrowers on borrowers.borrowernumber=issues.issuer LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber - WHERE borrowernumber=? + WHERE issues.borrowernumber=? UNION ALL SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp FROM old_issues LEFT JOIN items on items.itemnumber=old_issues.itemnumber + LEFT JOIN borrowers on borrowers.borrowernumber=old_issues.issuer LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber - WHERE borrowernumber=? AND old_issues.itemnumber IS NOT NULL + WHERE old_issues.borrowernumber=? AND old_issues.itemnumber IS NOT NULL order by ' . $order; if ($limit) { $query .= " limit $limit"; diff --git a/Koha/Checkout.pm b/Koha/Checkout.pm index 8fd7b6ad03..7328a9c4b5 100644 --- a/Koha/Checkout.pm +++ b/Koha/Checkout.pm @@ -106,6 +106,20 @@ sub patron { return Koha::Patron->_new_from_dbic( $patron_rs ); } +=head3 issued_by + +my $issued_by = $checkout->issued_by + +Return the patron by whom the checkout was done + +=cut + +sub issued_by { + my ( $self ) = @_; + my $issued_by_rs = $self->_result->issuer; + return Koha::Patron->_new_from_dbic( $issued_by_rs ); +} + =head3 to_api_mapping This method returns the mapping for representing a Koha::Checkout object @@ -117,6 +131,7 @@ sub to_api_mapping { return { issue_id => 'checkout_id', borrowernumber => 'patron_id', + issuer => 'issuer_id', itemnumber => 'item_id', date_due => 'due_date', branchcode => 'library_id', 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 f22f6d2edd..a79feb04de 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/issuehistory.tt @@ -37,6 +37,9 @@ [% END %]