use C4::Contract;
use C4::Debug;
use C4::Biblio;
-use C4::Members qw/GetMember/; #needed for permissions checking for changing basketgroup of a basket
use C4::Items;
use C4::Suggestions;
use Koha::Biblios;
use Date::Calc qw/Add_Delta_Days/;
use Koha::Database;
use Koha::EDI qw( create_edi_order get_edifact_ean );
+use Koha::CsvProfiles;
+use Koha::Patrons;
=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::Booksellers->find( $booksellerid );
my $schema = Koha::Database->new()->schema();
# 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 $has_subscriptions = $biblio->subscriptions->count;
+ my $itemcount = $biblio->items->count;
my $error;
- if ($countbiblio == 0 && $itemcount == 0 && $subscriptions == 0) {
+ if ($countbiblio == 0 && $itemcount == 0 && not $has_subscriptions ) {
$error = DelBiblio($myorder->{biblionumber}) }
else {
push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
author=> $myorder->{'author'},
countbiblio=> $countbiblio,
itemcount=>$itemcount,
- subscriptions=>$subscriptions};
+ subscriptions => $has_subscriptions};
}
if ($error) {
push @cannotdelbiblios, {biblionumber=> ($myorder->{biblionumber}),
-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 {
#if the basket is closed,and the user has the permission to edit basketgroups, display a list of basketgroups
my ($basketgroup, $basketgroups);
- my $staffuser = GetMember(borrowernumber => $loggedinuser);
- if ($basket->{closedate} && haspermission($staffuser->{userid}, { acquisition => 'group_manage'} )) {
+ my $patron = Koha::Patrons->find($loggedinuser);
+ if ($basket->{closedate} && haspermission($patron->userid, { acquisition => 'group_manage'} )) {
$basketgroups = GetBasketgroups($basket->{booksellerid});
for my $bg ( @{$basketgroups} ) {
if ($basket->{basketgroupid} && $basket->{basketgroupid} == $bg->{id}){
my @basketusers_ids = GetBasketUsers($basketno);
my @basketusers;
foreach my $basketuser_id (@basketusers_ids) {
- my $basketuser = GetMember(borrowernumber => $basketuser_id);
- push @basketusers, $basketuser if $basketuser;
+ # FIXME Could be improved with a search -in
+ my $basket_patron = Koha::Patrons->find( $basketuser_id );
+ push @basketusers, $basket_patron if $basket_patron;
}
my $active_currency = Koha::Acquisition::Currencies->get_active;
if ($basket->{basketgroupid}){
$basketgroup = GetBasketgroup($basket->{basketgroupid});
}
- my $borrower= GetMember('borrowernumber' => $loggedinuser);
my $budgets = GetBudgetHierarchy;
my $has_budgets = 0;
foreach my $r (@{$budgets}) {
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 $has_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;
+
+ # 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{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;
+ ($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});