Bug 40504: Add 'managedby' to illrequests

This also includes a 'manager' accessor which returns the Koha::Patron
object

Signed-off-by: Jeremy Evans <Jeremy.Evans@ukhsa.gov.uk>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
This commit is contained in:
Pedro Amorim 2025-10-15 09:10:40 +00:00 committed by Martin Renvoize
parent b0714a0b22
commit ade2934e2a
No known key found for this signature in database
GPG Key ID: 2D86E0EAEC83711B
10 changed files with 74 additions and 0 deletions

View File

@ -1407,6 +1407,22 @@ sub get_type_disclaimer_date {
return $attr->value;
}
=head3 manager
my $manager = $request->manager();
Return the Koha::Patron object found by $self->managedby
=cut
sub manager {
my ($self) = @_;
my $manager_rs = $self->_result->manager;
return unless $manager_rs;
return Koha::Patron->_new_from_dbic($manager_rs);
}
=head3 check_limits
my $ok = $requests->check_limits( {

View File

@ -439,6 +439,18 @@ __PACKAGE__->belongs_to(
},
);
__PACKAGE__->belongs_to(
"manager",
"Koha::Schema::Result::Borrower",
{ borrowernumber => "managedby" },
{
is_deferrable => 1,
join_type => "LEFT",
on_delete => "CASCADE",
on_update => "CASCADE",
},
);
=head2 koha_object_class
Missing POD for koha_object_class.

View File

@ -1144,6 +1144,9 @@ modules:
columnname: orderid
-
columnname: patron
-
columnname: managedby
is_hidden: 1
-
columnname: library_branchname
-

View File

@ -18,6 +18,10 @@ properties:
type:
- integer
- "null"
managedby:
type:
- integer
- "null"
description: Internal patron id
due_date:
type:
@ -140,6 +144,11 @@ properties:
- object
- "null"
description: The linked patron object (x-koha-embed)
manager:
type:
- object
- "null"
description: The linked patron object (x-koha-embed)
_strings:
type:
- object

View File

@ -31,6 +31,7 @@
- library
- id_prefix
- patron
- manager
collectionFormat: csv
produces:
- application/json

View File

@ -305,6 +305,7 @@ if ($backends_available) {
? $params->{status_alias}
: "-1";
$request->status_alias($alias);
$request->managedby( $params->{managedby} );
$request->store;
my $backend_result = {
error => 0,

View File

@ -3786,6 +3786,7 @@ DROP TABLE IF EXISTS `illrequests`;
CREATE TABLE `illrequests` (
`illrequest_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ILL request number',
`borrowernumber` int(11) DEFAULT NULL COMMENT 'Patron associated with request',
`managedby` int(11) DEFAULT NULL COMMENT 'Staff member manager of request',
`biblio_id` int(11) DEFAULT NULL COMMENT 'Potential bib linked to request',
`deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request',
`due_date` datetime DEFAULT NULL COMMENT 'Custom date due specified by backend, leave NULL for default date_due calculation',
@ -3807,6 +3808,7 @@ CREATE TABLE `illrequests` (
`batch_id` int(11) DEFAULT NULL COMMENT 'Optional ID of batch that this request belongs to',
PRIMARY KEY (`illrequest_id`),
KEY `illrequests_bnfk` (`borrowernumber`),
KEY `illrequests_manfk` (`managedby`),
KEY `illrequests_bcfk_2` (`branchcode`),
KEY `illrequests_safk` (`status_alias`),
KEY `illrequests_bibfk` (`biblio_id`),
@ -3814,6 +3816,7 @@ CREATE TABLE `illrequests` (
CONSTRAINT `illrequests_bcfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `illrequests_bibfk` FOREIGN KEY (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illrequests_bnfk` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illrequests_manfk` FOREIGN KEY (`managedby`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illrequests_ibfk` FOREIGN KEY (`batch_id`) REFERENCES `illbatches` (`ill_batch_id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illrequests_safk` FOREIGN KEY (`status_alias`) REFERENCES `authorised_values` (`authorised_value`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@ -13,6 +13,7 @@
<th scope="col" data-datatype="related-object" data-related="extended_attributes" data-related-key="type" data-related-value="type" data-related-search-on="value">Request type</th>
<th scope="col">Order ID</th>
<th scope="col">Patron</th>
<th scope="col">Managed by</th>
<th scope="col">Library</th>
<th scope="col">Status</th>
<th scope="col" class="placed_formatted">Placed on</th>

View File

@ -7,6 +7,7 @@
[% USE TablesSettings %]
[% USE Price %]
[% PROCESS 'i18n.inc' %]
[% PROCESS 'manageable-mixin.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title
@ -391,6 +392,10 @@
<label for="borrowernumber">Patron ID:</label>
<input name="borrowernumber" id="borrowernumber" type="text" value="[% request.borrowernumber | html %]" />
</li>
[% PROCESS select_manager_form
manager => request.manager
required_permission => CAN_user_ill
%]
<li class="biblio_id">
<label for="biblio_id" class="biblio_id">Bibliographic record ID:</label>
<input name="biblio_id" id="biblio_id" type="text" value="[% request.biblio_id | html %]" />
@ -646,6 +651,10 @@
<a href="[% borrowerlink | url %]" title="View borrower details"> [% request.patron.firstname _ " " _ request.patron.surname _ " [" _ request.patron.cardnumber _ "]" | html %] </a>
</li>
[% END %]
[% PROCESS select_manager_show
manager => request.manager
display => "fieldset"
%]
[% IF request.biblio_id %]
<li class="biblio_id">
<span class="label biblio_id">Bibliographic record ID:</span>
@ -1120,6 +1129,13 @@
[% INCLUDE 'js-biblio-format.inc' %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'select2.inc' %]
[% IF op == 'edit_action' %]
[% INCLUDE 'select_manager.inc'
add_modal => 1
manager => request.manager
filter => 'ill_users'
%]
[% END %]
[% IF metadata_enrichment_services %]
<script nonce="[% Koha.CSPNonce | $raw %]">
var ill_check_availability_syspref = '[% Koha.Preference('ILLCheckAvailability') | html %]';

View File

@ -294,6 +294,7 @@ $(document).ready(function () {
"library",
"id_prefix",
"patron",
"manager",
],
order: [[0, "desc"]],
stateSave: true, // remember state on page reload
@ -429,6 +430,17 @@ $(document).ready(function () {
: "";
},
},
{
data: "manager.firstname:manager.surname:manager.cardnumber",
render: function (data, type, row, meta) {
return row.manager
? $patron_to_html(row.manager, {
display_cardnumber: true,
url: true,
})
: __("Nobody");
},
},
{
data: "library.name",
orderable: true,