X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fbooksellers.pl;h=99da78cb9fa499563e3c5f787a1eb320cc4601ec;hb=40267be0851309d926932e458317a9f10f5c38a2;hp=634eb93d576fb3dd2e035db5eec3923f32423778;hpb=f21577986f8ff5da5fde88deaae2302a8b40dbe7;p=koha.git diff --git a/acqui/booksellers.pl b/acqui/booksellers.pl index 634eb93d57..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,7 +41,9 @@ C<$supplier> is the string with which we search for a supplier =back -=item id or supplierid +=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::Dates qw/format_date/; -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, @@ -74,26 +77,33 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( #parameters my $supplier = $query->param('supplier'); -my $id = $query->param('id') || $query->param('supplierid'); +my $booksellerid = $query->param('booksellerid'); +my $allbaskets= $query->param('allbaskets')||0; my @suppliers; -if ($id) { - push @suppliers, GetBookSellerFromId($id); +if ($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'}, - id => $suppliers[0]->{'id'} + 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,33 +111,39 @@ 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 = get_vendors_baskets( $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 - if ( GetMember( borrowernumber => $authorisedby ) ) { - # authorisedby may not be a valid borrowernumber; it's not foreign-key constrained! - $basketbranch = GetMember( borrowernumber => $authorisedby )->{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 == 'user' && $authorisedby == $loggedinuser) #user created this basket - ) - ) - ) { - for my $date_field (qw( creationdate closedate)) { - if ( $basket->{$date_field} ) { - $basket->{$date_field} = format_date( $basket->{$date_field} ); + if (CanUserManageBasket($loggedinuser, $basket, $userflags)) { + my $patron = Koha::Patrons->find( $basket->{authorisedby} ); + foreach (qw(total_items total_biblios expected_items)) { + $basket->{$_} ||= 0; + } + if ( $patron ) { + $basket->{authorisedby} = $patron; + } + if ($basket->{basketgroupid}) { + my $basketgroup = C4::Acquisition::GetBasketgroup($basket->{basketgroupid}); + if ($basketgroup) { + $basket->{basketgroup} = $basketgroup; } } push @{$loop_basket}, $basket; @@ -136,31 +152,18 @@ for my $vendor (@suppliers) { push @{$loop_suppliers}, { loop_basket => $loop_basket, - supplierid => $vendor->{id}, - name => $vendor->{name}, - active => $vendor->{active}, + booksellerid => $vendor->id, + name => $vendor->name, + active => $vendor->active, }; } $template->param( loop_suppliers => $loop_suppliers, - supplier => ( $id || $supplier ), + supplier => ( $booksellerid || $supplier ), count => $supplier_count, + has_budgets => $has_budgets, ); +$template->{VARS}->{'allbaskets'} = $allbaskets; output_html_with_http_headers $query, $cookie, $template->output; - -sub get_vendors_baskets { - my $supplier_id = shift; - my $dbh = C4::Context->dbh; - my $sql = <<'ENDSQL'; -select aqbasket.*, count(*) as total, borrowers.firstname, borrowers.surname -from aqbasket left join aqorders on aqorders.basketno = aqbasket.basketno -left join borrowers on aqbasket.authorisedby = borrowers.borrowernumber -where booksellerid = ? -AND ( aqorders.quantity > aqorders.quantityreceived OR quantityreceived IS NULL) -AND datecancellationprinted IS NULL -group by basketno -ENDSQL - return $dbh->selectall_arrayref( $sql, { Slice => {} }, $supplier_id ); -}