X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fbooksellers.pl;h=a4d010f033f790b23eac9f1c085896658bd0f321;hb=a191bcaf323f7effd66e7b46dfdcbd722ba0a647;hp=0fb0b48e965897204bd44eade9843f6f16d0c012;hpb=2ffd5b7228f4e638583162d483e1dd2febeafe1b;p=koha.git diff --git a/acqui/booksellers.pl b/acqui/booksellers.pl index 0fb0b48e96..a4d010f033 100755 --- a/acqui/booksellers.pl +++ b/acqui/booksellers.pl @@ -1,26 +1,25 @@ #!/usr/bin/perl #script to show suppliers and orders -#written by chris@katipo.co.nz 23/2/2000 # Copyright 2000-2002 Katipo Communications +# Copyright 2008-2009 BibLibre SARL +# Copyright 2010 PTFS Europe # # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA - -# $Id$ +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -28,7 +27,7 @@ booksellers.pl =head1 DESCRIPTION -this script displays the list of suppliers & orders like C<$supplier> given on input arg. +this script displays the list of suppliers & baskets like C<$supplier> given on input arg. thus, this page brings differents features like to display supplier's details, to add an order for a specific supplier or to just add a new supplier. @@ -38,98 +37,131 @@ to add an order for a specific supplier or to just add a new supplier. =item supplier -C<$supplier> is the suplier we have to search order. -=back +C<$supplier> is the string with which we search for a supplier -=item op +=back -C can be equals to 'close' if we have to close a basket before building the page. +=over 4 -=item basket +=item id or booksellerid -the C we have to close if op is equal to 'close'. +The id of the supplier whose baskets we will display =back =cut use strict; +use warnings; use C4::Auth; use C4::Biblio; +use C4::Budgets; use C4::Output; -use CGI; -use C4::Interface::CGI::Output; +use CGI qw ( -utf8 ); +use C4::Acquisition qw/ GetBasketsInfosByBookseller CanUserManageBasket /; +use C4::Members qw/GetMember/; +use C4::Context; -use C4::Acquisition; -use C4::Date; -use C4::Bookseller; +use Koha::Acquisition::Booksellers; -my $query = new CGI; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { - template_name => "acqui/booksellers.tmpl", +my $query = CGI->new; +my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( + { template_name => 'acqui/booksellers.tt', query => $query, - type => "intranet", + type => 'intranet', authnotrequired => 0, - flagsrequired => { acquisition => 1 }, + flagsrequired => { acquisition => '*' }, debug => 1, } ); #parameters my $supplier = $query->param('supplier'); +my $booksellerid = $query->param('booksellerid'); +my $allbaskets= $query->param('allbaskets')||0; +my @suppliers; + +if ($booksellerid) { + push @suppliers, Koha::Acquisition::Booksellers->find( $booksellerid ); +} else { + @suppliers = Koha::Acquisition::Booksellers->search({ name => $supplier }); +} -my @suppliers = GetBookSeller($supplier); -my $count = scalar @suppliers; +my $supplier_count = @suppliers; +if ( $supplier_count == 1 ) { + $template->param( + supplier_name => $suppliers[0]->name, + booksellerid => $suppliers[0]->id, + basketcount => $suppliers[0]->baskets->count, + active => $suppliers[0]->active, + ); +} -# check if we have to "close" a basket before building page -my $op = $query->param('op'); -my $basket = $query->param('basketno'); -if ( $op eq 'close' ) { - CloseBasket($basket); +my $uid; +if ($loggedinuser) { + $uid = GetMember( borrowernumber => $loggedinuser )->{userid}; } -#build result page -my $toggle = 0; -my @loop_suppliers; -for ( my $i = 0 ; $i < $count ; $i++ ) { - my $orders = GetPendingOrders( $suppliers[$i]->{'id'}, "grouped" ); - my $ordcount = scalar @$orders; - my %line; - if ( $toggle == 0 ) { - $line{even} = 1; - $toggle = 1; - } else { - $line{even} = 0; - $toggle = 0; +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}) { + if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) { + next; } - $line{supplierid} = $suppliers[$i]->{'id'}; - $line{name} = $suppliers[$i]->{'name'}; - $line{active} = $suppliers[$i]->{'active'}; - my @loop_basket; - for ( my $i2 = 0 ; $i2 < $ordcount ; $i2++ ) { - my %inner_line; - $inner_line{basketno} = $orders->[$i2]{'basketno'}; - $inner_line{total} = $orders->[$i2]{'count(*)'}; - $inner_line{authorisedby} = $orders->[$i2]{'authorisedby'}; - $inner_line{surname} = $orders->[$i2]{'firstname'}; - $inner_line{firstname} = $orders->[$i2]{'surname'}; - $inner_line{creationdate} = format_date( $orders->[$i2]{'creationdate'} ); - $inner_line{closedate} = format_date( $orders->[$i2]{'closedate'} ); - push @loop_basket, \%inner_line; + 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, $allbaskets ); + + my $loop_basket = []; + + for my $basket ( @{$baskets} ) { + if (CanUserManageBasket($loggedinuser, $basket, $userflags)) { + my $member = GetMember( borrowernumber => $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 ($basket->{basketgroupid}) { + my $basketgroup = C4::Acquisition::GetBasketgroup($basket->{basketgroupid}); + if ($basketgroup) { + $basket->{basketgroup} = $basketgroup; + } + } + push @{$loop_basket}, $basket; + } } - $line{loop_basket} = \@loop_basket; - push @loop_suppliers, \%line; + + push @{$loop_suppliers}, + { loop_basket => $loop_basket, + booksellerid => $vendor->id, + name => $vendor->name, + active => $vendor->active, + }; + } $template->param( - loop_suppliers => \@loop_suppliers, - supplier => $supplier, - count => $count, - intranetcolorstylesheet => - C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), + loop_suppliers => $loop_suppliers, + supplier => ( $booksellerid || $supplier ), + count => $supplier_count, + has_budgets => $has_budgets, ); +$template->{VARS}->{'allbaskets'} = $allbaskets; output_html_with_http_headers $query, $cookie, $template->output;