Bug 18536: Generating CSV using profile in serials late issues doesn't work as described
authorJosef Moravec <josef.moravec@gmail.com>
Thu, 4 May 2017 08:54:30 +0000 (08:54 +0000)
committerJulian Maurice <julian.maurice@biblibre.com>
Mon, 22 May 2017 14:16:39 +0000 (16:16 +0200)
Description on editing csv profiles says:

"You can also use your own headers (instead of the ones from Koha) by
prefixing the field name with an header, followed by the equal sign."

So the header should be optional, but in fact it's mandatory. Also the
regular expression to cut table name from beginning of db column is not
right.

Test plan:

0. Don't apply the patch
1. Make two CSV profiles for exporting late issues
    a) SUPPLIER=aqbooksellers.name|TITLE=subscription.title|ISSUENUMBER=serial.serialseq|LATE SINCE=serial.planneddate
    b) aqbooksellers.name|TITLE=subscription.title|ISSUE NUMBER=serial.serialseq|LATE SINCE=serial.planneddate
2. Export late issues, profile a) works as expected, profile b) doesn't
3. Apply the patch
4. Both profiles should work

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit 6b8f9d7e14a8b93143185e814464393ef275631d)
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
(cherry picked from commit e6af6ae62ab7ab950aaccf24f95dd52334d93218)
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>

serials/lateissues-export.pl

index d9fc473..ab524ea 100755 (executable)
@@ -45,14 +45,19 @@ my $csv = Text::CSV_XS->new({
 my $content = $csv_profile->{content};
 my ( @headers, @fields );
 while ( $content =~ /
-    ([^=]+) # header
-    =
-    ([^\|]+) # fieldname (table.row or row)
+    ([^=\|]+) # header
+    =?
+    ([^\|]*) # fieldname (table.row or row)
     \|? /gxms
 ) {
-    push @headers, $1;
-    my $field = $2;
-    $field =~ s/[^\.]*\.?//; # Remove the table name if exists.
+    my $header = $1;
+    my $field = ($2 eq '') ? $1 : $2;
+
+    $header =~ s/^\s+|\s+$//g; # Trim whitespaces
+    push @headers, $header;
+
+    $field =~ s/[^\.]*\.{1}//; # Remove the table name if exists.
+    $field =~ s/^\s+|\s+$//g; # Trim whitespaces
     push @fields, $field;
 }