@@ -, +, @@
- Koha::Bookseller(s)
- Koha::Basket(s)
- Koha::Basketgroup(s)
- Koha::Order(s)
on the left
(Edit, Close and export as PDF, View, Reopen, Export as CSV)
---
Koha/Basket.pm | 36 ++
Koha/Basketgroup.pm | 78 ++++
Koha/Basketgroups.pm | 32 ++
Koha/Baskets.pm | 32 ++
Koha/Bookseller.pm | 26 ++
Koha/Booksellers.pm | 32 ++
Koha/Order.pm | 26 ++
Koha/Orders.pm | 32 ++
acqui/basket.pl | 4 +-
acqui/basketgroup.pl | 208 +++++------
acqui/basketgroups.pl | 52 +++
.../prog/en/includes/acquisitions-menu.inc | 2 +-
.../intranet-tmpl/prog/en/includes/datatables.inc | 2 +
.../intranet-tmpl/prog/en/includes/vendor-menu.inc | 2 +-
.../prog/en/modules/acqui/basketgroup.tt | 408 +++++++--------------
.../prog/en/modules/acqui/basketgroups.tt | 162 ++++++++
koha-tmpl/intranet-tmpl/prog/js/basketgroup.js | 8 -
koha-tmpl/intranet-tmpl/prog/js/datatables.js | 95 +++--
18 files changed, 813 insertions(+), 424 deletions(-)
create mode 100644 Koha/Basket.pm
create mode 100644 Koha/Basketgroup.pm
create mode 100644 Koha/Basketgroups.pm
create mode 100644 Koha/Baskets.pm
create mode 100644 Koha/Bookseller.pm
create mode 100644 Koha/Booksellers.pm
create mode 100644 Koha/Order.pm
create mode 100644 Koha/Orders.pm
create mode 100755 acqui/basketgroups.pl
create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketgroups.tt
--- a/Koha/Basket.pm
+++ a/Koha/Basket.pm
@@ -0,0 +1,36 @@
+package Koha::Basket;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Koha::Orders;
+
+use base qw(Koha::Object);
+
+sub _type {
+ return 'Aqbasket';
+}
+
+sub orders {
+ my ($self) = @_;
+
+ $self->{_orders} ||= Koha::Orders->search({ basketno => $self->basketno });
+
+ return wantarray ? $self->{_orders}->as_list : $self->{_orders};
+}
+
+1;
--- a/Koha/Basketgroup.pm
+++ a/Koha/Basketgroup.pm
@@ -0,0 +1,78 @@
+package Koha::Basketgroup;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use List::MoreUtils qw/uniq/;
+
+use Koha::Baskets;
+
+use base qw(Koha::Object);
+
+sub _type {
+ return 'Aqbasketgroup';
+}
+
+sub bookseller {
+ my ($self) = @_;
+
+ return Koha::Booksellers->find($self->booksellerid);
+}
+
+sub baskets {
+ my ($self) = @_;
+
+ $self->{_baskets} ||= Koha::Baskets->search({ basketgroupid => $self->id });
+
+ return wantarray ? $self->{_baskets}->as_list : $self->{_baskets};
+}
+
+sub baskets_count {
+ my ($self) = @_;
+
+ return $self->baskets->count;
+}
+
+sub ordered_titles_count {
+ my ($self) = @_;
+
+ my @biblionumbers;
+ foreach my $basket ($self->baskets) {
+ foreach my $order ($basket->orders) {
+ push @biblionumbers, $order->biblionumber;
+ }
+ }
+
+ return scalar uniq @biblionumbers;
+}
+
+sub received_titles_count {
+ my ($self) = @_;
+
+ my @biblionumbers;
+ foreach my $basket ($self->baskets) {
+ foreach my $order ($basket->orders) {
+ if ($order->datereceived) {
+ push @biblionumbers, $order->biblionumber;
+ }
+ }
+ }
+
+ return scalar uniq @biblionumbers;
+}
+
+1;
--- a/Koha/Basketgroups.pm
+++ a/Koha/Basketgroups.pm
@@ -0,0 +1,32 @@
+package Koha::Basketgroups;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Koha::Basketgroup;
+
+use base qw(Koha::Objects);
+
+sub _type {
+ return 'Aqbasketgroup';
+}
+
+sub object_class {
+ return 'Koha::Basketgroup';
+}
+
+1;
--- a/Koha/Baskets.pm
+++ a/Koha/Baskets.pm
@@ -0,0 +1,32 @@
+package Koha::Baskets;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Koha::Basket;
+
+use base qw(Koha::Objects);
+
+sub _type {
+ return 'Aqbasket';
+}
+
+sub object_class {
+ return 'Koha::Basket';
+}
+
+1;
--- a/Koha/Bookseller.pm
+++ a/Koha/Bookseller.pm
@@ -0,0 +1,26 @@
+package Koha::Bookseller;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use base qw(Koha::Object);
+
+sub _type {
+ return 'Aqbookseller';
+}
+
+1;
--- a/Koha/Booksellers.pm
+++ a/Koha/Booksellers.pm
@@ -0,0 +1,32 @@
+package Koha::Booksellers;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Koha::Bookseller;
+
+use base qw(Koha::Objects);
+
+sub _type {
+ return 'Aqbookseller';
+}
+
+sub object_class {
+ return 'Koha::Bookseller';
+}
+
+1;
--- a/Koha/Order.pm
+++ a/Koha/Order.pm
@@ -0,0 +1,26 @@
+package Koha::Order;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use base qw(Koha::Object);
+
+sub _type {
+ return 'Aqorder';
+}
+
+1;
--- a/Koha/Orders.pm
+++ a/Koha/Orders.pm
@@ -0,0 +1,32 @@
+package Koha::Orders;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Koha::Order;
+
+use base qw(Koha::Objects);
+
+sub _type {
+ return 'Aqorder';
+}
+
+sub object_class {
+ return 'Koha::Order';
+}
+
+1;
--- a/acqui/basket.pl
+++ a/acqui/basket.pl
@@ -207,7 +207,7 @@ if ( $op eq 'delete_confirm' ) {
});
ModBasket( { basketno => $basketno,
basketgroupid => $basketgroupid } );
- print $query->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid='.$booksellerid.'&closed=1');
+ print $query->redirect('/cgi-bin/koha/acqui/basketgroups.pl?booksellerid='.$booksellerid);
} else {
print $query->redirect('/cgi-bin/koha/acqui/booksellers.pl?booksellerid=' . $booksellerid);
}
@@ -554,7 +554,7 @@ sub edi_close_and_order {
}
);
print $query->redirect(
-"/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=$booksellerid&closed=1"
+ "/cgi-bin/koha/acqui/basketgroups.pl?booksellerid=$booksellerid"
);
}
else {
--- a/acqui/basketgroup.pl
+++ a/acqui/basketgroup.pl
@@ -90,9 +90,7 @@ sub BasketTotal {
#displays all basketgroups and all closed baskets (in their respective groups)
sub displaybasketgroups {
- my $basketgroups = shift;
- my $bookseller = shift;
- my $baskets = shift;
+ my ($basketgroups, $bookseller, $baskets, $template) = @_;
if (scalar @$basketgroups != 0) {
foreach my $basketgroup (@$basketgroups){
my $i = 0;
@@ -126,29 +124,31 @@ sub displaybasketgroups {
sub printbasketgrouppdf{
my ($basketgroupid) = @_;
-
+
my $pdfformat = C4::Context->preference("OrderPdfFormat");
if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages' || $pdfformat eq 'pdfformat::layout3pagesfr'
|| $pdfformat eq 'pdfformat::layout2pagesde'){
- eval {
- eval "require $pdfformat";
- import $pdfformat;
- };
- if ($@){
- }
+ eval {
+ my $pdfformatfile = './' . ($pdfformat =~ s,::,/,gr) . '.pm';
+ require $pdfformatfile;
+ import $pdfformat;
+ };
+ if ($@){
+ warn $@;
+ }
}
else {
- print $input->header;
- print $input->start_html; # FIXME Should do a nicer page
- print "
Invalid PDF Format set
";
- print "Please go to the systempreferences and set a valid pdfformat";
- exit;
+ print $input->header;
+ print $input->start_html; # FIXME Should do a nicer page
+ print "Invalid PDF Format set
";
+ print "Please go to the systempreferences and set a valid pdfformat";
+ exit;
}
-
+
my $basketgroup = GetBasketgroup($basketgroupid);
my $bookseller = Koha::Acquisition::Booksellers->find( $basketgroup->{booksellerid} );
my $baskets = GetBasketsByBasketgroup($basketgroupid);
-
+
my %orders;
for my $basket (@$baskets) {
my @ba_orders;
@@ -211,7 +211,6 @@ sub printbasketgrouppdf{
);
my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->tax_rate // C4::Context->preference("gist")) || die "pdf generation failed";
print $pdf;
-
}
sub generate_edifact_orders {
@@ -225,70 +224,25 @@ sub generate_edifact_orders {
return;
}
-my $op = $input->param('op') || 'display';
# possible values of $op :
-# - add : adds a new basketgroup, or edit an open basketgroup, or display a closed basketgroup
# - mod_basket : modify an individual basket of the basketgroup
-# - closeandprint : close and print an closed basketgroup in pdf. called by clicking on "Close and print" button in closed basketgroups list
-# - print : print a closed basketgroup. called by clicking on "Print" button in closed basketgroups list
+# - closeandprint : close and print an closed basketgroup in pdf. called by
+# clicking on "Close and print" button in closed basketgroups list
+# - print : print a closed basketgroup. called by clicking on "Print" button in
+# closed basketgroups list
# - ediprint : generate edi order messages for the baskets in the group
-# - export : export in CSV a closed basketgroup. called by clicking on "Export" button in closed basketgroups list
-# - delete : delete an open basketgroup. called by clicking on "Delete" button in open basketgroups list
-# - reopen : reopen a closed basketgroup. called by clicking on "Reopen" button in closed basketgroup list
-# - attachbasket : save a modified basketgroup, or creates a new basketgroup when a basket is closed. called from basket page
-# - display : display the list of all basketgroups for a vendor
+# - export : export in CSV a closed basketgroup. called by clicking on "Export"
+# button in closed basketgroups list
+# - delete : delete an open basketgroup. called by clicking on "Delete" button
+# in open basketgroups list
+# - reopen : reopen a closed basketgroup. called by clicking on "Reopen" button
+# in closed basketgroup list
+# - attachbasket : save a modified basketgroup, or creates a new basketgroup
+# when a basket is closed. called from basket page
+my $op = $input->param('op');
my $booksellerid = $input->param('booksellerid');
-$template->param(booksellerid => $booksellerid);
-if ( $op eq "add" ) {
-#
-# if no param('basketgroupid') is not defined, adds a new basketgroup
-# else, edit (if it is open) or display (if it is close) the basketgroup basketgroupid
-# the template will know if basketgroup must be displayed or edited, depending on the value of closed key
-#
- my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
- my $basketgroupid = $input->param('basketgroupid');
- my $billingplace;
- my $deliveryplace;
- my $freedeliveryplace;
- if ( $basketgroupid ) {
- # Get the selected baskets in the basketgroup to display them
- my $selecteds = GetBasketsByBasketgroup($basketgroupid);
- foreach my $basket(@{$selecteds}){
- $basket->{total} = BasketTotal($basket->{basketno}, $bookseller);
- }
- $template->param(basketgroupid => $basketgroupid,
- selectedbaskets => $selecteds);
-
- # Get general informations about the basket group to prefill the form
- my $basketgroup = GetBasketgroup($basketgroupid);
- $template->param(
- name => $basketgroup->{name},
- deliverycomment => $basketgroup->{deliverycomment},
- freedeliveryplace => $basketgroup->{freedeliveryplace},
- );
- $billingplace = $basketgroup->{billingplace};
- $deliveryplace = $basketgroup->{deliveryplace};
- $freedeliveryplace = $basketgroup->{freedeliveryplace};
- $template->param( closedbg => ($basketgroup ->{'closed'}) ? 1 : 0);
- } else {
- $template->param( closedbg => 0);
- }
- # determine default billing and delivery places depending on librarian homebranch and existing basketgroup data
- my $patron = Koha::Patrons->find( $loggedinuser ); # FIXME Not needed if billingplace and deliveryplace are set
- $billingplace = $billingplace || $patron->branchcode;
- $deliveryplace = $deliveryplace || $patron->branchcode;
-
- $template->param( billingplace => $billingplace );
- $template->param( deliveryplace => $deliveryplace );
- $template->param( booksellerid => $booksellerid );
-
- # the template will display a unique basketgroup
- $template->param(grouping => 1);
- my $basketgroups = &GetBasketgroups($booksellerid);
- my $baskets = &GetBasketsByBookseller($booksellerid);
- displaybasketgroups($basketgroups, $bookseller, $baskets);
-} elsif ($op eq 'mod_basket') {
+if ($op eq 'mod_basket') {
#
# edit an individual basket contained in this basketgroup
#
@@ -329,7 +283,8 @@ if ( $op eq "add" ) {
#
my $basketgroupid = $input->param('basketgroupid');
DelBasketgroup($basketgroupid);
- print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid.'&listclosed=1');
+ print $input->redirect('/cgi-bin/koha/acqui/basketgroups.pl?booksellerid=' . $booksellerid);
+ exit;
}elsif ( $op eq 'reopen'){
#
# reopen a closed basketgroup
@@ -337,8 +292,15 @@ if ( $op eq "add" ) {
my $basketgroupid = $input->param('basketgroupid');
my $booksellerid = $input->param('booksellerid');
ReOpenBasketgroup($basketgroupid);
- my $redirectpath = ((defined $input->param('mode'))&& ($input->param('mode') eq 'singlebg')) ?'/cgi-bin/koha/acqui/basketgroup.pl?op=add&basketgroupid='.$basketgroupid.'&booksellerid='.$booksellerid : '/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' .$booksellerid.'&listclosed=1';
+ my $redirectpath;
+ my $mode = $input->param('mode');
+ if (defined $mode && $mode eq 'singlebg') {
+ $redirectpath = '/cgi-bin/koha/acqui/basketgroup.pl?op=add&basketgroupid='.$basketgroupid.'&booksellerid='.$booksellerid;
+ } else {
+ $redirectpath = '/cgi-bin/koha/acqui/basketgroups.pl?booksellerid=' .$booksellerid;
+ }
print $input->redirect($redirectpath);
+ exit;
} elsif ( $op eq 'attachbasket') {
#
# save a modified basketgroup, or creates a new basketgroup when a basket is closed. called from basket page
@@ -384,45 +346,63 @@ if ( $op eq "add" ) {
};
$basketgroupid = NewBasketgroup($basketgroup);
}
- my $redirectpath = ((defined $input->param('mode')) && ($input->param('mode') eq 'singlebg')) ?'/cgi-bin/koha/acqui/basketgroup.pl?op=add&basketgroupid='.$basketgroupid.'&booksellerid='.$booksellerid : '/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid;
- $redirectpath .= "&listclosed=1" if $closedbg ;
- print $input->redirect($redirectpath );
-
+ my $redirectpath;
+ my $mode = $input->param('mode');
+ if (defined $mode && $mode eq 'singlebg') {
+ $redirectpath = '/cgi-bin/koha/acqui/basketgroup.pl?op=add&basketgroupid='.$basketgroupid.'&booksellerid='.$booksellerid;
+ } else {
+ $redirectpath = '/cgi-bin/koha/acqui/basketgroups.pl?booksellerid=' . $booksellerid;
+ }
+ print $input->redirect($redirectpath);
+ exit;
} elsif ( $op eq 'ediprint') {
my $basketgroupid = $input->param('basketgroupid');
generate_edifact_orders( $basketgroupid );
exit;
-}else{
- my @booksellers;
- if ($booksellerid) {
- my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
- push @booksellers, $bookseller;
- $template->param(booksellername => $booksellers[0]->{name});
- } else {
- @booksellers = Koha::Acquisition::Bookseller->search;
- }
- foreach my $bookseller (@booksellers) {
- $bookseller->{basketgroups} = GetBasketgroups($bookseller->{id});
- foreach my $basketgroup (@{ $bookseller->{basketgroups} }) {
- my $baskets = GetBasketsByBasketgroup($basketgroup->{id});
- $basketgroup->{basketsqty} = 0;
- my (@ordered_biblionumbers, @received_biblionumbers);
- foreach my $basket (@$baskets) {
- $basketgroup->{basketsqty} += 1;
- my @orders = GetOrders($basket->{basketno});
- foreach my $order (@orders) {
- push @ordered_biblionumbers, $order->{biblionumber};
- if ($order->{datereceived}) {
- push @received_biblionumbers, $order->{biblionumber};
- }
- }
- }
- $basketgroup->{ordered_titles_count} = uniq @ordered_biblionumbers;
- $basketgroup->{received_titles_count} = uniq @received_biblionumbers;
- }
+}
+
+# if no param('basketgroupid') is not defined, adds a new basketgroup else, edit
+# (if it is open) or display (if it is close) the basketgroup basketgroupid the
+# template will know if basketgroup must be displayed or edited, depending on
+# the value of closed key
+
+my $bookseller = Koha::Acquisition::Booksellers->find($booksellerid);
+my $basketgroupid = $input->param('basketgroupid');
+my $billingplace;
+my $deliveryplace;
+my $freedeliveryplace;
+if ( $basketgroupid ) {
+ # Get the selected baskets in the basketgroup to display them
+ my $selecteds = GetBasketsByBasketgroup($basketgroupid);
+ foreach my $basket(@{$selecteds}){
+ $basket->{total} = BasketTotal($basket->{basketno}, $bookseller);
}
- $template->param(booksellers => \@booksellers);
+ $template->param(basketgroupid => $basketgroupid,
+ selectedbaskets => $selecteds);
+
+ # Get general informations about the basket group to prefill the form
+ my $basketgroup = GetBasketgroup($basketgroupid);
+ $template->param(
+ name => $basketgroup->{name},
+ billingplace => $basketgroup->{billingplace},
+ deliveryplace => $basketgroup->{deliveryplace},
+ deliverycomment => $basketgroup->{deliverycomment},
+ freedeliveryplace => $basketgroup->{freedeliveryplace},
+ closedbg => $basketgroup->{closed} ? 1 : 0
+ );
+} else {
+ $template->param( closedbg => 0);
}
-$template->param(listclosed => ((defined $input->param('listclosed')) && ($input->param('listclosed') eq '1'))? 1:0 );
-#prolly won't use all these, maybe just use print, the rest can be done inside validate
+# determine default billing and delivery places depending on librarian homebranch and existing basketgroup data
+my $borrower = Koha::Patrons->find( $loggedinuser );
+$billingplace = $billingplace || $borrower->branchcode;
+$deliveryplace = $deliveryplace || $borrower->branchcode;
+
+$template->param( booksellerid => $booksellerid );
+
+# the template will display a unique basketgroup
+my $basketgroups = &GetBasketgroups($booksellerid);
+my $baskets = &GetBasketsByBookseller($booksellerid);
+displaybasketgroups($basketgroups, $bookseller, $baskets, $template);
+
output_html_with_http_headers $input, $cookie, $template->output;
--- a/acqui/basketgroups.pl
+++ a/acqui/basketgroups.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see .
+
+use Modern::Perl;
+
+use CGI qw(-utf8);
+
+use C4::Auth;
+use C4::Output;
+
+use Koha::Acquisition::Basketgroups;
+use Koha::Acquisition::Booksellers;
+
+my $cgi = new CGI;
+
+my ($template, $loggedinuser, $cookie) = get_template_and_user({
+ template_name => 'acqui/basketgroups.tt',
+ query => $cgi,
+ type => 'intranet',
+ flagsrequired => { acquisition => 'group_manage' },
+});
+
+my $booksellerid = $cgi->param('booksellerid');
+
+my $params = {};
+if ($booksellerid) {
+ $params->{booksellerid} = $booksellerid;
+ my $bookseller = Koha::Acquisition::Booksellers->find($booksellerid);
+ $template->param(bookseller => $bookseller);
+}
+
+my @basketgroups = Koha::Acquisition::Basketgroups->search($params);
+
+$template->param(
+ basketgroups => \@basketgroups,
+);
+
+output_html_with_http_headers $cgi, $cookie, $template->output;
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-menu.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-menu.inc
@@ -4,7 +4,7 @@
- Acquisitions home
[% IF ( CAN_user_acquisition_group_manage ) %]
- - Basket groups
+ - Basket groups
[% END %]
- Late orders
[% IF ( suggestion ) %]- Suggestions
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc
@@ -23,6 +23,8 @@
var MSG_DT_SEARCH = _("Search:");
var MSG_DT_ZERO_RECORDS = _("No matching records found");
var MSG_DT_ALL = _("All");
+ var MSG_DT_SORT_ASC = _(": activate to sort column ascending");
+ var MSG_DT_SORT_DESC = _(": activate to sort column descending");
var CONFIG_EXCLUDE_ARTICLES_FROM_SORT = _("a an the");
var MSG_DT_COPY_TITLE = _("Copy to clipboard");
var MSG_DT_COPY_KEYS = _("Press ctrl or ⌘ + C to copy the table data
to your system clipboard.
To cancel, click this message or press escape.");
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/vendor-menu.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/vendor-menu.inc
@@ -2,7 +2,7 @@