use CGI;
use C4::Bookseller qw/GetBookSellerFromId/;
-use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket/;
+use C4::Budgets qw/ConvertCurrency/;
+use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket GetBasketGroupAsCSV/;
use C4::Bookseller qw/GetBookSellerFromId/;
use C4::Branch qw/GetBranches/;
use C4::Members qw/GetMember/;
-my $input=new CGI;
+our $input=new CGI;
our ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "acqui/basketgroup.tmpl",
if (scalar @$basketgroups != 0) {
foreach my $basketgroup (@$basketgroups){
my $i = 0;
+ my $basketsqty = 0;
while($i < scalar(@$baskets)){
my $basket = @$baskets[$i];
if($basket->{'basketgroupid'} && $basket->{'basketgroupid'} == $basketgroup->{'id'}){
$basket->{total} = BasketTotal($basket->{basketno}, $bookseller);
push(@{$basketgroup->{'baskets'}}, $basket);
splice(@$baskets, $i, 1);
+ ++$basketsqty;
--$i;
}
++$i;
}
+ $basketgroup -> {'basketsqty'} = $basketsqty;
}
$template->param(basketgroups => $basketgroups);
}
my ($basketgroupid) = @_;
my $pdfformat = C4::Context->preference("OrderPdfFormat");
- if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages'){
+ if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages' || $pdfformat eq 'pdfformat::layout3pagesfr'){
eval {
eval "require $pdfformat";
import $pdfformat;
my @ba_orders;
my @ords = &GetOrders($basket->{basketno});
for my $ord (@ords) {
- # ba_order is filled with :
+
+ next unless ( $ord->{biblionumber} or $ord->{quantity}> 0 );
+ eval {
+ require C4::Biblio;
+ import C4::Biblio;
+ };
+ if ($@){
+ croak $@;
+ }
+ eval {
+ require C4::Koha;
+ import C4::Koha;
+ };
+ if ($@){
+ croak $@;
+ }
+
+ $ord->{rrp} = ConvertCurrency( $ord->{'currency'}, $ord->{rrp} );
+ if ( $bookseller->{'listincgst'} ) {
+ $ord->{rrpgsti} = sprintf( "%.2f", $ord->{rrp} );
+ $ord->{gstgsti} = sprintf( "%.2f", $ord->{gstrate} * 100 );
+ $ord->{rrpgste} = sprintf( "%.2f", $ord->{rrp} / ( 1 + ( $ord->{gstgsti} / 100 ) ) );
+ $ord->{gstgste} = sprintf( "%.2f", $ord->{gstgsti} / ( 1 + ( $ord->{gstgsti} / 100 ) ) );
+ $ord->{ecostgsti} = sprintf( "%.2f", $ord->{ecost} );
+ $ord->{ecostgste} = sprintf( "%.2f", $ord->{ecost} / ( 1 + ( $ord->{gstgsti} / 100 ) ) );
+ $ord->{gstvalue} = sprintf( "%.2f", ( $ord->{ecostgsti} - $ord->{ecostgste} ) * $ord->{quantity});
+ $ord->{totalgste} = sprintf( "%.2f", $ord->{quantity} * $ord->{ecostgste} );
+ $ord->{totalgsti} = sprintf( "%.2f", $ord->{quantity} * $ord->{ecostgsti} );
+ } else {
+ $ord->{rrpgsti} = sprintf( "%.2f", $ord->{rrp} * ( 1 + ( $ord->{gstrate} ) ) );
+ $ord->{rrpgste} = sprintf( "%.2f", $ord->{rrp} );
+ $ord->{gstgsti} = sprintf( "%.2f", $ord->{gstrate} * 100 );
+ $ord->{gstgste} = sprintf( "%.2f", $ord->{gstrate} * 100 );
+ $ord->{ecostgsti} = sprintf( "%.2f", $ord->{ecost} * ( 1 + ( $ord->{gstrate} ) ) );
+ $ord->{ecostgste} = sprintf( "%.2f", $ord->{ecost} );
+ $ord->{gstvalue} = sprintf( "%.2f", ( $ord->{ecostgsti} - $ord->{ecostgste} ) * $ord->{quantity});
+ $ord->{totalgste} = sprintf( "%.2f", $ord->{quantity} * $ord->{ecostgste} );
+ $ord->{totalgsti} = sprintf( "%.2f", $ord->{quantity} * $ord->{ecostgsti} );
+ }
+ my $bib = GetBiblioData($ord->{biblionumber});
+ my $itemtypes = GetItemTypes();
+
+ #FIXME DELETE ME
# 0 1 2 3 4 5 6 7 8 9
#isbn, itemtype, author, title, publishercode, quantity, listprice ecost discount gstrate
- my @ba_order;
- if ( $ord->{biblionumber} && $ord->{quantity}> 0 ) {
- eval {
- require C4::Biblio;
- import C4::Biblio;
- };
- if ($@){
- croak $@;
- }
- eval {
- require C4::Koha;
- import C4::Koha;
- };
- if ($@){
- croak $@;
- }
- my $bib = GetBiblioData($ord->{biblionumber});
- my $itemtypes = GetItemTypes();
- if($ord->{isbn}){
- push(@ba_order, $ord->{isbn});
- } else {
- push(@ba_order, undef);
- }
- if ($ord->{itemtype} and $bib->{itemtype}){
- push(@ba_order, $itemtypes->{$bib->{itemtype}}->{description});
- } else {
- push(@ba_order, undef);
- }
-# } else {
-# push(@ba_order, undef, undef);
- for my $key (qw/author title publishercode quantity listprice ecost/) {
- push(@ba_order, $ord->{$key}); #Order lines
- }
- push(@ba_order, $bookseller->{discount});
- push(@ba_order, $bookseller->{gstrate}*100 // C4::Context->preference("gist") // 0);
- push(@ba_orders, \@ba_order);
- # Editor Number
- my $en;
- my $marcrecord=eval{MARC::Record::new_from_xml( $ord->{marcxml},'UTF-8' )};
- if ($marcrecord){
- if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
- $en = $marcrecord->subfield( '345', "b" );
- } elsif ( C4::Context->preference("marcflavour") eq 'MARC21' ) {
- $en = $marcrecord->subfield( '037', "a" );
- }
- }
- if($en){
- push(@ba_order, $en);
- } else {
- push(@ba_order, undef);
+
+ # Editor Number
+ my $en;
+ my $marcrecord=eval{MARC::Record::new_from_xml( $ord->{marcxml},'UTF-8' )};
+ if ($marcrecord){
+ if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
+ $en = $marcrecord->subfield( '345', "b" );
+ } elsif ( C4::Context->preference("marcflavour") eq 'MARC21' ) {
+ $en = $marcrecord->subfield( '037', "a" );
}
}
+
+ my $ba_order = {
+ isbn => ($ord->{isbn} ? $ord->{isbn} : undef),
+ itemtype => ( $ord->{itemtype} and $bib->{itemtype} ? $itemtypes->{$bib->{itemtype}}->{description} : undef ),
+ en => ( $en ? $en : undef ),
+ };
+ for my $key ( qw/ gstrate author title itemtype publishercode discount quantity rrpgsti rrpgste gstgsti gstgste ecostgsti ecostgste gstvalue totalgste totalgsti / ) {
+ $ba_order->{$key} = $ord->{$key};
+ }
+
+ push(@ba_orders, $ba_order);
}
- $orders{$basket->{basketno}}=\@ba_orders;
+ $orders{$basket->{basketno}} = \@ba_orders;
}
print $input->header(
-type => 'application/pdf',
}
-my $op = $input->param('op');
+my $op = $input->param('op') || 'display';
my $booksellerid = $input->param('booksellerid');
$template->param(booksellerid => $booksellerid);
my $borrower = GetMember( ( 'borrowernumber' => $loggedinuser ) );
$billingplace = $billingplace || $borrower->{'branchcode'};
$deliveryplace = $deliveryplace || $borrower->{'branchcode'};
-
- my $branches = GetBranches;
-
- # Build the combobox to select the billing place
- my @billingplaceloop;
- for (sort keys %$branches) {
- push @billingplaceloop, {
- value => $_,
- selected => $_ eq $billingplace,
- branchname => $branches->{$_}->{branchname},
- };
- }
- $template->param( billingplaceloop => \@billingplaceloop );
-
- # Build the combobox to select the delivery place
- my @deliveryplaceloop;
- for (sort keys %$branches) {
- push @deliveryplaceloop, {
- value => $_,
- selected => $_ eq $deliveryplace,
- branchname => $branches->{$_}->{branchname},
- };
- }
- $template->param( deliveryplaceloop => \@deliveryplaceloop );
+
+ my $branches = C4::Branch::GetBranchesLoop( $billingplace );
+ $template->param( billingplaceloop => $branches );
+ $branches = C4::Branch::GetBranchesLoop( $deliveryplace );
+ $template->param( deliveryplaceloop => $branches );
$template->param( booksellerid => $booksellerid );
}
printbasketgrouppdf($basketgroupid);
exit;
+}elsif ( $op eq "export" ) {
+ my $basketgroupid = $input->param('basketgroupid');
+ print $input->header(
+ -type => 'text/csv',
+ -attachment => 'basketgroup' . $basketgroupid . '.csv',
+ );
+ print GetBasketGroupAsCSV( $basketgroupid, $input );
+ exit;
}elsif( $op eq "delete"){
my $basketgroupid = $input->param('basketgroupid');
DelBasketgroup($basketgroupid);
name => $basketgroupname,
booksellerid => $booksellerid,
basketlist => \@baskets,
+ billingplace => $billingplace,
deliveryplace => $deliveryplace,
freedeliveryplace => $freedeliveryplace,
deliverycomment => $deliverycomment,