use warnings;
use Carp;
-use C4::Input;
use C4::Auth;
use C4::Output;
use CGI qw ( -utf8 );
-use C4::Budgets qw/ConvertCurrency/;
use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket GetBasketGroupAsCSV/;
-use C4::Branch qw/GetBranches/;
-use C4::Members qw/GetMember/;
+use Koha::EDI qw/create_edi_order get_edifact_ean/;
-use Koha::Acquisition::Bookseller;
+use Koha::Biblioitems;
+use Koha::Acquisition::Booksellers;
+use Koha::ItemTypes;
+use Koha::Patrons;
our $input=new CGI;
my $total = 0;
my @orders = GetOrders($basketno);
for my $order (@orders){
- $total = $total + ( $order->{ecost} * $order->{quantity} );
- if ($bookseller->{invoiceincgst} && ! $bookseller->{listincgst} && ( $bookseller->{gstrate} // C4::Context->preference("gist") )) {
- my $gst = $bookseller->{gstrate} // C4::Context->preference("gist");
- $total = $total * ( $gst / 100 +1);
+ # FIXME The following is wrong
+ if ( $bookseller->listincgst ) {
+ $total = $total + ( $order->{ecost_tax_included} * $order->{quantity} );
+ } else {
+ $total = $total + ( $order->{ecost_tax_excluded} * $order->{quantity} );
}
}
- $total .= " " . ($bookseller->{invoiceprice} // 0);
+ $total .= " " . ($bookseller->invoiceprice // 0);
return $total;
}
}
}
$template->param(baskets => $baskets);
- $template->param( booksellername => $bookseller ->{'name'});
+ $template->param( booksellername => $bookseller->name);
}
sub printbasketgrouppdf{
}
my $basketgroup = GetBasketgroup($basketgroupid);
- my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basketgroup->{booksellerid} });
+ my $bookseller = Koha::Acquisition::Booksellers->find( $basketgroup->{booksellerid} );
my $baskets = GetBasketsByBasketgroup($basketgroupid);
my %orders;
croak $@;
}
- $ord = C4::Acquisition::populate_order_with_prices({ order => $ord, booksellerid => $bookseller->{id}, ordering => 1 });
- my $bib = GetBiblioData($ord->{biblionumber});
- my $itemtypes = GetItemTypes();
+ $ord->{tax_value} = $ord->{tax_value_on_ordering};
+ $ord->{tax_rate} = $ord->{tax_rate_on_ordering};
+ $ord->{total_tax_included} = $ord->{ecost_tax_included} * $ord->{quantity};
+ $ord->{total_tax_excluded} = $ord->{ecost_tax_excluded} * $ord->{quantity};
+
+ my $biblioitem = Koha::Biblioitems->search({ biblionumber => $ord->{biblionumber} })->next;
#FIXME DELETE ME
# 0 1 2 3 4 5 6 7 8 9
- #isbn, itemtype, author, title, publishercode, quantity, listprice ecost discount gstrate
+ #isbn, itemtype, author, title, publishercode, quantity, listprice ecost discount tax_rate
# Editor Number
my $en;
my $edition;
+ $ord->{marcxml} = C4::Biblio::GetXmlBiblio( $ord->{biblionumber} );
my $marcrecord=eval{MARC::Record::new_from_xml( $ord->{marcxml},'UTF-8' )};
if ($marcrecord){
if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
}
}
- $ord->{itemtype} = ( $ord->{itemtype} and $bib->{itemtype} ) ? $itemtypes->{$bib->{itemtype}}->{description} : undef;
+ $ord->{itemtype} = ( $ord->{itemtype} and $biblioitem->itemtype ) ? Koha::ItemTypes->find( $biblioitem->itemtype )->description : undef;
$ord->{en} = $en ? $en : undef;
$ord->{edition} = $edition ? $edition : undef;
-type => 'application/pdf',
-attachment => ( $basketgroup->{name} || $basketgroupid ) . '.pdf'
);
- my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->{gstrate} // C4::Context->preference("gist")) || die "pdf generation failed";
+ my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->tax_rate // C4::Context->preference("gist")) || die "pdf generation failed";
print $pdf;
}
+sub generate_edifact_orders {
+ my $basketgroupid = shift;
+ my $baskets = GetBasketsByBasketgroup($basketgroupid);
+ my $ean = get_edifact_ean();
+
+ for my $basket ( @{$baskets} ) {
+ create_edi_order( { ean => $ean, basketno => $basket->{basketno}, } );
+ }
+ 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
+# - 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
# 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::Bookseller->fetch({ id => $booksellerid });
+ my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
my $basketgroupid = $input->param('basketgroupid');
my $billingplace;
my $deliveryplace;
$template->param( closedbg => 0);
}
# determine default billing and delivery places depending on librarian homebranch and existing basketgroup data
- my $borrower = GetMember( ( 'borrowernumber' => $loggedinuser ) );
- $billingplace = $billingplace || $borrower->{'branchcode'};
- $deliveryplace = $deliveryplace || $borrower->{'branchcode'};
-
- my $branches = C4::Branch::GetBranchesLoop( $billingplace );
- $template->param( billingplaceloop => $branches );
- $branches = C4::Branch::GetBranchesLoop( $deliveryplace );
- $template->param( deliveryplaceloop => $branches );
+ 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
#
# Getting parameters
my $basketgroup = {};
- my @baskets = $input->param('basket');
+ my @baskets = $input->multi_param('basket');
my $basketgroupid = $input->param('basketgroupid');
my $basketgroupname = $input->param('basketgroupname');
my $booksellerid = $input->param('booksellerid');
$redirectpath .= "&listclosed=1" if $closedbg ;
print $input->redirect($redirectpath );
+} elsif ( $op eq 'ediprint') {
+ my $basketgroupid = $input->param('basketgroupid');
+ generate_edifact_orders( $basketgroupid );
+ exit;
}else{
# no param : display the list of all basketgroups for a given vendor
my $basketgroups = &GetBasketgroups($booksellerid);
- my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+ my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
my $baskets = &GetBasketsByBookseller($booksellerid);
displaybasketgroups($basketgroups, $bookseller, $baskets);