#
# 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 <http://www.gnu.org/licenses>.
use strict;
use warnings;
use C4::Auth;
use C4::Koha;
use C4::Output;
-use CGI;
+use CGI qw ( -utf8 );
use C4::Acquisition;
use C4::Budgets;
use C4::Branch;
-use C4::Bookseller qw( GetBookSellerFromId);
+use C4::Contract;
use C4::Debug;
use C4::Biblio;
use C4::Members qw/GetMember/; #needed for permissions checking for changing basketgroup of a basket
my $query = new CGI;
our $basketno = $query->param('basketno');
my $booksellerid = $query->param('booksellerid');
+my $duplinbatch = $query->param('duplinbatch');
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
{
- template_name => "acqui/basket.tmpl",
+ template_name => "acqui/basket.tt",
query => $query,
type => "intranet",
authnotrequired => 0,
my $basket = GetBasket($basketno);
$booksellerid = $basket->{booksellerid} unless $booksellerid;
-my ($bookseller) = GetBookSellerFromId($booksellerid);
+my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
unless (CanUserManageBasket($loggedinuser, $basket, $userflags)) {
$template->param(
#Delete all orders included in that basket, and all items received.
foreach my $myorder (@orders){
DelOrder($myorder->{biblionumber},$myorder->{ordernumber});
- warn "suppression de ".$myorder->{biblionumber}.' '.$myorder->{ordernumber};
}
# if $delbiblio = 1, delete the records if possible
if ((defined $delbiblio)and ($delbiblio ==1)){
+ my @cannotdelbiblios ;
foreach my $myorder (@orders){
my $biblionumber = $myorder->{'biblionumber'};
my $countbiblio = CountBiblioInOrders($biblionumber);
my $ordernumber = $myorder->{'ordernumber'};
- my @subscriptions = GetSubscriptionsId ($biblionumber);
+ my $subscriptions = scalar GetSubscriptionsId ($biblionumber);
my $itemcount = GetItemsCount($biblionumber);
- DelBiblio($myorder->{biblionumber}) if ($countbiblio == 0 && $itemcount == 0 && !(@subscriptions));
- warn "suppression de la notice ".$myorder->{biblionumber}};
+ my $error;
+ if ($countbiblio == 0 && $itemcount == 0 && $subscriptions == 0) {
+ $error = DelBiblio($myorder->{biblionumber}) }
+ else {
+ push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
+ title=> $myorder->{'title'},
+ author=> $myorder->{'author'},
+ countbiblio=> $countbiblio,
+ itemcount=>$itemcount,
+ subscriptions=>$subscriptions};
+ }
+ if ($error) {
+ push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
+ title=> $myorder->{'title'},
+ author=> $myorder->{'author'},
+ othererror=> $error};
+ }
+ }
+ $template->param( cannotdelbiblios => \@cannotdelbiblios );
}
-
# delete the basket
DelBasket($basketno,);
$template->param( delete_confirmed => 1 );
} elsif ( !$bookseller ) {
$template->param( NO_BOOKSELLER => 1 );
-} elsif ( $op eq 'del_basket') {
- $template->param( delete_confirm => 1 );
- if ( C4::Context->preference("IndependentBranches") ) {
- my $userenv = C4::Context->userenv;
- unless ( $userenv->{flags} == 1 ) {
- my $validtest = ( $basket->{creationdate} eq '' )
- || ( $userenv->{branch} eq $basket->{branch} )
- || ( $userenv->{branch} eq '' )
- || ( $basket->{branch} eq '' );
- unless ($validtest) {
- print $query->redirect("../mainpage.pl");
- exit 1;
- }
- }
- }
- $basket->{creationdate} = "" unless ( $basket->{creationdate} );
- $basket->{authorisedby} = $loggedinuser unless ( $basket->{authorisedby} );
- my $contract = &GetContract($basket->{contractnumber});
- $template->param(
- basketno => $basketno,
- basketname => $basket->{'basketname'},
- basketnote => $basket->{note},
- basketbooksellernote => $basket->{booksellernote},
- basketcontractno => $basket->{contractnumber},
- basketcontractname => $contract->{contractname},
- creationdate => $basket->{creationdate},
- authorisedby => $basket->{authorisedby},
- authorisedbyname => $basket->{authorisedbyname},
- closedate => $basket->{closedate},
- deliveryplace => $basket->{deliveryplace},
- billingplace => $basket->{billingplace},
- active => $bookseller->{'active'},
- booksellerid => $bookseller->{'id'},
- name => $bookseller->{'name'},
- address1 => $bookseller->{'address1'},
- address2 => $bookseller->{'address2'},
- address3 => $bookseller->{'address3'},
- address4 => $bookseller->{'address4'},
- );
-} elsif ($op eq 'attachbasket' && $template->{'VARS'}->{'CAN_user_acquisition_group_manage'} == 1) {
- print $query->redirect('/cgi-bin/koha/acqui/basketgroup.pl?basketno=' . $basket->{'basketno'} . '&op=attachbasket&booksellerid=' . $booksellerid);
- # check if we have to "close" a basket before building page
} elsif ($op eq 'export') {
print $query->header(
-type => 'text/csv',
ReopenBasket($query->param('basketno'));
print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
} elsif ( $op eq 'mod_users' ) {
- my $basketusers_ids = $query->param('basketusers_ids');
+ my $basketusers_ids = $query->param('users_ids');
my @basketusers = split( /:/, $basketusers_ids );
ModBasketUsers($basketno, @basketusers);
print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
# get librarian branch...
if ( C4::Context->preference("IndependentBranches") ) {
my $userenv = C4::Context->userenv;
- unless ( $userenv->{flags} == 1 ) {
+ unless ( C4::Context->IsSuperLibrarian() ) {
my $validtest = ( $basket->{creationdate} eq '' )
|| ( $userenv->{branch} eq $basket->{branch} )
|| ( $userenv->{branch} eq '' )
$basketgroup = $bg;
}
}
- my %emptygroup = ( id => undef,
- name => "No group");
- if ( ! $basket->{basketgroupid} ) {
- $emptygroup{default} = 1;
- $emptygroup{nogroup} = 1;
- }
- unshift( @$basketgroups, \%emptygroup );
}
# if the basket is closed, calculate estimated delivery date
if( $basket->{closedate} ) {
my ($year, $month, $day) = ($basket->{closedate} =~ /(\d+)-(\d+)-(\d+)/);
($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->{deliverytime});
- $estimateddeliverydate = "$year-$month-$day";
+ $estimateddeliverydate = sprintf( "%04d-%02d-%02d", $year, $month, $day );
}
# if new basket, pre-fill infos
my $cur = GetCurrency();
- my @results = GetOrders( $basketno );
+ my @orders = GetOrders( $basketno );
my @books_loop;
my @book_foot_loop;
my $total_gste = 0;
my $total_gsti = 0;
my $total_gstvalue = 0;
- for my $order (@results) {
+ for my $order (@orders) {
+ $order = C4::Acquisition::populate_order_with_prices({ order => $order, booksellerid => $booksellerid, ordering => 1 });
my $line = get_order_infos( $order, $bookseller);
if ( $line->{uncertainprice} ) {
$template->param( uncertainprices => 1 );
push @books_loop, $line;
- $foot{$$line{gstgsti}}{gstgsti} = $$line{gstgsti};
- $foot{$$line{gstgsti}}{gstvalue} += $$line{gstvalue};
+ $foot{$$line{gstrate}}{gstrate} = $$line{gstrate};
+ $foot{$$line{gstrate}}{gstvalue} += $$line{gstvalue};
$total_gstvalue += $$line{gstvalue};
- $foot{$$line{gstgsti}}{quantity} += $$line{quantity};
+ $foot{$$line{gstrate}}{quantity} += $$line{quantity};
$total_quantity += $$line{quantity};
- $foot{$$line{gstgsti}}{totalgste} += $$line{totalgste};
+ $foot{$$line{gstrate}}{totalgste} += $$line{totalgste};
$total_gste += $$line{totalgste};
- $foot{$$line{gstgsti}}{totalgsti} += $$line{totalgsti};
+ $foot{$$line{gstrate}}{totalgsti} += $$line{totalgsti};
$total_gsti += $$line{totalgsti};
}
push @book_foot_loop, map {$_} values %foot;
# Get cancelled orders
- @results = GetCancelledOrders($basketno);
+ my @cancelledorders = GetOrders($basketno, { cancelled => 1 });
my @cancelledorders_loop;
- for my $order (@results) {
+ for my $order (@cancelledorders) {
+ $order = C4::Acquisition::populate_order_with_prices({ order => $order, booksellerid => $booksellerid, ordering => 1 });
my $line = get_order_infos( $order, $bookseller);
push @cancelledorders_loop, $line;
}
- my $contract = &GetContract($basket->{contractnumber});
- my @orders = GetOrders($basketno);
+ my $contract = GetContract({
+ contractnumber => $basket->{contractnumber}
+ });
if ($basket->{basketgroupid}){
$basketgroup = GetBasketgroup($basket->{basketgroupid});
creationdate => $basket->{creationdate},
authorisedby => $basket->{authorisedby},
authorisedbyname => $basket->{authorisedbyname},
- basketusers_ids => join(':', @basketusers_ids),
- basketusers => \@basketusers,
+ users_ids => join(':', @basketusers_ids),
+ users => \@basketusers,
closedate => $basket->{closedate},
estimateddeliverydate=> $estimateddeliverydate,
deliveryplace => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
grouped => $basket->{basketgroupid},
unclosable => @orders ? 0 : 1,
has_budgets => $has_budgets,
+ duplinbatch => $duplinbatch,
);
}
$line{order_received} = ( $qty == $order->{'quantityreceived'} );
$line{basketno} = $basketno;
$line{budget_name} = $budget->{budget_name};
- $line{rrp} = ConvertCurrency( $order->{'currency'}, $line{rrp} ); # FIXME from comm
- if ( $bookseller->{'listincgst'} ) {
- $line{rrpgsti} = sprintf( "%.2f", $line{rrp} );
- $line{gstgsti} = sprintf( "%.2f", $line{gstrate} * 100 );
- $line{rrpgste} = sprintf( "%.2f", $line{rrp} / ( 1 + ( $line{gstgsti} / 100 ) ) );
- $line{gstgste} = sprintf( "%.2f", $line{gstgsti} / ( 1 + ( $line{gstgsti} / 100 ) ) );
- $line{ecostgsti} = sprintf( "%.2f", $line{ecost} );
- $line{ecostgste} = sprintf( "%.2f", $line{ecost} / ( 1 + ( $line{gstgsti} / 100 ) ) );
- $line{gstvalue} = sprintf( "%.2f", ( $line{ecostgsti} - $line{ecostgste} ) * $line{quantity});
- $line{totalgste} = sprintf( "%.2f", $order->{quantity} * $line{ecostgste} );
- $line{totalgsti} = sprintf( "%.2f", $order->{quantity} * $line{ecostgsti} );
- } else {
- $line{rrpgsti} = sprintf( "%.2f", $line{rrp} * ( 1 + ( $line{gstrate} ) ) );
- $line{rrpgste} = sprintf( "%.2f", $line{rrp} );
- $line{gstgsti} = sprintf( "%.2f", $line{gstrate} * 100 );
- $line{gstgste} = sprintf( "%.2f", $line{gstrate} * 100 );
- $line{ecostgsti} = sprintf( "%.2f", $line{ecost} * ( 1 + ( $line{gstrate} ) ) );
- $line{ecostgste} = sprintf( "%.2f", $line{ecost} );
- $line{gstvalue} = sprintf( "%.2f", ( $line{ecostgsti} - $line{ecostgste} ) * $line{quantity});
- $line{totalgste} = sprintf( "%.2f", $order->{quantity} * $line{ecostgste} );
- $line{totalgsti} = sprintf( "%.2f", $order->{quantity} * $line{ecostgsti} );
- }
if ( $line{uncertainprice} ) {
$line{rrpgste} .= ' (Uncertain)';
my $seriestitle = $order->{'seriestitle'};
$line{'title'} .= " / $seriestitle" if $seriestitle;
$line{'title'} .= " / $volume" if $volume;
- } else {
- $line{'title'} = "Deleted bibliographic notice, can't find title.";
}
my $biblionumber = $order->{'biblionumber'};
if ($line{$key}) {
my $order = GetOrder($line{$key});
my $basket = GetBasket($order->{basketno});
- my $bookseller = GetBookSellerFromId($basket->{booksellerid});
+ my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
$line{$key} = {
order => $order,
basket => $basket,