use C4::Items;
use C4::Suggestions;
use Koha::Biblios;
+use Koha::Acquisition::Baskets;
use Koha::Acquisition::Booksellers;
+use Koha::Acquisition::Orders;
use Koha::Libraries;
use C4::Letters qw/SendAlerts/;
use Date::Calc qw/Add_Delta_Days/;
use Koha::CsvProfiles;
use Koha::Patrons;
+use Koha::AdditionalFields;
+
=head1 NAME
basket.pl
basketno => $basketno,
basketname => $basket->{basketname},
booksellerid => $booksellerid,
- name => $bookseller->name,
+ booksellername => $bookseller->name,
);
output_html_with_http_headers $query, $cookie, $template->output;
exit;
foreach my $myorder (@orders){
my $biblionumber = $myorder->{'biblionumber'};
my $biblio = Koha::Biblios->find( $biblionumber );
- my $countbiblio = CountBiblioInOrders($biblionumber);
+ my $countbiblio = $biblio->active_orders->count;
my $ordernumber = $myorder->{'ordernumber'};
- my $has_subscriptions = $biblio->subscriptions->count;
+ my $cnt_subscriptions = $biblio->subscriptions->count;
my $itemcount = $biblio->items->count;
my $error;
- if ($countbiblio == 0 && $itemcount == 0 && not $has_subscriptions ) {
+ if ($countbiblio == 0 && $itemcount == 0 && not $cnt_subscriptions ) {
$error = DelBiblio($myorder->{biblionumber}) }
else {
push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
author=> $myorder->{'author'},
countbiblio=> $countbiblio,
itemcount=>$itemcount,
- subscriptions => $has_subscriptions};
+ subscriptions => $cnt_subscriptions};
}
if ($error) {
push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
DelBasket($basketno,);
$template->param(
delete_confirmed => 1,
- name => $bookseller->name,
+ booksellername => $bookseller->name,
booksellerid => $booksellerid,
);
} elsif ( !$bookseller ) {
-type => 'text/csv',
-attachment => 'basket' . $basket->{'basketno'} . '.csv',
);
- if ( $query->param('csv_profile') eq 'default'){
- print GetBasketAsCSV($query->param('basketno'), $query);
- } else {
- my $csv_profile_id = $query->param('csv_profile');
- print GetBasketAsCSV($query->param('basketno'), $query, $csv_profile_id);
- }
+ my $csv_profile_id = $query->param('csv_profile');
+ print GetBasketAsCSV( scalar $query->param('basketno'), $query, $csv_profile_id ); # if no csv_profile_id passed, using default rows
exit;
} elsif ($op eq 'email') {
my $err = eval {
$template->param(
confirm_close => "1",
booksellerid => $booksellerid,
+ booksellername => $bookseller->name,
basketno => $basket->{'basketno'},
basketname => $basket->{'basketname'},
basketgroupname => $basket->{'basketname'},
);
}
} elsif ($op eq 'reopen') {
- ReopenBasket($query->param('basketno'));
+ ReopenBasket(scalar $query->param('basketno'));
print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
}
elsif ( $op eq 'ediorder' ) {
$template->param( uncertainprices => 1 );
}
- $line->{tax_rate} = $line->{tax_rate_on_ordering};
- $line->{tax_value} = $line->{tax_value_on_ordering};
+ $line->{tax_rate} = $line->{tax_rate_on_ordering} // 0;
+ $line->{tax_value} = $line->{tax_value_on_ordering} // 0;
push @books_loop, $line;
$foot{$$line{tax_rate}}{tax_rate} = $$line{tax_rate};
- $foot{$$line{tax_rate}}{tax_value} += $$line{tax_value};
+ $foot{$$line{tax_rate}}{tax_value} += get_rounded_price($$line{tax_value});
$total_tax_value += $$line{tax_value};
- $foot{$$line{tax_rate}}{quantity} += $$line{quantity};
+ $foot{$$line{tax_rate}}{quantity} += get_rounded_price($$line{quantity});
$total_quantity += $$line{quantity};
$foot{$$line{tax_rate}}{total_tax_excluded} += $$line{total_tax_excluded};
$total_tax_excluded += $$line{total_tax_excluded};
billingplace => $basket->{billingplace},
active => $bookseller->active,
booksellerid => $bookseller->id,
- name => $bookseller->name,
+ booksellername => $bookseller->name,
books_loop => \@books_loop,
book_foot_loop => \@book_foot_loop,
cancelledorders_loop => \@cancelledorders_loop,
has_budgets => $has_budgets,
duplinbatch => $duplinbatch,
csv_profiles => [ Koha::CsvProfiles->search({ type => 'sql', used_for => 'export_basket' }) ],
+ available_additional_fields => [ Koha::AdditionalFields->search( { tablename => 'aqbasket' } ) ],
+ additional_field_values => { map {
+ $_->field->name => $_->value
+ } Koha::Acquisition::Baskets->find($basketno)->additional_field_values->as_list },
);
}
$line{basketno} = $basketno;
$line{budget_name} = $budget->{budget_name};
- $line{total_tax_included} = $line{ecost_tax_included} * $line{quantity};
- $line{total_tax_excluded} = $line{ecost_tax_excluded} * $line{quantity};
+ # If we have an actual cost that should be the total, otherwise use the ecost
+ my $cost_tax_included = $line{unitprice_tax_included} || $line{ecost_tax_included};
+ my $cost_tax_excluded = $line{unitprice_tax_excluded} || $line{ecost_tax_excluded};
+ $line{total_tax_included} = get_rounded_price($cost_tax_included) * $line{quantity};
+ $line{total_tax_excluded} = get_rounded_price($cost_tax_excluded) * $line{quantity};
$line{tax_value} = $line{tax_value_on_ordering};
$line{tax_rate} = $line{tax_rate_on_ordering};
- if ( $line{uncertainprice} ) {
- $line{rrp_tax_excluded} .= ' (Uncertain)';
- }
if ( $line{'title'} ) {
my $volume = $order->{'volume'};
my $seriestitle = $order->{'seriestitle'};
my $biblionumber = $order->{'biblionumber'};
if ( $biblionumber ) { # The biblio still exists
my $biblio = Koha::Biblios->find( $biblionumber );
- my $countbiblio = CountBiblioInOrders($biblionumber);
+ my $countbiblio = $biblio->active_orders->count;
+
my $ordernumber = $order->{'ordernumber'};
- my $has_subscriptions = $biblio->subscriptions->count;
+ my $cnt_subscriptions = $biblio->subscriptions->count;
my $itemcount = $biblio->items->count;
my $holds_count = $biblio->holds->count;
- my @items = GetItemnumbersFromOrder( $ordernumber );
- my $itemholds = $biblio->holds->search({ itemnumber => { -in => \@items } })->count;
+ my $order = Koha::Acquisition::Orders->find($ordernumber); # FIXME We should certainly do that at the beginning of this sub
+ my $items = $order->items;
+ my $itemholds = $biblio->holds->search({ itemnumber => { -in => [ $items->get_column('itemnumber') ] } })->count;
# if the biblio is not in other orders and if there is no items elsewhere and no subscriptions and no holds we can then show the link "Delete order and Biblio" see bug 5680
- $line{can_del_bib} = 1 if $countbiblio <= 1 && $itemcount == scalar @items && !($has_subscriptions) && !($holds_count);
- $line{items} = ($itemcount) - (scalar @items);
+ $line{can_del_bib} = 1 if $countbiblio <= 1 && $itemcount == $items->count && !($cnt_subscriptions) && !($holds_count);
+ $line{items} = $itemcount - $items->count;
$line{left_item} = 1 if $line{items} >= 1;
$line{left_biblio} = 1 if $countbiblio > 1;
$line{biblios} = $countbiblio - 1;
- $line{left_subscription} = 1 if $has_subscriptions;
- $line{subscriptions} = $has_subscriptions;
+ $line{left_subscription} = 1 if $cnt_subscriptions;
+ $line{subscriptions} = $cnt_subscriptions;
($holds_count >= 1) ? $line{left_holds} = 1 : $line{left_holds} = 0;
$line{left_holds_on_order} = 1 if $line{left_holds}==1 && ($line{items} == 0 || $itemholds );
$line{holds} = $holds_count;
foreach my $key (qw(transferred_from transferred_to)) {
if ($line{$key}) {
my $order = GetOrder($line{$key});
+ my $basket = GetBasket($order->{basketno});
my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
$line{$key} = {
order => $order,