X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Fbooksellers.pl;h=43407ddad84a034cae722b4165c6e82954b3fe62;hb=17de3a6feeed8237108c76ac2bf8e1cfddffc127;hp=88dbaa9e7733caed27bcaadcc9ce97636f8efc93;hpb=4669a10776ff958a3b2d51963b7c4ec90ec02f09;p=koha-ffzg.git diff --git a/acqui/booksellers.pl b/acqui/booksellers.pl index 88dbaa9e77..43407ddad8 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,102 +51,117 @@ The id of the supplier whose baskets we will display =cut -use strict; -use warnings; -use C4::Auth; -use C4::Biblio; -use C4::Output; -use CGI; +use Modern::Perl; +use C4::Auth qw( get_template_and_user ); +use C4::Budgets qw( GetBudgetHierarchy GetBudget CanUserUseBudget ); +use C4::Output qw( output_html_with_http_headers ); +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( GetBasket GetBasketsInfosByBookseller CanUserManageBasket GetBasketgroup ); +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, - flagsrequired => { acquisition => 'vendors_manage' }, - debug => 1, + flagsrequired => { acquisition => '*' }, } ); #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, Koha::Acquisition::Booksellers->find( $booksellerid ); } else { - @suppliers = GetBookSeller($supplier); + @suppliers = Koha::Acquisition::Booksellers->search( + { name => { -like => "%$supplier%" } }, + { order_by => { -asc => 'name' } } )->as_list; } 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, + subscriptionscount => $suppliers[0]->subscriptions->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; +my $viewbaskets = C4::Context->preference('AcqViewBaskets'); + +my $userbranch = $userenv->{branch}; + +my $budgets = GetBudgetHierarchy; +my $has_budgets = 0; +foreach my $r (@{$budgets}) { + 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} ) { - if (( $basket->{authorisedby} - && $basket->{authorisedby} eq $loggedinuser - ) - || haspermission( $uid, { flagsrequired => { acquisition => q{*} } } ) - ) { - 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; + push @{$loop_basket}, $basket; } } 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, + vendor_type => $vendor->type, + basketcount => $vendor->baskets->count, + subscriptioncount => $vendor->subscriptions->count, }; } $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 ); -}