X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fbooksellers.pl;h=99da78cb9fa499563e3c5f787a1eb320cc4601ec;hb=0bd1f30c8c4f151eaed1a6e1e56a8c78d28c0b4b;hp=5a1c2480d189ce07f1337cb0187b0bb6738e75f9;hpb=1ee7f449be2ba45c2458d2ac571172ecf58752b2;p=koha.git diff --git a/acqui/booksellers.pl b/acqui/booksellers.pl index 5a1c2480d1..99da78cb9f 100755 --- a/acqui/booksellers.pl +++ b/acqui/booksellers.pl @@ -8,18 +8,18 @@ # # This file is part of Koha. # -# 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 2 of the License, or (at your option) any later -# version. +# 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. +# 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, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -41,6 +41,8 @@ C<$supplier> is the string with which we search for a supplier =back +=over 4 + =item id or booksellerid The id of the supplier whose baskets we will display @@ -49,21 +51,22 @@ The id of the supplier whose baskets we will display =cut -use strict; -use warnings; +use Modern::Perl; use C4::Auth; use C4::Biblio; +use C4::Budgets; use C4::Output; -use CGI; +use CGI qw ( -utf8 ); -use C4::Acquisition qw/ GetBasketsInfosByBookseller /; -use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /; -use C4::Members qw/GetMember/; +use C4::Acquisition qw/ GetBasketsInfosByBookseller CanUserManageBasket /; use C4::Context; +use Koha::Acquisition::Booksellers; +use Koha::Patrons; + my $query = CGI->new; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { template_name => 'acqui/booksellers.tmpl', +my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( + { template_name => 'acqui/booksellers.tt', query => $query, type => 'intranet', authnotrequired => 0, @@ -75,25 +78,32 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( #parameters my $supplier = $query->param('supplier'); my $booksellerid = $query->param('booksellerid'); +my $allbaskets= $query->param('allbaskets')||0; my @suppliers; if ($booksellerid) { - push @suppliers, GetBookSellerFromId($booksellerid); + push @suppliers, scalar Koha::Acquisition::Booksellers->find( $booksellerid ); } else { - @suppliers = GetBookSeller($supplier); + @suppliers = Koha::Acquisition::Booksellers->search( + { name => { -like => "%$supplier%" } }, + { order_by => { -asc => 'name' } } ); } my $supplier_count = @suppliers; if ( $supplier_count == 1 ) { $template->param( - supplier_name => $suppliers[0]->{'name'}, - booksellerid => $suppliers[0]->{'booksellerid'} + supplier_name => $suppliers[0]->name, + booksellerid => $suppliers[0]->id, + basketcount => $suppliers[0]->baskets->count, + active => $suppliers[0]->active, ); } my $uid; +# FIXME This script should only be accessed by a valid logged in patron if ($loggedinuser) { - $uid = GetMember( borrowernumber => $loggedinuser )->{userid}; + # FIXME Should not be needed, logged in patron should be cached + $uid = Koha::Patrons->find( $loggedinuser )->userid; } my $userenv = C4::Context::userenv; @@ -101,36 +111,40 @@ my $viewbaskets = C4::Context->preference('AcqViewBaskets'); my $userbranch = $userenv->{branch}; +my $budgets = GetBudgetHierarchy; +my $has_budgets = 0; +foreach my $r (@{$budgets}) { + if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) { + next; + } + next unless (CanUserUseBudget($loggedinuser, $r, $userflags)); + + $has_budgets = 1; + last; +} + #build result page my $loop_suppliers = []; for my $vendor (@suppliers) { - my $baskets = GetBasketsInfosByBookseller( $vendor->{id} ); + my $baskets = GetBasketsInfosByBookseller( $vendor->id, $allbaskets ); my $loop_basket = []; for my $basket ( @{$baskets} ) { - my $authorisedby = $basket->{authorisedby}; - my $basketbranch = ''; # set a blank branch to start with - my $member = GetMember( borrowernumber => $authorisedby ); - if ( $member ) { - $basketbranch = $member->{branchcode}; - } - - if ($userenv->{'flags'} & 1 || #user is superlibrarian - (haspermission( $uid, { acquisition => q{*} } ) && #user has acq permissions and - ($viewbaskets eq 'all' || #user is allowed to see all baskets - ($viewbaskets eq 'branch' && $authorisedby && $userbranch eq $basketbranch) || #basket belongs to user's branch - ($basket->{authorisedby} && $viewbaskets eq 'user' && $authorisedby == $loggedinuser) #user created this basket - ) - ) - ) { + if (CanUserManageBasket($loggedinuser, $basket, $userflags)) { + my $patron = Koha::Patrons->find( $basket->{authorisedby} ); foreach (qw(total_items total_biblios expected_items)) { $basket->{$_} ||= 0; } - if($member) { - $basket->{authorisedby_firstname} = $member->{firstname}; - $basket->{authorisedby_surname} = $member->{surname}; + if ( $patron ) { + $basket->{authorisedby} = $patron; + } + if ($basket->{basketgroupid}) { + my $basketgroup = C4::Acquisition::GetBasketgroup($basket->{basketgroupid}); + if ($basketgroup) { + $basket->{basketgroup} = $basketgroup; + } } push @{$loop_basket}, $basket; } @@ -138,9 +152,9 @@ for my $vendor (@suppliers) { push @{$loop_suppliers}, { loop_basket => $loop_basket, - booksellerid => $vendor->{id}, - name => $vendor->{name}, - active => $vendor->{active}, + booksellerid => $vendor->id, + name => $vendor->name, + active => $vendor->active, }; } @@ -148,7 +162,8 @@ $template->param( loop_suppliers => $loop_suppliers, supplier => ( $booksellerid || $supplier ), count => $supplier_count, - dateformat => C4::Context->preference('dateformat'), + has_budgets => $has_budgets, ); +$template->{VARS}->{'allbaskets'} = $allbaskets; output_html_with_http_headers $query, $cookie, $template->output;