use C4::Items;
use C4::Suggestions;
use Koha::Biblios;
+use Koha::Acquisition::Booksellers;
use Koha::Libraries;
use C4::Letters qw/SendAlerts/;
use Date::Calc qw/Add_Delta_Days/;
use Koha::Database;
use Koha::EDI qw( create_edi_order get_edifact_ean );
+use Koha::CsvProfiles;
=head1 NAME
=cut
-my $query = new CGI;
+our $query = new CGI;
our $basketno = $query->param('basketno');
-my $ean = $query->param('ean');
-my $booksellerid = $query->param('booksellerid');
+our $ean = $query->param('ean');
+our $booksellerid = $query->param('booksellerid');
my $duplinbatch = $query->param('duplinbatch');
-my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
+our ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
{
template_name => "acqui/basket.tt",
query => $query,
}
);
-my $basket = GetBasket($basketno);
+our $basket = GetBasket($basketno);
$booksellerid = $basket->{booksellerid} unless $booksellerid;
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
my $schema = Koha::Database->new()->schema();
my $rs = $schema->resultset('VendorEdiAccount')->search(
{ vendor_id => $booksellerid, } );
basketno => $basketno,
basketname => $basket->{basketname},
booksellerid => $booksellerid,
- name => $bookseller->{name}
+ name => $bookseller->name,
);
output_html_with_http_headers $query, $cookie, $template->output;
exit;
# warn "=>".$basket->{booksellerid};
my $op = $query->param('op') // 'list';
-my $confirm_pref= C4::Context->preference("BasketConfirmations") || '1';
+our $confirm_pref= C4::Context->preference("BasketConfirmations") || '1';
$template->param( skip_confirm_reopen => 1) if $confirm_pref eq '2';
my @messages;
my @cannotdelbiblios ;
foreach my $myorder (@orders){
my $biblionumber = $myorder->{'biblionumber'};
+ my $biblio = Koha::Biblios->find( $biblionumber );
my $countbiblio = CountBiblioInOrders($biblionumber);
my $ordernumber = $myorder->{'ordernumber'};
my $subscriptions = scalar GetSubscriptionsId ($biblionumber);
- my $itemcount = GetItemsCount($biblionumber);
+ my $itemcount = $biblio->items->count;
my $error;
if ($countbiblio == 0 && $itemcount == 0 && $subscriptions == 0) {
$error = DelBiblio($myorder->{biblionumber}) }
}
# delete the basket
DelBasket($basketno,);
- $template->param( delete_confirmed => 1 );
+ $template->param(
+ delete_confirmed => 1,
+ name => $bookseller->name,
+ booksellerid => $booksellerid,
+ );
} elsif ( !$bookseller ) {
$template->param( NO_BOOKSELLER => 1 );
} elsif ($op eq 'export') {
-type => 'text/csv',
-attachment => 'basket' . $basket->{'basketno'} . '.csv',
);
- print GetBasketAsCSV($query->param('basketno'), $query);
+ 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);
+ }
exit;
} elsif ($op eq 'email') {
my $err = eval {
my $estimateddeliverydate;
if( $basket->{closedate} ) {
my ($year, $month, $day) = ($basket->{closedate} =~ /(\d+)-(\d+)-(\d+)/);
- ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->{deliverytime});
+ ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->deliverytime);
$estimateddeliverydate = sprintf( "%04d-%02d-%02d", $year, $month, $day );
}
is_standing => $basket->{is_standing},
deliveryplace => $basket->{deliveryplace},
billingplace => $basket->{billingplace},
- active => $bookseller->{'active'},
- booksellerid => $bookseller->{'id'},
- name => $bookseller->{'name'},
+ active => $bookseller->active,
+ booksellerid => $bookseller->id,
+ name => $bookseller->name,
books_loop => \@books_loop,
book_foot_loop => \@book_foot_loop,
cancelledorders_loop => \@cancelledorders_loop,
total_tax_included => $total_tax_included,
total_tax_value => $total_tax_value,
currency => $active_currency->currency,
- listincgst => $bookseller->{listincgst},
+ listincgst => $bookseller->listincgst,
basketgroups => $basketgroups,
basketgroup => $basketgroup,
grouped => $basket->{basketgroupid},
unclosable => @orders ? $basket->{is_standing} : 1,
has_budgets => $has_budgets,
duplinbatch => $duplinbatch,
+ csv_profiles => [ Koha::CsvProfiles->search({ type => 'sql', used_for => 'export_basket' }) ],
);
}
}
my $biblionumber = $order->{'biblionumber'};
- my $biblio = Koha::Biblios->find( $biblionumber );
- my $countbiblio = CountBiblioInOrders($biblionumber);
- my $ordernumber = $order->{'ordernumber'};
- my @subscriptions = GetSubscriptionsId ($biblionumber);
- my $itemcount = GetItemsCount($biblionumber);
- my $holds_count = $biblio->holds->count;
- my @items = GetItemnumbersFromOrder( $ordernumber );
- my $itemholds;
- foreach my $item (@items){
- my $nb = GetItemHolds($biblionumber, $item);
- if ($nb){
- $itemholds += $nb;
- }
+ if ( $biblionumber ) { # The biblio still exists
+ my $biblio = Koha::Biblios->find( $biblionumber );
+ my $countbiblio = CountBiblioInOrders($biblionumber);
+ my $ordernumber = $order->{'ordernumber'};
+ my @subscriptions = GetSubscriptionsId ($biblionumber);
+ my $itemcount = $biblio->items->count;
+ my $holds_count = $biblio->holds->count;
+ my @items = GetItemnumbersFromOrder( $ordernumber );
+ my $itemholds = $biblio->holds->search({ itemnumber => { -in => \@items } })->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 && !(@subscriptions) && !($holds_count);
+ $line{items} = ($itemcount) - (scalar @items);
+ $line{left_item} = 1 if $line{items} >= 1;
+ $line{left_biblio} = 1 if $countbiblio > 1;
+ $line{biblios} = $countbiblio - 1;
+ $line{left_subscription} = 1 if scalar @subscriptions >= 1;
+ $line{subscriptions} = scalar @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;
+ $line{holds_on_order} = $itemholds?$itemholds:$holds_count if $line{left_holds_on_order};
}
- # 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 && !(@subscriptions) && !($holds_count);
- $line{items} = ($itemcount) - (scalar @items);
- $line{left_item} = 1 if $line{items} >= 1;
- $line{left_biblio} = 1 if $countbiblio > 1;
- $line{biblios} = $countbiblio - 1;
- $line{left_subscription} = 1 if scalar @subscriptions >= 1;
- $line{subscriptions} = scalar @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;
- $line{holds_on_order} = $itemholds?$itemholds:$holds_count if $line{left_holds_on_order};
my $suggestion = GetSuggestionInfoFromBiblionumber($line{biblionumber});
foreach my $key (qw(transferred_from transferred_to)) {
if ($line{$key}) {
my $order = GetOrder($line{$key});
- my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+ my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
$line{$key} = {
order => $order,
basket => $basket,