From 97f331743657765304c223f95c5fa874abb29d88 Mon Sep 17 00:00:00 2001 From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Date: Wed, 9 Feb 2022 12:58:28 +0100 Subject: [PATCH] Bug 30055: /api/v1/acquisitions/funds/owners and users for funds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two new routes that do the same thing /api/v1/acquisitions/funds/owners /api/v1/acquisitions/funds/users To list the possible owners and users for a fund Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Séverine Queune <severine.queune@bulac.fr> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> --- Koha/REST/V1/Acquisitions/Funds.pm | 48 +++++++++++ admin/add_user_search.pl | 65 -------------- api/v1/swagger/paths/acquisitions_funds.yaml | 86 +++++++++++++++++++ api/v1/swagger/swagger.yaml | 4 + .../modules/acqui/tables/members_results.tt | 26 ------ .../prog/en/modules/admin/aqbudgets.tt | 4 +- .../prog/en/modules/members/search.tt | 4 + 7 files changed, 144 insertions(+), 93 deletions(-) delete mode 100755 admin/add_user_search.pl delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/acqui/tables/members_results.tt diff --git a/Koha/REST/V1/Acquisitions/Funds.pm b/Koha/REST/V1/Acquisitions/Funds.pm index c4209289fe..59f9f3577f 100644 --- a/Koha/REST/V1/Acquisitions/Funds.pm +++ b/Koha/REST/V1/Acquisitions/Funds.pm @@ -55,4 +55,52 @@ sub list { }; } +=head3 list_owners + +Return the list of possible funds' owners + +=cut + +sub list_owners { + my $c = shift->openapi->valid_input or return; + + return try { + + my $patrons_rs = Koha::Patrons->search->filter_by_have_subpermission('acquisition.budget_modify'); + my $patrons = $c->objects->search( $patrons_rs ); + + return $c->render( + status => 200, + openapi => $patrons + ); + } + catch { + $c->unhandled_exception($_); + }; +} + +=head3 list_users + +Return the list of possible funds' users + +=cut + +sub list_users { + my $c = shift->openapi->valid_input or return; + + return try { + + my $patrons_rs = Koha::Patrons->search->filter_by_have_subpermission('acquisition.budget_modify'); + my $patrons = $c->objects->search( $patrons_rs ); + + return $c->render( + status => 200, + openapi => $patrons + ); + } + catch { + $c->unhandled_exception($_); + }; +} + 1; diff --git a/admin/add_user_search.pl b/admin/add_user_search.pl deleted file mode 100755 index 032301a6d7..0000000000 --- a/admin/add_user_search.pl +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/perl - -# This file is part of Koha. -# -# Copyright 2014 BibLibre -# -# Koha is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# Koha is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Koha; if not, see <http://www.gnu.org/licenses>. - -use Modern::Perl; - -use CGI qw ( -utf8 ); -use C4::Auth qw( get_template_and_user ); -use C4::Output qw( output_html_with_http_headers ); -use C4::Members; - -use Koha::Patron::Categories; - -my $input = CGI->new; - -my $dbh = C4::Context->dbh; - -my ( $template, $loggedinuser, $cookie, $staff_flags ) = get_template_and_user( - { template_name => "common/patron_search.tt", - query => $input, - type => "intranet", - flagsrequired => { acquisition => 'budget_modify' }, - } -); - -my $q = $input->param('q') || ''; -my $op = $input->param('op') || ''; -my $selection_type = $input->param('selection_type') || 'add'; - -my $referer = $input->referer(); - -# If this script is called by admin/aqbudgets.pl -# the patrons to return should be superlibrarian or have the order_manage -# acquisition flag. -my $search_patrons_with_acq_perm_only = - ( $referer =~ m|admin/aqbudgets.pl| ) - ? 1 : 0; - -my $patron_categories = Koha::Patron::Categories->search_with_library_limits; -$template->param( - patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only, - view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results", - columns => ['cardnumber', 'name', 'branch', 'category', 'action'], - json_template => 'acqui/tables/members_results.tt', - selection_type => $selection_type, - alphabet => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ), - categories => $patron_categories, - aaSorting => 1, -); -output_html_with_http_headers( $input, $cookie, $template->output ); diff --git a/api/v1/swagger/paths/acquisitions_funds.yaml b/api/v1/swagger/paths/acquisitions_funds.yaml index 9dd00ef4b7..188c91e537 100644 --- a/api/v1/swagger/paths/acquisitions_funds.yaml +++ b/api/v1/swagger/paths/acquisitions_funds.yaml @@ -59,3 +59,89 @@ x-koha-authorization: permissions: acquisition: budget_manage_all +/acquisitions/funds/owners: + get: + x-mojo-to: Acquisitions::Funds#list_owners + operationId: listFundsOwners + description: This resource returns a list of patron allowed to be owner of funds + summary: List possibe owners for funds + tags: + - funds + parameters: + - $ref: ../parameters.yaml#/match + - $ref: ../parameters.yaml#/order_by + - $ref: ../parameters.yaml#/page + - $ref: ../parameters.yaml#/per_page + - $ref: ../parameters.yaml#/q_param + - $ref: ../parameters.yaml#/q_body + - $ref: ../parameters.yaml#/q_header + produces: + - application/json + responses: + "200": + description: A list of funds' owners + schema: + type: array + items: + $ref: ../definitions.yaml#/patron + "403": + description: Access forbidden + schema: + $ref: ../definitions.yaml#/error + "500": + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: ../definitions.yaml#/error + "503": + description: Under maintenance + schema: + $ref: ../definitions.yaml#/error + x-koha-authorization: + permissions: + acquisition: budget_modify +/acquisitions/funds/users: + get: + x-mojo-to: Acquisitions::Funds#list_users + operationId: listFundsUsers + description: This resource returns a list of patron allowed to be owner of funds + summary: List possibe users for funds + tags: + - funds + parameters: + - $ref: ../parameters.yaml#/match + - $ref: ../parameters.yaml#/order_by + - $ref: ../parameters.yaml#/page + - $ref: ../parameters.yaml#/per_page + - $ref: ../parameters.yaml#/q_param + - $ref: ../parameters.yaml#/q_body + - $ref: ../parameters.yaml#/q_header + produces: + - application/json + responses: + "200": + description: A list of funds' users + schema: + type: array + items: + $ref: ../definitions.yaml#/patron + "403": + description: Access forbidden + schema: + $ref: ../definitions.yaml#/error + "500": + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: ../definitions.yaml#/error + "503": + description: Under maintenance + schema: + $ref: ../definitions.yaml#/error + x-koha-authorization: + permissions: + acquisition: budget_modify diff --git a/api/v1/swagger/swagger.yaml b/api/v1/swagger/swagger.yaml index 9564dba35d..b724868c0c 100644 --- a/api/v1/swagger/swagger.yaml +++ b/api/v1/swagger/swagger.yaml @@ -69,6 +69,10 @@ paths: $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers /acquisitions/funds: $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds + /acquisitions/funds/owners: + $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners + /acquisitions/funds/users: + $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users /acquisitions/orders: $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders "/acquisitions/orders/{order_id}": diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/tables/members_results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/tables/members_results.tt deleted file mode 100644 index 50cc702350..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/tables/members_results.tt +++ /dev/null @@ -1,26 +0,0 @@ -[% USE To %] -{ - "sEcho": [% sEcho | html %], - "iTotalRecords": [% iTotalRecords | html %], - "iTotalDisplayRecords": [% iTotalDisplayRecords | html %], - "aaData": [ - [% FOREACH data IN aaData %] - { - "dt_cardnumber": - "[% data.cardnumber | html %]", - "dt_name": - "<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=[% data.borrowernumber | html %]\" class=\"patron_preview\" data-borrowernumber=\"[% data.borrowernumber | html %]\" style='white-space:nowrap'>[% INCLUDE 'patron-title.inc' borrowernumber = data.borrowernumber category_type = data.category_type firstname = To.json(data.firstname) surname = To.json(data.surname) othernames = To.json(data.othernames) cardnumber = data.cardnumber invert_name = 1%]</a>", - "dt_branch": - "[% data.branchname | html %]", - "dt_category": - "[% data.category_description | html %] <span class=\"patron_category_type\">([% data.category_type | html %])</span>", - "dt_action": - [%- IF selection_type == 'select' -%] - "<a class=\"btn btn-default btn-xs select_user\" href=\"#\" data-borrowernumber=\"[% data.borrowernumber | html %]\" data-borrowerdata=\"[% To.json(data) | html %]\">Select</a><input type=\"hidden\" id=\"borrower_data[% data.borrowernumber | html %]\" name=\"borrower_data[% data.borrowernumber | html %]\" value=\"[% To.json(data) | html %]\" />" - [%- ELSE -%] - "<a href=\"#\" data-borrowernumber=\"[% data.borrowernumber | html %]\" data-firstname=\"[% data.firstname | html %]\" data-surname=\"[% data.surname | html %]\" class=\"btn btn-default btn-xs add_user\"><i class=\"fa fa-plus\"></i> Add</a>" - [%- END -%] - }[% UNLESS loop.last %],[% END %] - [% END %] - ] -} diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt index d7f15fe08d..347f79f9c6 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt @@ -495,7 +495,7 @@ //<![CDATA[ function userPopup() { - window.open("/cgi-bin/koha/admin/add_user_search.pl?selection_type=add", + window.open("/cgi-bin/koha/members/search.pl?columns=cardnumber,name,category,branch,action&selection_type=add&filter=funds_users", 'PatronPopup', 'width=740,height=450,location=yes,toolbar=no,' + 'scrollbars=yes,resize=yes' @@ -503,7 +503,7 @@ } function ownerPopup() { - window.open("/cgi-bin/koha/admin/add_user_search.pl?selection_type=select", + window.open("/cgi-bin/koha/members/search.pl?columns=cardnumber,name,category,branch,action&selection_type=select&filter=funds_owners", 'PatronPopup', 'width=740,height=450,location=yes,toolbar=no,' + 'scrollbars=yes,resize=yes' diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/search.tt index 51a3f8aa60..31ec421a0a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/search.tt @@ -169,6 +169,10 @@ "url": '/api/v1/suggestions/managers' [% CASE 'baskets_managers' %] "url": '/api/v1/acquisitions/baskets/managers' + [% CASE 'funds_owners' %] + "url": '/api/v1/acquisitions/funds/owners' + [% CASE 'funds_users' %] + "url": '/api/v1/acquisitions/funds/users' [% CASE %] "url": '/api/v1/patrons' [% END %] -- 2.20.1