Bug 33168: Prevent debhelper from renaming history.txt to changelog
[koha-ffzg.git] / acqui / addorderiso2709.pl
index 712c63f..b18e688 100755 (executable)
@@ -30,7 +30,7 @@ use Encode;
 use C4::Context;
 use C4::Auth qw( get_template_and_user );
 use C4::Output qw( output_html_with_http_headers );
-use C4::ImportBatch qw( GetImportRecordsRange GetImportRecordMarc GetImportRecordMatches SetImportRecordStatus SetMatchedBiblionumber SetImportBatchStatus GetImportBatch GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches GetImportBatchOverlayAction GetImportBatchNoMatchAction GetImportBatchItemAction );
+use C4::ImportBatch qw( SetImportBatchStatus GetImportBatch GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches GetImportBatchOverlayAction GetImportBatchNoMatchAction GetImportBatchItemAction );
 use C4::Matcher;
 use C4::Search qw( FindDuplicate );
 use C4::Biblio qw(
@@ -157,8 +157,9 @@ if ($op eq ""){
         # Check if this import_record_id was selected
         next if not grep { $_ eq $import_record->import_record_id } @import_record_id_selected;
         my $marcrecord = $import_record->get_marc_record || die "couldn't translate marc information";
-        my $match = GetImportRecordMatches( $import_record->import_record_id, 1 );
-        my $biblionumber=$#$match > -1?$match->[0]->{'biblionumber'}:0;
+        my $matches = $import_record->get_import_record_matches({ chosen => 1 });
+        my $match = $matches->count ? $matches->next : undef;
+        my $biblionumber = $match ? $match->candidate_match_id : 0;
         my $c_quantity = shift( @quantities ) || GetMarcQuantity($marcrecord, C4::Context->preference('marcflavour') ) || 1;
         my $c_budget_id = shift( @budgets_id ) || $input->param('all_budget_id') || $budget_id;
         my $c_discount = shift ( @discount);
@@ -205,21 +206,21 @@ if ($op eq ""){
         $import_record->import_biblio->matched_biblionumber($biblionumber)->store;
 
         # Add items from MarcItemFieldsToOrder
-        my @homebranches = $input->multi_param('homebranch_' . $biblio_count);
+        my @homebranches = $input->multi_param('homebranch_' . $import_record->import_record_id);
         my $count = scalar @homebranches;
-        my @holdingbranches = $input->multi_param('holdingbranch_' . $biblio_count);
-        my @itypes = $input->multi_param('itype_' . $biblio_count);
-        my @nonpublic_notes = $input->multi_param('nonpublic_note_' . $biblio_count);
-        my @public_notes = $input->multi_param('public_note_' . $biblio_count);
-        my @locs = $input->multi_param('loc_' . $biblio_count);
-        my @ccodes = $input->multi_param('ccode_' . $biblio_count);
-        my @notforloans = $input->multi_param('notforloan_' . $biblio_count);
-        my @uris = $input->multi_param('uri_' . $biblio_count);
-        my @copynos = $input->multi_param('copyno_' . $biblio_count);
-        my @budget_codes = $input->multi_param('budget_code_' . $biblio_count);
-        my @itemprices = $input->multi_param('itemprice_' . $biblio_count);
-        my @replacementprices = $input->multi_param('replacementprice_' . $biblio_count);
-        my @itemcallnumbers = $input->multi_param('itemcallnumber_' . $biblio_count);
+        my @holdingbranches = $input->multi_param('holdingbranch_' . $import_record->import_record_id);
+        my @itypes = $input->multi_param('itype_' . $import_record->import_record_id);
+        my @nonpublic_notes = $input->multi_param('nonpublic_note_' . $import_record->import_record_id);
+        my @public_notes = $input->multi_param('public_note_' . $import_record->import_record_id);
+        my @locs = $input->multi_param('loc_' . $import_record->import_record_id);
+        my @ccodes = $input->multi_param('ccode_' . $import_record->import_record_id);
+        my @notforloans = $input->multi_param('notforloan_' . $import_record->import_record_id);
+        my @uris = $input->multi_param('uri_' . $import_record->import_record_id);
+        my @copynos = $input->multi_param('copyno_' . $import_record->import_record_id);
+        my @budget_codes = $input->multi_param('budget_code_' . $import_record->import_record_id);
+        my @itemprices = $input->multi_param('itemprice_' . $import_record->import_record_id);
+        my @replacementprices = $input->multi_param('replacementprice_' . $import_record->import_record_id);
+        my @itemcallnumbers = $input->multi_param('itemcallnumber_' . $import_record->import_record_id);
         my $itemcreation = 0;
 
         my @itemnumbers;
@@ -275,12 +276,10 @@ if ($op eq ""){
                         $price = Koha::Number::Price->new($price)->unformat;
                         $orderinfo{tax_rate_on_ordering} = $bookseller->tax_rate;
                         $orderinfo{tax_rate_on_receiving} = $bookseller->tax_rate;
-                        my $c = $c_discount ? $c_discount : $bookseller->discount;
-                        $orderinfo{discount} = $c;
-                        if ( $c ) {
-                            $orderinfo{ecost} = $price * ( 1 - $c / 100 );
-                            $orderinfo{rrp}   = $price;
-                        }
+                        my $order_discount = $c_discount ? $c_discount : $bookseller->discount;
+                        $orderinfo{discount} = $order_discount;
+                        $orderinfo{rrp} = $price;
+                        $orderinfo{ecost} = $order_discount ? $price * ( 1 - $order_discount / 100 ) : $price;
                         $orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate;
                         $orderinfo{unitprice} = $orderinfo{ecost};
                     } else {
@@ -291,9 +290,10 @@ if ($op eq ""){
                     # remove uncertainprice flag if we have found a price in the MARC record
                     $orderinfo{uncertainprice} = 0 if $orderinfo{listprice};
 
-                    my $order = Koha::Acquisition::Order->new( \%orderinfo )->store;
+                    my $order = Koha::Acquisition::Order->new( \%orderinfo );
                     $order->populate_with_prices_for_ordering();
                     $order->populate_with_prices_for_receiving();
+                    $order->store;
                     $order->add_item( $_ ) for @{ $budget_hash->{$budget_id}->{itemnumbers} };
                 }
             }
@@ -324,12 +324,10 @@ if ($op eq ""){
                 $c_price = Koha::Number::Price->new($c_price)->unformat;
                 $orderinfo{tax_rate_on_ordering} = $bookseller->tax_rate;
                 $orderinfo{tax_rate_on_receiving} = $bookseller->tax_rate;
-                my $c = $c_discount ? $c_discount : $bookseller->discount;
-                $orderinfo{discount} = $c;
-                if ( $c ) {
-                    $orderinfo{ecost} = $c_price * ( 1 - $c / 100 );
-                    $orderinfo{rrp}   = $c_price;
-                }
+                my $order_discount = $c_discount ? $c_discount : $bookseller->discount;
+                $orderinfo{discount} = $order_discount;
+                $orderinfo{rrp}   = $c_price;
+                $orderinfo{ecost} = $order_discount ? $c_price * ( 1 - $order_discount / 100 ) : $c_price;
                 $orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate;
                 $orderinfo{unitprice} = $orderinfo{ecost};
             } else {
@@ -417,8 +415,11 @@ sub import_batches_list {
     foreach my $batch (@$batches) {
         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, 1, $batch->{import_status}, { order_by_direction => 'ASC' });
-            if (scalar @$stagedList) {
+            my $import_records_count = Koha::Import::Records->search({
+                import_batch_id => $batch->{'import_batch_id'},
+                status          => $batch->{import_status}
+            })->count;
+            if ( $import_records_count ) {
                 push @list, {
                         import_batch_id => $batch->{'import_batch_id'},
                         num_records => $batch->{'num_records'},
@@ -472,7 +473,9 @@ sub import_biblios_list {
     while ( my $import_record = $import_records->next ) {
         my $item_id = 1;
         $biblio_count++;
-        my $match = GetImportRecordMatches($import_record->import_record_id, 1);
+        my $matches = $import_record->get_import_record_matches({ chosen => 1 });
+        my $match = $matches->count ? $matches->next : undef;
+        my $match_biblio = $match ? Koha::Biblios->find({ biblionumber => $match->candidate_match_id }) : undef;
         my %cellrecord = (
             import_record_id => $import_record->import_record_id,
             import_biblio => $import_record->import_biblio,
@@ -480,9 +483,9 @@ sub import_biblios_list {
             status => $import_record->status,
             record_sequence => $import_record->record_sequence,
             overlay_status => $import_record->overlay_status,
-            match_biblionumber => $#$match > -1 ? $match->[0]->{'biblionumber'} : 0,
-            match_citation     => $#$match > -1 ? $match->[0]->{'title'} || '' . ' ' . $match->[0]->{'author'} || '': '',
-            match_score => $#$match > -1 ? $match->[0]->{'score'} : 0,
+            match_biblionumber => $match ? $match->candidate_match_id : 0,
+            match_citation     => $match_biblio ? ($match_biblio->title || '') . ' ' .( $match_biblio->author || ''): '',
+            match_score => $match ? $match->score : 0,
         );
         my $marcrecord = $import_record->get_marc_record || die "couldn't translate marc information";