#
# 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 2 of the License, or (at your option) any later
-# version.
+# 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.
+# 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.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use CGI;
+use CGI qw ( -utf8 );
use Carp;
-use Number::Format qw(:all);
use YAML qw/Load/;
use C4::Context;
use C4::Auth;
-use C4::Input;
use C4::Output;
use C4::ImportBatch;
use C4::Matcher;
use C4::Koha;
use C4::Budgets;
use C4::Acquisition;
-use C4::Bookseller qw/GetBookSellerFromId/;
use C4::Suggestions; # GetSuggestion
use C4::Branch; # GetBranches
use C4::Members;
+use Koha::Number::Price;
+use Koha::Acquisition::Order;
+use Koha::Acquisition::Bookseller;
+
my $input = new CGI;
my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({
- template_name => "acqui/addorderiso2709.tmpl",
+ template_name => "acqui/addorderiso2709.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
my $cgiparams = $input->Vars;
my $op = $cgiparams->{'op'} || '';
my $booksellerid = $input->param('booksellerid');
-my $bookseller = GetBookSellerFromId($booksellerid);
+my $allmatch = $input->param('allmatch');
+my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
my $data;
$template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl",
#display batches
import_batches_list($template);
#
-# 2nd step = display the content of the choosen file
+# 2nd step = display the content of the chosen file
#
} elsif ($op eq "batch_details"){
#display lines inside the selected batch
$template->param("batch_details" => 1,
"basketno" => $cgiparams->{'basketno'},
loop_currencies => \@loop_currency,
+ "allmatch" => $allmatch,
);
import_biblios_list($template, $cgiparams->{'import_batch_id'});
if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
# 3rd step = import the records
#
} elsif ( $op eq 'import_records' ) {
- my $num=FormatNumber();
#import selected lines
$template->param('basketno' => $cgiparams->{'basketno'});
# Budget_id is mandatory for adding an order, we just add a default, the user needs to modify this aftewards
# retrieve the file you want to import
my $import_batch_id = $cgiparams->{'import_batch_id'};
my $biblios = GetImportRecordsRange($import_batch_id);
+ my $duplinbatch;
+ my $imported = 0;
my @import_record_id_selected = $input->param("import_record_id");
my @quantities = $input->param('quantity');
my @prices = $input->param('price');
# 1st insert the biblio, or find it through matcher
unless ( $biblionumber ) {
+ $duplinbatch=$import_batch_id and next if FindDuplicate($marcrecord);
# add the biblio
my $bibitemnum;
# in France, the cents separator is the , but sometimes, ppl use a .
# in this case, the price will be x100 when unformatted ! Replace the . by a , to get a proper price calculation
$price =~ s/\./,/ if C4::Context->preference("CurrencyFormat") eq "FR";
- $price = $num->unformat_number($price);
+ $price = Koha::Number::Price->new($price)->unformat;
$orderinfo{gstrate} = $bookseller->{gstrate};
my $c = $c_discount ? $c_discount : $bookseller->{discount} / 100;
if ( $bookseller->{listincgst} ) {
# remove uncertainprice flag if we have found a price in the MARC record
$orderinfo{uncertainprice} = 0 if $orderinfo{listprice};
- my ( $basketno, $ordernumber ) = NewOrder( \%orderinfo );
+ my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert;
# 4th, add items if applicable
# parse the item sent by the form, and create an item just for the import_record_id we are dealing with
push @{ $item->{field_values} }, $field_values[0];
push @{ $item->{ind_tag} }, $ind_tag[0];
push @{ $item->{indicator} }, $indicator[0];
- my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@ind_tag, \@indicator );
+ my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@indicator, \@ind_tag );
my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' );
for (my $qtyloop=1;$qtyloop <= $c_quantity;$qtyloop++) {
my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber );
- NewOrderItem( $itemnumber, $ordernumber );
+ $order->add_item( $itemnumber );
}
} else {
SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' );
}
+ $imported++;
}
# go to basket page
- print $input->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=".$cgiparams->{'basketno'});
+ if ( $imported ) {
+ print $input->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=".$cgiparams->{'basketno'}."&duplinbatch=$duplinbatch");
+ } else {
+ print $input->redirect("/cgi-bin/koha/acqui/addorderiso2709.pl?import_batch_id=$import_batch_id&basketno=".$cgiparams->{'basketno'}."&booksellerid=$booksellerid&allmatch=1");
+ }
exit;
}
my @list = ();
foreach my $batch (@$batches) {
- if ( $batch->{'import_status'} =~ /^staged$|^reverted$/ ) {
+ if ( $batch->{'import_status'} =~ /^staged$|^reverted$/ && $batch->{'record_type'} eq 'biblio') {
# check if there is at least 1 line still staged
- my $stagedList=GetImportRecordsRange($batch->{'import_batch_id'}, undef, undef, $batch->{import_status}, { order_by_direction => 'ASC' });
+ my $stagedList=GetImportRecordsRange($batch->{'import_batch_id'}, undef, 1, $batch->{import_status}, { order_by_direction => 'ASC' });
if (scalar @$stagedList) {
push @list, {
import_batch_id => $batch->{'import_batch_id'},