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
template_name => "acqui/basket.tt",
query => $query,
type => "intranet",
- authnotrequired => 0,
flagsrequired => { acquisition => 'order_manage' },
debug => 1,
}
);
+my $logged_in_patron = Koha::Patrons->find( $loggedinuser );
+
our $basket = GetBasket($basketno);
$booksellerid = $basket->{booksellerid} unless $booksellerid;
my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
my @messages;
if ( $op eq 'delete_confirm' ) {
+
+ output_and_exit( $query, $cookie, $template, 'insufficient_permission' )
+ unless $logged_in_patron->has_permission( { acquisition => 'delete_baskets' } );
+
my $basketno = $query->param('basketno');
my $delbiblio = $query->param('delbiblio');
my @orders = GetOrders($basketno);
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 $cnt_subscriptions = $biblio->subscriptions->count;
my $itemcount = $biblio->items->count;
-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 {
# if requested, create basket group, close it and attach the basket
if ($query->param('createbasketgroup')) {
my $branchcode;
- if(C4::Context->userenv and C4::Context->userenv->{'branch'}
- and C4::Context->userenv->{'branch'} ne "NO_LIBRARY_SET") {
+ if(C4::Context->userenv and C4::Context->userenv->{'branch'}) {
$branchcode = C4::Context->userenv->{'branch'};
}
my $basketgroupid = NewBasketgroup( { name => $basket->{basketname},
$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};
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;
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
+ $line{unitprice_tax_included} += 0;
+ $line{unitprice_tax_excluded} += 0;
+ 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 $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 && !($cnt_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_holds_on_order} = 1 if $line{left_holds}==1 && ($line{items} == 0 || $itemholds );
$line{holds} = $holds_count;
$line{holds_on_order} = $itemholds?$itemholds:$holds_count if $line{left_holds_on_order};
+ $line{order_object} = $order;
}
if ( $query->param('createbasketgroup') ) {
my $branchcode;
if ( C4::Context->userenv
- and C4::Context->userenv->{'branch'}
- and C4::Context->userenv->{'branch'} ne "NO_LIBRARY_SET" )
+ and C4::Context->userenv->{'branch'} )
{
$branchcode = C4::Context->userenv->{'branch'};
}