use CGI qw ( -utf8 );
use C4::Acquisition;
use C4::Budgets;
-use C4::Branch;
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::Libraries;
use Date::Calc qw/Add_Delta_Days/;
+use Koha::Database;
+use Koha::EDI qw( create_edi_order get_edifact_ean );
=head1 NAME
my $query = new CGI;
our $basketno = $query->param('basketno');
+my $ean = $query->param('ean');
my $booksellerid = $query->param('booksellerid');
+my $duplinbatch = $query->param('duplinbatch');
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
{
my $basket = GetBasket($basketno);
$booksellerid = $basket->{booksellerid} unless $booksellerid;
my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $schema = Koha::Database->new()->schema();
+my $rs = $schema->resultset('VendorEdiAccount')->search(
+ { vendor_id => $booksellerid, } );
+$template->param( ediaccount => ($rs->count > 0));
unless (CanUserManageBasket($loggedinuser, $basket, $userflags)) {
$template->param(
} elsif ($op eq 'reopen') {
ReopenBasket($query->param('basketno'));
print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
+}
+elsif ( $op eq 'ediorder' ) {
+ edi_close_and_order()
} elsif ( $op eq 'mod_users' ) {
my $basketusers_ids = $query->param('users_ids');
my @basketusers = split( /:/, $basketusers_ids );
exit 1;
}
}
+
if (!defined $basket->{branch} or $basket->{branch} eq $userenv->{branch}) {
push @branches_loop, {
branchcode => $userenv->{branch},
}
} else {
# get branches
- my $branches = C4::Branch::GetBranches;
- my @branchcodes = sort {
- $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname}
- } keys %$branches;
- foreach my $branch (@branchcodes) {
+ my $branches = Koha::Libraries->search( {}, { order_by => ['branchname'] } )->unblessed;
+ foreach my $branch (@$branches) {
my $selected = 0;
if (defined $basket->{branch}) {
- $selected = 1 if $branch eq $basket->{branch};
+ $selected = 1 if $branch->{branchcode} eq $basket->{branch};
} else {
- $selected = 1 if $branch eq C4::Context->userenv->{branch};
+ $selected = 1 if $branch->{branchcode} eq C4::Context->userenv->{branch};
}
push @branches_loop, {
- branchcode => $branch,
- branchname => $branches->{$branch}->{branchname},
+ branchcode => $branch->{branchcode},
+ branchname => $branch->{branchname},
selected => $selected
};
}
push @basketusers, $basketuser if $basketuser;
}
- #to get active currency
- my $cur = GetCurrency();
-
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
my @orders = GetOrders( $basketno );
my @books_loop;
if ($basket->{basketgroupid}){
$basketgroup = GetBasketgroup($basket->{basketgroupid});
- $basketgroup->{deliveryplacename} = C4::Branch::GetBranchName( $basketgroup->{deliveryplace} );
- $basketgroup->{billingplacename} = C4::Branch::GetBranchName( $basketgroup->{billingplace} );
}
my $borrower= GetMember('borrowernumber' => $loggedinuser);
my $budgets = GetBudgetHierarchy;
$template->param(
basketno => $basketno,
+ basket => $basket,
basketname => $basket->{'basketname'},
- basketbranchname => C4::Branch::GetBranchName($basket->{branch}),
+ basketbranchcode => $basket->{branch},
basketnote => $basket->{note},
basketbooksellernote => $basket->{booksellernote},
basketcontractno => $basket->{contractnumber},
users => \@basketusers,
closedate => $basket->{closedate},
estimateddeliverydate=> $estimateddeliverydate,
- deliveryplace => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
- billingplace => C4::Branch::GetBranchName( $basket->{billingplace} ),
+ is_standing => $basket->{is_standing},
+ deliveryplace => $basket->{deliveryplace},
+ billingplace => $basket->{billingplace},
active => $bookseller->{'active'},
booksellerid => $bookseller->{'id'},
name => $bookseller->{'name'},
total_gste => sprintf( "%.2f", $total_gste ),
total_gsti => sprintf( "%.2f", $total_gsti ),
total_gstvalue => sprintf( "%.2f", $total_gstvalue ),
- currency => $cur->{'currency'},
+ currency => $active_currency->currency,
listincgst => $bookseller->{listincgst},
basketgroups => $basketgroups,
basketgroup => $basketgroup,
grouped => $basket->{basketgroupid},
- unclosable => @orders ? 0 : 1,
+ # The double negatives and booleans here mean:
+ # "A basket cannot be closed if there are no orders in it or it's a standing order basket."
+ #
+ # (The template has another implicit restriction that the order cannot be closed if there
+ # are any orders with uncertain prices.)
+ unclosable => @orders ? $basket->{is_standing} : 1,
has_budgets => $has_budgets,
+ duplinbatch => $duplinbatch,
);
}
if ( !defined $order->{quantityreceived} ) {
$order->{quantityreceived} = 0;
}
- my $budget = GetBudget( $order->{'budget_id'} );
+ my $budget = GetBudget($order->{budget_id});
+ my $basket = GetBasket($order->{basketno});
my %line = %{ $order };
- $line{order_received} = ( $qty == $order->{'quantityreceived'} );
+ # Don't show unreceived standing orders as received
+ $line{order_received} = ( $qty == $order->{'quantityreceived'} && ( $basket->{is_standing} ? $qty : 1 ) );
$line{basketno} = $basketno;
$line{budget_name} = $budget->{budget_name};
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'};
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::Bookseller->fetch({ id => $basket->{booksellerid} });
$line{$key} = {
order => $order,
}
output_html_with_http_headers $query, $cookie, $template->output;
+
+
+sub edi_close_and_order {
+ my $confirm = $query->param('confirm') || $confirm_pref eq '2';
+ if ($confirm) {
+ my $edi_params = {
+ basketno => $basketno,
+ ean => $ean,
+ };
+ if ( $basket->{branch} ) {
+ $edi_params->{branchcode} = $basket->{branch};
+ }
+ if ( create_edi_order($edi_params) ) {
+ #$template->param( edifile => 1 );
+ }
+ CloseBasket($basketno);
+
+ # 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" )
+ {
+ $branchcode = C4::Context->userenv->{'branch'};
+ }
+ my $basketgroupid = NewBasketgroup(
+ {
+ name => $basket->{basketname},
+ booksellerid => $booksellerid,
+ deliveryplace => $branchcode,
+ billingplace => $branchcode,
+ closed => 1,
+ }
+ );
+ ModBasket(
+ {
+ basketno => $basketno,
+ basketgroupid => $basketgroupid
+ }
+ );
+ print $query->redirect(
+"/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=$booksellerid&closed=1"
+ );
+ }
+ else {
+ print $query->redirect(
+ "/cgi-bin/koha/acqui/booksellers.pl?booksellerid=$booksellerid"
+ );
+ }
+ exit;
+ }
+ else {
+ $template->param(
+ edi_confirm => 1,
+ booksellerid => $booksellerid,
+ basketno => $basket->{basketno},
+ basketname => $basket->{basketname},
+ basketgroupname => $basket->{basketname},
+ );
+ if ($ean) {
+ $template->param( ean => $ean );
+ }
+
+ }
+ return;
+}