Lines 19-25
use Pod::Usage;
Link Here
|
19 |
use Getopt::Long; |
19 |
use Getopt::Long; |
20 |
use C4::Log; |
20 |
use C4::Log; |
21 |
|
21 |
|
22 |
use File::Basename qw( dirname ); |
|
|
23 |
use Koha::DateUtils; |
22 |
use Koha::DateUtils; |
24 |
use MIME::Lite; |
23 |
use MIME::Lite; |
25 |
|
24 |
|
Lines 181-187
sub print_notices {
Link Here
|
181 |
filepath => $filepath, |
180 |
filepath => $filepath, |
182 |
}); |
181 |
}); |
183 |
} elsif ( $format eq 'ods' ) { |
182 |
} elsif ( $format eq 'ods' ) { |
184 |
generate_ods ({ |
183 |
_generate_ods ({ |
185 |
messages => $branch_messages, |
184 |
messages => $branch_messages, |
186 |
filepath => $filepath, |
185 |
filepath => $filepath, |
187 |
}); |
186 |
}); |
Lines 249-305
sub generate_csv {
Link Here
|
249 |
} |
248 |
} |
250 |
} |
249 |
} |
251 |
|
250 |
|
252 |
sub generate_ods { |
251 |
sub _generate_ods { |
253 |
my ( $params ) = @_; |
252 |
my ( $params ) = @_; |
254 |
my $messages = $params->{messages}; |
253 |
my $messages = $params->{messages}; |
255 |
my $filepath = $params->{filepath}; |
254 |
my $ods_filepath = $params->{filepath}; |
256 |
|
|
|
257 |
# Create document |
258 |
use OpenOffice::OODoc; |
259 |
my $tmpdir = dirname $filepath; |
260 |
odfWorkingDirectory( $tmpdir ); |
261 |
my $doc = odfDocument( file => $filepath, create => 'spreadsheet' ); |
262 |
|
255 |
|
263 |
# Prepare sheet |
256 |
# Prepare sheet |
264 |
my @headers; |
257 |
my $ods_content; |
265 |
my @rows; |
258 |
my $has_headers; |
266 |
my $i = 0; |
|
|
267 |
foreach my $message ( @$messages ) { |
259 |
foreach my $message ( @$messages ) { |
268 |
my @lines = split /\n/, $message->{content}; |
260 |
my @message_lines = split /\n/, $message->{content}; |
269 |
chomp for @lines; |
261 |
chomp for @message_lines; |
270 |
|
262 |
# Get headers from first message |
271 |
# We don't have headers, get them |
263 |
if ($has_headers) { |
272 |
unless ( @headers ) { |
264 |
shift @message_lines; |
273 |
@headers = split $delimiter, $lines[0]; |
265 |
} else { |
274 |
my $nb_cols = scalar @headers; |
266 |
$has_headers = 1; |
275 |
my $nb_rows = scalar @$messages; |
|
|
276 |
my $sheet = $doc->expandTable( 0, $nb_rows + 1, $nb_cols ); |
277 |
@rows = $doc->getTableRows($sheet); |
278 |
|
279 |
# Write headers row |
280 |
my $row = $rows[0]; |
281 |
my $j = 0; |
282 |
for my $header ( @headers ) { |
283 |
$doc->cellValue( $row, $j, Encode::encode( 'UTF8', $header ) ); |
284 |
$j++; |
285 |
} |
286 |
$i = 1; |
287 |
} |
267 |
} |
288 |
|
268 |
foreach my $message_line ( @message_lines ) { |
289 |
# Write all rows |
269 |
my @content_row; |
290 |
shift @lines; # remove headers |
270 |
my @message_cells = split $delimiter, $message_line; |
291 |
for my $line ( @lines ) { |
271 |
foreach ( @message_cells ) { |
292 |
my @row_data = split $delimiter, $line; |
272 |
push @content_row, Encode::encode( 'UTF8', $_ ); |
293 |
my $row = $rows[$i]; |
|
|
294 |
# Note scalar(@$row_data) should be equal to $nb_cols |
295 |
for ( my $j = 0 ; $j < scalar(@row_data) ; $j++ ) { |
296 |
my $value = Encode::encode( 'UTF8', $row_data[$j] ); |
297 |
$doc->cellValue( $row, $j, $value ); |
298 |
} |
273 |
} |
299 |
$i++; |
274 |
push @$ods_content, \@content_row; |
300 |
} |
275 |
} |
301 |
} |
276 |
} |
302 |
$doc->save(); |
277 |
|
|
|
278 |
# Process |
279 |
use Koha::Util::OpenDocument; |
280 |
generate_ods($ods_filepath, $ods_content); |
303 |
} |
281 |
} |
304 |
|
282 |
|
305 |
sub send_files { |
283 |
sub send_files { |