Bug 3638 : Captured Holds may need to generate a transfer
[koha.git] / C4 / ImportBatch.pm
index f8b5d54..8d4a488 100644 (file)
@@ -13,9 +13,9 @@ package C4::ImportBatch;
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
 # 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., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# 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 strict;
 use warnings;
 
 use strict;
 use warnings;
@@ -35,10 +35,13 @@ BEGIN {
        @ISA    = qw(Exporter);
        @EXPORT = qw(
     GetZ3950BatchId
        @ISA    = qw(Exporter);
        @EXPORT = qw(
     GetZ3950BatchId
+    GetWebserviceBatchId
     GetImportRecordMarc
     GetImportRecordMarc
+    GetImportRecordMarcXML
     AddImportBatch
     GetImportBatch
     AddBiblioToBatch
     AddImportBatch
     GetImportBatch
     AddBiblioToBatch
+    AddItemsToImportBiblio
     ModBiblioInBatch
 
     BatchStageMarcRecords
     ModBiblioInBatch
 
     BatchStageMarcRecords
@@ -48,6 +51,7 @@ BEGIN {
     CleanBatch
 
     GetAllImportBatches
     CleanBatch
 
     GetAllImportBatches
+    GetStagedWebserviceBatches
     GetImportBatchRangeDesc
     GetNumberOfNonZ3950ImportBatches
     GetImportBibliosRange
     GetImportBatchRangeDesc
     GetNumberOfNonZ3950ImportBatches
     GetImportBibliosRange
@@ -78,21 +82,13 @@ C4::ImportBatch - manage batches of imported MARC records
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
-=over 4
-
 use C4::ImportBatch;
 
 use C4::ImportBatch;
 
-=back
-
 =head1 FUNCTIONS
 
 =head2 GetZ3950BatchId
 
 =head1 FUNCTIONS
 
 =head2 GetZ3950BatchId
 
-=over 4
-
-my $batchid = GetZ3950BatchId($z3950server);
-
-=back
+  my $batchid = GetZ3950BatchId($z3950server);
 
 Retrieves the ID of the import batch for the Z39.50
 reservoir for the given target.  If necessary,
 
 Retrieves the ID of the import batch for the Z39.50
 reservoir for the given target.  If necessary,
@@ -113,19 +109,54 @@ sub GetZ3950BatchId {
     if (defined $rowref) {
         return $rowref->[0];
     } else {
     if (defined $rowref) {
         return $rowref->[0];
     } else {
-        my $batch_id = AddImportBatch('create_new', 'staged', 'z3950', $z3950server, '');
+        my $batch_id = AddImportBatch( {
+                overlay_action => 'create_new',
+                import_status => 'staged',
+                batch_type => 'z3950',
+                file_name => $z3950server,
+            } );
         return $batch_id;
     }
     
 }
 
         return $batch_id;
     }
     
 }
 
-=head2 GetImportRecordMarc
+=head2 GetWebserviceBatchId
+
+  my $batchid = GetWebserviceBatchId();
 
 
-=over 4
+Retrieves the ID of the import batch for webservice.
+If necessary, creates the import batch.
+
+=cut
+
+my $WEBSERVICE_BASE_QRY = <<EOQ;
+SELECT import_batch_id FROM import_batches
+WHERE  batch_type = 'webservice'
+AND    import_status = 'staged'
+EOQ
+sub GetWebserviceBatchId {
+    my ($params) = @_;
+
+    my $dbh = C4::Context->dbh;
+    my $sql = $WEBSERVICE_BASE_QRY;
+    my @args;
+    foreach my $field (qw(matcher_id overlay_action nomatch_action item_action)) {
+        if (my $val = $params->{$field}) {
+            $sql .= " AND $field = ?";
+            push @args, $val;
+        }
+    }
+    my $id = $dbh->selectrow_array($sql, undef, @args);
+    return $id if $id;
+
+    $params->{batch_type} = 'webservice';
+    $params->{import_status} = 'staged';
+    return AddImportBatch($params);
+}
 
 
-my ($marcblob, $encoding) = GetImportRecordMarc($import_record_id);
+=head2 GetImportRecordMarc
 
 
-=back
+  my ($marcblob, $encoding) = GetImportRecordMarc($import_record_id);
 
 =cut
 
 
 =cut
 
@@ -141,38 +172,53 @@ sub GetImportRecordMarc {
 
 }
 
 
 }
 
-=head2 AddImportBatch
-
-=over 4
-
-my $batch_id = AddImportBatch($overlay_action, $import_status, $type, $file_name, $comments);
+=head2 GetImportRecordMarcXML
 
 
-=back
+  my $marcxml = GetImportRecordMarcXML($import_record_id);
 
 =cut
 
 
 =cut
 
-sub AddImportBatch {
-    my ($overlay_action, $import_status, $type, $file_name, $comments) = @_;
+sub GetImportRecordMarcXML {
+    my ($import_record_id) = @_;
 
     my $dbh = C4::Context->dbh;
 
     my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare("INSERT INTO import_batches (overlay_action, import_status, batch_type,
-                                                         file_name, comments)
-                                    VALUES (?, ?, ?, ?, ?)");
-    $sth->execute($overlay_action, $import_status, $type, $file_name, $comments);
-    my $batch_id = $dbh->{'mysql_insertid'};
+    my $sth = $dbh->prepare("SELECT marcxml FROM import_records WHERE import_record_id = ?");
+    $sth->execute($import_record_id);
+    my ($marcxml) = $sth->fetchrow();
     $sth->finish();
     $sth->finish();
-
-    return $batch_id;
+    return $marcxml;
 
 }
 
 
 }
 
-=head2 GetImportBatch 
+=head2 AddImportBatch
 
 
-=over 4
+  my $batch_id = AddImportBatch($params_hash);
 
 
-my $row = GetImportBatch($batch_id);
+=cut
 
 
-=back
+sub AddImportBatch {
+    my ($params) = @_;
+
+    my (@fields, @vals);
+    foreach (qw( matcher_id template_id branchcode
+                 overlay_action nomatch_action item_action
+                 import_status batch_type file_name comments )) {
+        if (exists $params->{$_}) {
+            push @fields, $_;
+            push @vals, $params->{$_};
+        }
+    }
+    my $dbh = C4::Context->dbh;
+    $dbh->do("INSERT INTO import_batches (".join( ',', @fields).")
+                                  VALUES (".join( ',', map '?', @fields).")",
+             undef,
+             @vals);
+    return $dbh->{'mysql_insertid'};
+}
+
+=head2 GetImportBatch 
+
+  my $row = GetImportBatch($batch_id);
 
 Retrieve a hashref of an import_batches row.
 
 
 Retrieve a hashref of an import_batches row.
 
@@ -193,11 +239,8 @@ sub GetImportBatch {
 
 =head2 AddBiblioToBatch 
 
 
 =head2 AddBiblioToBatch 
 
-=over 4
-
-my $import_record_id = AddBiblioToBatch($batch_id, $record_sequence, $marc_record, $encoding, $z3950random, $update_counts);
-
-=back
+  my $import_record_id = AddBiblioToBatch($batch_id, $record_sequence, 
+                $marc_record, $encoding, $z3950random, $update_counts);
 
 =cut
 
 
 =cut
 
@@ -217,11 +260,7 @@ sub AddBiblioToBatch {
 
 =head2 ModBiblioInBatch
 
 
 =head2 ModBiblioInBatch
 
-=over 4
-
-ModBiblioInBatch($import_record_id, $marc_record);
-
-=back
+  ModBiblioInBatch($import_record_id, $marc_record);
 
 =cut
 
 
 =cut
 
@@ -235,20 +274,16 @@ sub ModBiblioInBatch {
 
 =head2 BatchStageMarcRecords
 
 
 =head2 BatchStageMarcRecords
 
-=over 4
-
-($batch_id, $num_records, $num_items, @invalid_records) = 
-    BatchStageMarcRecords($marc_flavor, $marc_records, $file_name, 
+  ($batch_id, $num_records, $num_items, @invalid_records) = 
+    BatchStageMarcRecords($encoding, $marc_records, $file_name, 
                           $comments, $branch_code, $parse_items,
                           $leave_as_staging, 
                           $progress_interval, $progress_callback);
 
                           $comments, $branch_code, $parse_items,
                           $leave_as_staging, 
                           $progress_interval, $progress_callback);
 
-=back
-
 =cut
 
 sub  BatchStageMarcRecords {
 =cut
 
 sub  BatchStageMarcRecords {
-    my $marc_flavor = shift;
+    my $encoding = shift;
     my $marc_records = shift;
     my $file_name = shift;
     my $comments = shift;
     my $marc_records = shift;
     my $file_name = shift;
     my $comments = shift;
@@ -267,7 +302,13 @@ sub  BatchStageMarcRecords {
         $progress_interval = 0 unless 'CODE' eq ref $progress_callback;
     } 
     
         $progress_interval = 0 unless 'CODE' eq ref $progress_callback;
     } 
     
-    my $batch_id = AddImportBatch('create_new', 'staging', 'batch', $file_name, $comments);
+    my $batch_id = AddImportBatch( {
+            overlay_action => 'create_new',
+            import_status => 'staging',
+            batch_type => 'batch',
+            file_name => $file_name,
+            comments => $comments,
+        } );
     if ($parse_items) {
         SetImportBatchItemAction($batch_id, 'always_add');
     } else {
     if ($parse_items) {
         SetImportBatchItemAction($batch_id, 'always_add');
     } else {
@@ -288,13 +329,16 @@ sub  BatchStageMarcRecords {
             &$progress_callback($rec_num);
         }
         my ($marc_record, $charset_guessed, $char_errors) =
             &$progress_callback($rec_num);
         }
         my ($marc_record, $charset_guessed, $char_errors) =
-            MarcToUTF8Record($marc_blob, C4::Context->preference("marcflavour"));
+            MarcToUTF8Record($marc_blob, C4::Context->preference("marcflavour"), $encoding);
+
+        $encoding = $charset_guessed unless $encoding;
+
         my $import_record_id;
         if (scalar($marc_record->fields()) == 0) {
             push @invalid_records, $marc_blob;
         } else {
             $num_valid++;
         my $import_record_id;
         if (scalar($marc_record->fields()) == 0) {
             push @invalid_records, $marc_blob;
         } else {
             $num_valid++;
-            $import_record_id = AddBiblioToBatch($batch_id, $rec_num, $marc_record, $marc_flavor, int(rand(99999)), 0);
+            $import_record_id = AddBiblioToBatch($batch_id, $rec_num, $marc_record, $encoding, int(rand(99999)), 0);
             if ($parse_items) {
                 my @import_items_ids = AddItemsToImportBiblio($batch_id, $import_record_id, $marc_record, 0);
                 $num_items += scalar(@import_items_ids);
             if ($parse_items) {
                 my @import_items_ids = AddItemsToImportBiblio($batch_id, $import_record_id, $marc_record, 0);
                 $num_items += scalar(@import_items_ids);
@@ -311,11 +355,8 @@ sub  BatchStageMarcRecords {
 
 =head2 AddItemsToImportBiblio
 
 
 =head2 AddItemsToImportBiblio
 
-=over 4
-
-my @import_items_ids = AddItemsToImportBiblio($batch_id, $import_record_id, $marc_record, $update_counts);
-
-=back
+  my @import_items_ids = AddItemsToImportBiblio($batch_id, 
+                $import_record_id, $marc_record, $update_counts);
 
 =cut
 
 
 =cut
 
@@ -353,11 +394,8 @@ sub AddItemsToImportBiblio {
 
 =head2 BatchFindBibDuplicates
 
 
 =head2 BatchFindBibDuplicates
 
-=over 4
-
-my $num_with_matches = BatchFindBibDuplicates($batch_id, $matcher, $max_matches, $progress_interval, $progress_callback);
-
-=back
+  my $num_with_matches = BatchFindBibDuplicates($batch_id, $matcher, 
+             $max_matches, $progress_interval, $progress_callback);
 
 Goes through the records loaded in the batch and attempts to 
 find duplicates for each one.  Sets the matching status 
 
 Goes through the records loaded in the batch and attempts to 
 find duplicates for each one.  Sets the matching status 
@@ -424,17 +462,15 @@ sub BatchFindBibDuplicates {
 
 =head2 BatchCommitBibRecords
 
 
 =head2 BatchCommitBibRecords
 
-=over 4
-
-my ($num_added, $num_updated, $num_items_added, $num_items_errored, $num_ignored) = 
-    BatchCommitBibRecords($batch_id, $progress_interval, $progress_callback);
-
-=back
+  my ($num_added, $num_updated, $num_items_added, $num_items_errored, 
+      $num_ignored) = BatchCommitBibRecords($batch_id, $framework,
+                      $progress_interval, $progress_callback);
 
 =cut
 
 sub BatchCommitBibRecords {
     my $batch_id = shift;
 
 =cut
 
 sub BatchCommitBibRecords {
     my $batch_id = shift;
+    my $framework = shift;
 
     # optional callback to monitor status 
     # of job
 
     # optional callback to monitor status 
     # of job
@@ -490,7 +526,7 @@ sub BatchCommitBibRecords {
 
         if ($bib_result eq 'create_new') {
             $num_added++;
 
         if ($bib_result eq 'create_new') {
             $num_added++;
-            my ($biblionumber, $biblioitemnumber) = AddBiblio($marc_record, '');
+            my ($biblionumber, $biblioitemnumber) = AddBiblio($marc_record, $framework);
             my $sth = $dbh->prepare_cached("UPDATE import_biblios SET matched_biblionumber = ? WHERE import_record_id = ?");
             $sth->execute($biblionumber, $rowref->{'import_record_id'});
             $sth->finish();
             my $sth = $dbh->prepare_cached("UPDATE import_biblios SET matched_biblionumber = ? WHERE import_record_id = ?");
             $sth->execute($biblionumber, $rowref->{'import_record_id'});
             $sth->finish();
@@ -550,11 +586,8 @@ sub BatchCommitBibRecords {
 
 =head2 BatchCommitItems
 
 
 =head2 BatchCommitItems
 
-=over 4
-
-($num_items_added, $num_items_errored) = BatchCommitItems($import_record_id, $biblionumber);
-
-=back
+  ($num_items_added, $num_items_errored) = 
+         BatchCommitItems($import_record_id, $biblionumber);
 
 =cut
 
 
 =cut
 
@@ -601,11 +634,8 @@ sub BatchCommitItems {
 
 =head2 BatchRevertBibRecords
 
 
 =head2 BatchRevertBibRecords
 
-=over 4
-
-my ($num_deleted, $num_errors, $num_reverted, $num_items_deleted, $num_ignored) = BatchRevertBibRecords($batch_id);
-
-=back
+  my ($num_deleted, $num_errors, $num_reverted, $num_items_deleted, 
+      $num_ignored) = BatchRevertBibRecords($batch_id);
 
 =cut
 
 
 =cut
 
@@ -668,11 +698,7 @@ sub BatchRevertBibRecords {
 
 =head2 BatchRevertItems
 
 
 =head2 BatchRevertItems
 
-=over 4
-
-my $num_items_deleted = BatchRevertItems($import_record_id, $biblionumber);
-
-=back
+  my $num_items_deleted = BatchRevertItems($import_record_id, $biblionumber);
 
 =cut
 
 
 =cut
 
@@ -703,11 +729,7 @@ sub BatchRevertItems {
 
 =head2 CleanBatch
 
 
 =head2 CleanBatch
 
-=over 4
-
-CleanBatch($batch_id)
-
-=back
+  CleanBatch($batch_id)
 
 Deletes all staged records from the import batch
 and sets the status of the batch to 'cleaned'.  Note
 
 Deletes all staged records from the import batch
 and sets the status of the batch to 'cleaned'.  Note
@@ -726,11 +748,7 @@ sub CleanBatch {
 
 =head2 GetAllImportBatches
 
 
 =head2 GetAllImportBatches
 
-=over 4
-
-my $results = GetAllImportBatches();
-
-=back
+  my $results = GetAllImportBatches();
 
 Returns a references to an array of hash references corresponding
 to all import_batches rows (of batch_type 'batch'), sorted in 
 
 Returns a references to an array of hash references corresponding
 to all import_batches rows (of batch_type 'batch'), sorted in 
@@ -741,7 +759,7 @@ ascending order by import_batch_id.
 sub  GetAllImportBatches {
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare_cached("SELECT * FROM import_batches
 sub  GetAllImportBatches {
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare_cached("SELECT * FROM import_batches
-                                    WHERE batch_type = 'batch'
+                                    WHERE batch_type IN ('batch', 'webservice')
                                     ORDER BY import_batch_id ASC");
 
     my $results = [];
                                     ORDER BY import_batch_id ASC");
 
     my $results = [];
@@ -753,13 +771,28 @@ sub  GetAllImportBatches {
     return $results;
 }
 
     return $results;
 }
 
-=head2 GetImportBatchRangeDesc
+=head2 GetStagedWebserviceBatches
+
+  my $batch_ids = GetStagedWebserviceBatches();
+
+Returns a references to an array of batch id's
+of batch_type 'webservice' that are not imported
+
+=cut
 
 
-=over 4
+my $PENDING_WEBSERVICE_BATCHES_QRY = <<EOQ;
+SELECT import_batch_id FROM import_batches
+WHERE batch_type = 'webservice'
+AND import_status = 'staged'
+EOQ
+sub  GetStagedWebserviceBatches {
+    my $dbh = C4::Context->dbh;
+    return $dbh->selectcol_arrayref($PENDING_WEBSERVICE_BATCHES_QRY);
+}
 
 
-my $results = GetImportBatchRangeDesc($offset, $results_per_group);
+=head2 GetImportBatchRangeDesc
 
 
-=back
+  my $results = GetImportBatchRangeDesc($offset, $results_per_group);
 
 Returns a reference to an array of hash references corresponding to
 import_batches rows (sorted in descending order by import_batch_id)
 
 Returns a reference to an array of hash references corresponding to
 import_batches rows (sorted in descending order by import_batch_id)
@@ -772,14 +805,14 @@ sub GetImportBatchRangeDesc {
 
     my $dbh = C4::Context->dbh;
     my $query = "SELECT * FROM import_batches
 
     my $dbh = C4::Context->dbh;
     my $query = "SELECT * FROM import_batches
-                                    WHERE batch_type = 'batch'
+                                    WHERE batch_type IN ('batch', 'webservice')
                                     ORDER BY import_batch_id DESC";
     my @params;
                                     ORDER BY import_batch_id DESC";
     my @params;
+    if ($results_per_group){
+        $query .= " LIMIT ?";
+        push(@params, $results_per_group);
+    }
     if ($offset){
     if ($offset){
-        if ($results_per_group){
-            $query .= " LIMIT ?";
-            push(@params, $results_per_group);
-        }
         $query .= " OFFSET ?";
         push(@params, $offset);
     }
         $query .= " OFFSET ?";
         push(@params, $offset);
     }
@@ -792,6 +825,8 @@ sub GetImportBatchRangeDesc {
 
 =head2 GetItemNumbersFromImportBatch
 
 
 =head2 GetItemNumbersFromImportBatch
 
+  my @itemsnos = GetItemNumbersFromImportBatch($batch_id);
+
 =cut
 
 sub GetItemNumbersFromImportBatch {
 =cut
 
 sub GetItemNumbersFromImportBatch {
@@ -808,17 +843,13 @@ sub GetItemNumbersFromImportBatch {
 
 =head2 GetNumberOfImportBatches 
 
 
 =head2 GetNumberOfImportBatches 
 
-=over 4
-
-my $count = GetNumberOfImportBatches();
-
-=back
+  my $count = GetNumberOfImportBatches();
 
 =cut
 
 sub GetNumberOfNonZ3950ImportBatches {
     my $dbh = C4::Context->dbh;
 
 =cut
 
 sub GetNumberOfNonZ3950ImportBatches {
     my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare("SELECT COUNT(*) FROM import_batches WHERE batch_type='batch'");
+    my $sth = $dbh->prepare("SELECT COUNT(*) FROM import_batches WHERE batch_type != 'z3950'");
     $sth->execute();
     my ($count) = $sth->fetchrow_array();
     $sth->finish();
     $sth->execute();
     my ($count) = $sth->fetchrow_array();
     $sth->finish();
@@ -827,11 +858,7 @@ sub GetNumberOfNonZ3950ImportBatches {
 
 =head2 GetImportBibliosRange
 
 
 =head2 GetImportBibliosRange
 
-=over 4
-
-my $results = GetImportBibliosRange($batch_id, $offset, $results_per_group);
-
-=back
+  my $results = GetImportBibliosRange($batch_id, $offset, $results_per_group);
 
 Returns a reference to an array of hash references corresponding to
 import_biblios/import_records rows for a given batch
 
 Returns a reference to an array of hash references corresponding to
 import_biblios/import_records rows for a given batch
@@ -856,11 +883,11 @@ sub GetImportBibliosRange {
     }
     $query.=" ORDER BY import_record_id";
 
     }
     $query.=" ORDER BY import_record_id";
 
+    if($results_per_group){
+        $query .= " LIMIT ?";
+        push(@params, $results_per_group);
+    }
     if($offset){
     if($offset){
-        if($results_per_group){
-            $query .= " LIMIT ?";
-            push(@params, $results_per_group);
-        }
         $query .= " OFFSET ?";
         push(@params, $offset);
     }
         $query .= " OFFSET ?";
         push(@params, $offset);
     }
@@ -874,11 +901,7 @@ sub GetImportBibliosRange {
 
 =head2 GetBestRecordMatch
 
 
 =head2 GetBestRecordMatch
 
-=over 4
-
-my $record_id = GetBestRecordMatch($import_record_id);
-
-=back
+  my $record_id = GetBestRecordMatch($import_record_id);
 
 =cut
 
 
 =cut
 
@@ -898,11 +921,7 @@ sub GetBestRecordMatch {
 
 =head2 GetImportBatchStatus
 
 
 =head2 GetImportBatchStatus
 
-=over 4
-
-my $status = GetImportBatchStatus($batch_id);
-
-=back
+  my $status = GetImportBatchStatus($batch_id);
 
 =cut
 
 
 =cut
 
@@ -920,11 +939,7 @@ sub GetImportBatchStatus {
 
 =head2 SetImportBatchStatus
 
 
 =head2 SetImportBatchStatus
 
-=over 4
-
-SetImportBatchStatus($batch_id, $new_status);
-
-=back
+  SetImportBatchStatus($batch_id, $new_status);
 
 =cut
 
 
 =cut
 
@@ -940,11 +955,7 @@ sub SetImportBatchStatus {
 
 =head2 GetImportBatchOverlayAction
 
 
 =head2 GetImportBatchOverlayAction
 
-=over 4
-
-my $overlay_action = GetImportBatchOverlayAction($batch_id);
-
-=back
+  my $overlay_action = GetImportBatchOverlayAction($batch_id);
 
 =cut
 
 
 =cut
 
@@ -963,11 +974,7 @@ sub GetImportBatchOverlayAction {
 
 =head2 SetImportBatchOverlayAction
 
 
 =head2 SetImportBatchOverlayAction
 
-=over 4
-
-SetImportBatchOverlayAction($batch_id, $new_overlay_action);
-
-=back
+  SetImportBatchOverlayAction($batch_id, $new_overlay_action);
 
 =cut
 
 
 =cut
 
@@ -983,11 +990,7 @@ sub SetImportBatchOverlayAction {
 
 =head2 GetImportBatchNoMatchAction
 
 
 =head2 GetImportBatchNoMatchAction
 
-=over 4
-
-my $nomatch_action = GetImportBatchNoMatchAction($batch_id);
-
-=back
+  my $nomatch_action = GetImportBatchNoMatchAction($batch_id);
 
 =cut
 
 
 =cut
 
@@ -1006,11 +1009,7 @@ sub GetImportBatchNoMatchAction {
 
 =head2 SetImportBatchNoMatchAction
 
 
 =head2 SetImportBatchNoMatchAction
 
-=over 4
-
-SetImportBatchNoMatchAction($batch_id, $new_nomatch_action);
-
-=back
+  SetImportBatchNoMatchAction($batch_id, $new_nomatch_action);
 
 =cut
 
 
 =cut
 
@@ -1026,11 +1025,7 @@ sub SetImportBatchNoMatchAction {
 
 =head2 GetImportBatchItemAction
 
 
 =head2 GetImportBatchItemAction
 
-=over 4
-
-my $item_action = GetImportBatchItemAction($batch_id);
-
-=back
+  my $item_action = GetImportBatchItemAction($batch_id);
 
 =cut
 
 
 =cut
 
@@ -1049,11 +1044,7 @@ sub GetImportBatchItemAction {
 
 =head2 SetImportBatchItemAction
 
 
 =head2 SetImportBatchItemAction
 
-=over 4
-
-SetImportBatchItemAction($batch_id, $new_item_action);
-
-=back
+  SetImportBatchItemAction($batch_id, $new_item_action);
 
 =cut
 
 
 =cut
 
@@ -1069,11 +1060,7 @@ sub SetImportBatchItemAction {
 
 =head2 GetImportBatchMatcher
 
 
 =head2 GetImportBatchMatcher
 
-=over 4
-
-my $matcher_id = GetImportBatchMatcher($batch_id);
-
-=back
+  my $matcher_id = GetImportBatchMatcher($batch_id);
 
 =cut
 
 
 =cut
 
@@ -1092,11 +1079,7 @@ sub GetImportBatchMatcher {
 
 =head2 SetImportBatchMatcher
 
 
 =head2 SetImportBatchMatcher
 
-=over 4
-
-SetImportBatchMatcher($batch_id, $new_matcher_id);
-
-=back
+  SetImportBatchMatcher($batch_id, $new_matcher_id);
 
 =cut
 
 
 =cut
 
@@ -1112,11 +1095,7 @@ sub SetImportBatchMatcher {
 
 =head2 GetImportRecordOverlayStatus
 
 
 =head2 GetImportRecordOverlayStatus
 
-=over 4
-
-my $overlay_status = GetImportRecordOverlayStatus($import_record_id);
-
-=back
+  my $overlay_status = GetImportRecordOverlayStatus($import_record_id);
 
 =cut
 
 
 =cut
 
@@ -1135,11 +1114,7 @@ sub GetImportRecordOverlayStatus {
 
 =head2 SetImportRecordOverlayStatus
 
 
 =head2 SetImportRecordOverlayStatus
 
-=over 4
-
-SetImportRecordOverlayStatus($import_record_id, $new_overlay_status);
-
-=back
+  SetImportRecordOverlayStatus($import_record_id, $new_overlay_status);
 
 =cut
 
 
 =cut
 
@@ -1155,11 +1130,7 @@ sub SetImportRecordOverlayStatus {
 
 =head2 GetImportRecordStatus
 
 
 =head2 GetImportRecordStatus
 
-=over 4
-
-my $overlay_status = GetImportRecordStatus($import_record_id);
-
-=back
+  my $overlay_status = GetImportRecordStatus($import_record_id);
 
 =cut
 
 
 =cut
 
@@ -1178,11 +1149,7 @@ sub GetImportRecordStatus {
 
 =head2 SetImportRecordStatus
 
 
 =head2 SetImportRecordStatus
 
-=over 4
-
-SetImportRecordStatus($import_record_id, $new_overlay_status);
-
-=back
+  SetImportRecordStatus($import_record_id, $new_overlay_status);
 
 =cut
 
 
 =cut
 
@@ -1198,11 +1165,7 @@ sub SetImportRecordStatus {
 
 =head2 GetImportRecordMatches
 
 
 =head2 GetImportRecordMatches
 
-=over 4
-
-my $results = GetImportRecordMatches($import_record_id, $best_only);
-
-=back
+  my $results = GetImportRecordMatches($import_record_id, $best_only);
 
 =cut
 
 
 =cut
 
@@ -1234,11 +1197,7 @@ sub GetImportRecordMatches {
 
 =head2 SetImportRecordMatches
 
 
 =head2 SetImportRecordMatches
 
-=over 4
-
-SetImportRecordMatches($import_record_id, @matches);
-
-=back
+  SetImportRecordMatches($import_record_id, @matches);
 
 =cut
 
 
 =cut
 
@@ -1281,7 +1240,7 @@ sub _update_import_record_marc {
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare("UPDATE import_records SET marc = ?, marcxml = ?
                              WHERE  import_record_id = ?");
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare("UPDATE import_records SET marc = ?, marcxml = ?
                              WHERE  import_record_id = ?");
-    $sth->execute($marc_record->as_usmarc(), $marc_record->as_xml(), $import_record_id);
+    $sth->execute($marc_record->as_usmarc(), $marc_record->as_xml(C4::Context->preference('marcflavour')), $import_record_id);
     $sth->finish();
 }
 
     $sth->finish();
 }
 
@@ -1327,26 +1286,22 @@ sub _update_batch_record_counts {
     my ($batch_id) = @_;
 
     my $dbh = C4::Context->dbh;
     my ($batch_id) = @_;
 
     my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare_cached("UPDATE import_batches SET num_biblios = (
-                                    SELECT COUNT(*)
-                                    FROM import_records
-                                    WHERE import_batch_id = import_batches.import_batch_id
-                                    AND record_type = 'biblio')
+    my $sth = $dbh->prepare_cached("UPDATE import_batches SET
+                                        num_biblios = (
+                                            SELECT COUNT(*)
+                                            FROM import_records
+                                            WHERE import_batch_id = import_batches.import_batch_id
+                                            AND record_type = 'biblio'),
+                                        num_items = (
+                                            SELECT COUNT(*)
+                                            FROM import_records
+                                            JOIN import_items USING (import_record_id)
+                                            WHERE import_batch_id = import_batches.import_batch_id
+                                            AND record_type = 'biblio')
                                     WHERE import_batch_id = ?");
     $sth->bind_param(1, $batch_id);
     $sth->execute();
     $sth->finish();
                                     WHERE import_batch_id = ?");
     $sth->bind_param(1, $batch_id);
     $sth->execute();
     $sth->finish();
-    $sth = $dbh->prepare_cached("UPDATE import_batches SET num_items = (
-                                    SELECT COUNT(*)
-                                    FROM import_records
-                                    JOIN import_items USING (import_record_id)
-                                    WHERE import_batch_id = import_batches.import_batch_id
-                                    AND record_type = 'biblio')
-                                    WHERE import_batch_id = ?");
-    $sth->bind_param(1, $batch_id);
-    $sth->execute();
-    $sth->finish();
-
 }
 
 sub _get_commit_action {
 }
 
 sub _get_commit_action {
@@ -1394,7 +1349,7 @@ __END__
 
 =head1 AUTHOR
 
 
 =head1 AUTHOR
 
-Koha Development Team <info@koha.org>
+Koha Development Team <http://koha-community.org/>
 
 Galen Charlton <galen.charlton@liblime.com>
 
 
 Galen Charlton <galen.charlton@liblime.com>