Bug 11018: allow adding order from a reverted MARC batch
authorJonathan Druart <jonathan.druart@biblibre.com>
Tue, 8 Oct 2013 15:17:45 +0000 (17:17 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 17 Jan 2014 05:32:42 +0000 (05:32 +0000)
Weird behavior:
When an import is undone into catalog, the status is set to "reverted".
But if you open the add orders from iso2709, the status is automatically
set to "imported" and does not appear in the list.
So it is not possible to import a reverted batch.

[RM note: since a reverted batch is nonetheless a staged batch, and
could be reused, allowing orders to be placed by taking bibs
from a reverted batch is not as odd as it might sound.  It *can* look
odd for a staged or reverted batch to contain records that are
imported, but that's a long-standing oddity.]

Test plan:
- verify you reproduce the weird behavior
- apply this patch
- import a file and the batch into the catalog
- verify (in the your mysql/MariaDB cli) the status is "imported"
- verify it does not appears in the add orders from iso2809 page
- undo the import
- verify (in the your mysql/MariaDB cli) the status is "reverted"
- verify it appears in the add orders from iso2809 page and the status
  is always "reverted"
- finish the order

Signed-off-by: Pierre Angot <tredok.pierre@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
acqui/addorderiso2709.pl

index d40e912..e56bd06 100755 (executable)
@@ -329,9 +329,9 @@ sub import_batches_list {
 
     my @list = ();
     foreach my $batch (@$batches) {
-        if ($batch->{'import_status'} eq "staged") {
+        if ( $batch->{'import_status'} =~ /^staged$|^reverted$/ ) {
             # check if there is at least 1 line still staged
-            my $stagedList=GetImportRecordsRange($batch->{'import_batch_id'}, undef, undef, 'staged');
+            my $stagedList=GetImportRecordsRange($batch->{'import_batch_id'}, undef, undef, $batch->{import_status});
             if (scalar @$stagedList) {
                 push @list, {
                         import_batch_id => $batch->{'import_batch_id'},
@@ -356,7 +356,8 @@ sub import_batches_list {
 sub import_biblios_list {
     my ($template, $import_batch_id) = @_;
     my $batch = GetImportBatch($import_batch_id,'staged');
-    my $biblios = GetImportRecordsRange($import_batch_id,'','','staged');
+    return () unless $batch and $batch->{import_status} =~ /^staged$|^reverted$/;
+    my $biblios = GetImportRecordsRange($import_batch_id,'','',$batch->{import_status});
     my @list = ();
 
     foreach my $biblio (@$biblios) {