MT1883 : Serials enddate was not cleanly used
[koha-ffzg.git] / C4 / ImportBatch.pm
index a8bd2cb..8f259a3 100644 (file)
@@ -45,6 +45,7 @@ BEGIN {
     BatchFindBibDuplicates
     BatchCommitBibRecords
     BatchRevertBibRecords
+    CleanBatch
 
     GetAllImportBatches
     GetImportBatchRangeDesc
@@ -136,7 +137,7 @@ sub GetImportRecordMarc {
     $sth->execute($import_record_id);
     my ($marc, $encoding) = $sth->fetchrow();
     $sth->finish();
-    return $marc;
+    return $marc, $encoding;
 
 }
 
@@ -700,6 +701,29 @@ sub BatchRevertItems {
     return $num_items_deleted;
 }
 
+=head2 CleanBatch
+
+=over 4
+
+CleanBatch($batch_id)
+
+=back
+
+Deletes all staged records from the import batch
+and sets the status of the batch to 'cleaned'.  Note
+that deleting a stage record does *not* affect
+any record that has been committed to the database.
+
+=cut
+
+sub CleanBatch {
+    my $batch_id = shift;
+    return unless defined $batch_id;
+
+    C4::Context->dbh->do('DELETE FROM import_records WHERE import_batch_id = ?', {}, $batch_id);
+    SetImportBatchStatus($batch_id, 'cleaned');
+}
+
 =head2 GetAllImportBatches
 
 =over 4
@@ -747,18 +771,21 @@ sub GetImportBatchRangeDesc {
     my ($offset, $results_per_group) = @_;
 
     my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare_cached("SELECT * FROM import_batches
+    my $query = "SELECT * FROM import_batches
                                     WHERE batch_type = 'batch'
-                                    ORDER BY import_batch_id DESC
-                                    LIMIT ? OFFSET ?");
-    $sth->bind_param(1, $results_per_group);
-    $sth->bind_param(2, $offset);
-
-    my $results = [];
-    $sth->execute();
-    while (my $row = $sth->fetchrow_hashref) {
-        push @$results, $row;
+                                    ORDER BY import_batch_id DESC";
+    my @params;
+    if ($offset){
+        if ($results_per_group){
+            $query .= " LIMIT ?";
+            push(@params, $results_per_group);
+        }
+        $query .= " OFFSET ?";
+        push(@params, $offset);
     }
+    my $sth = $dbh->prepare_cached($query);
+    $sth->execute(@params);
+    my $results = $sth->fetchall_arrayref({});
     $sth->finish();
     return $results;
 }
@@ -770,7 +797,7 @@ sub GetImportBatchRangeDesc {
 sub GetItemNumbersFromImportBatch {
        my ($batch_id) = @_;
        my $dbh = C4::Context->dbh;
-       my $sth = $dbh->prepare("select itemnumber from import_batches,import_records,import_items where import_batches.import_batch_id=import_records.import_batch_id and import_records.import_record_id=import_items.import_record_id and import_batches.import_batch_id=?");
+       my $sth = $dbh->prepare("SELECT itemnumber FROM import_batches,import_records,import_items WHERE import_batches.import_batch_id=import_records.import_batch_id AND import_records.import_record_id=import_items.import_record_id AND import_batches.import_batch_id=?");
        $sth->execute($batch_id);
        my @items ;
        while ( my ($itm) = $sth->fetchrow_array ) {
@@ -813,23 +840,33 @@ starting at the given offset.
 =cut
 
 sub GetImportBibliosRange {
-    my ($batch_id, $offset, $results_per_group) = @_;
+    my ($batch_id, $offset, $results_per_group, $status) = @_;
 
     my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare_cached("SELECT title, author, isbn, issn, import_record_id, record_sequence,
-                                           matched_biblionumber, status, overlay_status
+    my $query = "SELECT title, author, isbn, issn, import_record_id, record_sequence,
+                                           status, overlay_status
                                     FROM   import_records
                                     JOIN   import_biblios USING (import_record_id)
-                                    WHERE  import_batch_id = ?
-                                    ORDER BY import_record_id LIMIT ? OFFSET ?");
-    $sth->bind_param(1, $batch_id);
-    $sth->bind_param(2, $results_per_group);
-    $sth->bind_param(3, $offset);
-    my $results = [];
-    $sth->execute();
-    while (my $row = $sth->fetchrow_hashref) {
-        push @$results, $row;
+                                    WHERE  import_batch_id = ?";
+    my @params;
+    push(@params, $batch_id);
+    if ($status) {
+        $query .= " AND status=?";
+        push(@params,$status);
+    }
+    $query.=" ORDER BY import_record_id";
+
+    if($offset){
+        if($results_per_group){
+            $query .= " LIMIT ?";
+            push(@params, $results_per_group);
+        }
+        $query .= " OFFSET ?";
+        push(@params, $offset);
     }
+    my $sth = $dbh->prepare_cached($query);
+    $sth->execute(@params);
+    my $results = $sth->fetchall_arrayref({});
     $sth->finish();
     return $results;