Koha/acqui/lateorders-export.pl
Jonathan Druart a02f0b0777
Bug 24163: UTF-8 encode the output
Specify the UTF-8 charset in the header and Encode the output to avoid encoding issues

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-05-05 11:08:44 +01:00

95 lines
3.3 KiB
Perl
Executable file

#!/usr/bin/perl
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY 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, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use CGI qw ( -utf8 );
use Encode;
use C4::Auth;
use C4::Acquisition;
use C4::Output;
use C4::Context;
my $input = new CGI;
my ($template, $loggedinuser, $cookie) = get_template_and_user({
template_name => "acqui/csv/lateorders.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {acquisition => 'order_receive'},
});
my @ordernumbers = $input->multi_param('ordernumber');
my $csv_profile_id = $input->param('csv_profile');
unless ( $csv_profile_id ) {
my @orders;
for my $ordernumber ( @ordernumbers ) {
my $order = GetOrder $ordernumber;
my $order_object = Koha::Acquisition::Orders->find($ordernumber);
my $claims = $order_object->claims;
push @orders, {
orderdate => $order->{orderdate},
latesince => $order->{latesince},
estimateddeliverydate => $order->{estimateddeliverydate},
supplier => $order->{supplier},
supplierid => $order->{supplierid},
title => $order->{title},
author => $order->{author},
publisher => $order->{publisher},
unitpricesupplier => $order->{unitpricesupplier},
quantity_to_receive => $order->{quantity_to_receive},
subtotal => $order->{subtotal},
budget => $order->{budget},
basketname => $order->{basketname},
basketno => $order->{basketno},
claims_count => $claims->count,
claimed_date => $claims->count ? $claims->last->claimed_on : undef,
internalnote => $order->{order_internalnote},
vendornote => $order->{order_vendornote},
isbn => $order->{isbn},
}
;
}
# We want to export using the default profile, using the template acqui/csv/lateorders.tt
print $input->header(
-type => 'text/csv',
-attachment => 'lateorders.csv',
);
$template->param( orders => \@orders );
for my $line ( split '\n', $template->output ) {
print "$line\n" unless $line =~ m|^\s*$|;
}
exit;
} else {
my $csv_profile = Koha::CsvProfiles->find($csv_profile_id);
my $content = '[% SET separator = "'.$csv_profile->csv_separator.'" ~%]' . $csv_profile->content;
my $csv = C4::Letters::_process_tt({
content => $content,
loops => { aqorders => \@ordernumbers },
});
print $input->header(
-type => 'text/csv',
-attachment => 'lateorders.csv',
-charset => 'UTF-8',
);
print Encode::encode_utf8($csv);
exit;
}