Lines 137-143
if ($do_it) {
Link Here
|
137 |
total => $grantotal, |
137 |
total => $grantotal, |
138 |
); |
138 |
); |
139 |
} else{ |
139 |
} else{ |
140 |
binmode STDOUT, ':encoding(UTF-8)'; |
|
|
141 |
my $q_errors; |
140 |
my $q_errors; |
142 |
my $format = 'csv'; |
141 |
my $format = 'csv'; |
143 |
my $reportname = $input->param('basename'); |
142 |
my $reportname = $input->param('basename'); |
Lines 145-171
if ($do_it) {
Link Here
|
145 |
#my $reportfilename = "$reportname.html" ; |
144 |
#my $reportfilename = "$reportname.html" ; |
146 |
my $delimiter = C4::Context->preference('delimiter') || ','; |
145 |
my $delimiter = C4::Context->preference('delimiter') || ','; |
147 |
my ( $content ); |
146 |
my ( $content ); |
148 |
if ( $format eq 'csv' ) { |
147 |
my @rows; |
149 |
my $csv = Text::CSV::Encoded->new({ encoding_out => 'UTF-8', sep_char => $delimiter}); |
|
|
150 |
$csv or die "Text::CSV::Encoded->new({binary => 1}) FAILED: " . Text::CSV::Encoded->error_diag(); |
151 |
my @headers = (); |
152 |
push @headers, "mfirstname", |
153 |
"cardnumber", |
154 |
"bfirstname", |
155 |
"branchname", |
156 |
"date", |
157 |
"accounttype", |
158 |
"amount", |
159 |
"title", |
160 |
"barcode", |
161 |
"itype"; |
162 |
if ($csv->combine(@headers)) { |
163 |
$content .= Encode::decode('UTF-8', $csv->string()) . "\n"; |
164 |
} else { |
165 |
push @$q_errors, { combine => 'HEADER ROW: ' . $csv->error_diag() } ; |
166 |
} |
167 |
foreach my $row (@loopresult) { |
148 |
foreach my $row (@loopresult) { |
168 |
my @rowValues = (); |
149 |
my @rowValues; |
169 |
push @rowValues, $row->{mfirstname}, |
150 |
push @rowValues, $row->{mfirstname}, |
170 |
$row->{cardnumber}, |
151 |
$row->{cardnumber}, |
171 |
$row->{bfirstname}, |
152 |
$row->{bfirstname}, |
Lines 176-199
if ($do_it) {
Link Here
|
176 |
$row->{title}, |
157 |
$row->{title}, |
177 |
$row->{barcode}, |
158 |
$row->{barcode}, |
178 |
$row->{itype}; |
159 |
$row->{itype}; |
179 |
if ($csv->combine(@rowValues)) { |
160 |
push (@rows, \@rowValues) ; |
180 |
$content .= Encode::decode('UTF-8',$csv->string()) . "\n"; |
|
|
181 |
} else { |
182 |
push @$q_errors, { combine => $csv->error_diag() } ; |
183 |
} |
161 |
} |
184 |
} |
162 |
my @total; |
185 |
} |
163 |
for (1..6){push(@total,"")}; |
|
|
164 |
push(@total, $grantotal); |
186 |
print $input->header( |
165 |
print $input->header( |
187 |
-type => 'text/csv', |
166 |
-type => 'text/csv', |
188 |
-attachment=> $reportfilename |
167 |
-encoding => 'utf-8', |
189 |
); |
168 |
-attachment => $reportfilename, |
190 |
print $content; |
169 |
-name => $reportfilename |
191 |
|
170 |
); |
192 |
print $delimiter x 6; |
171 |
my $csvTemplate = C4::Templates::gettemplate('reports/csv/cash_register_stats.tt', 'intranet', $input); |
193 |
print $grantotal."\n"; |
172 |
$csvTemplate->param(sep => $delimiter, rows => \@rows, total => \@total ); |
194 |
foreach my $err (@$q_errors) { |
173 |
print $csvTemplate->output; |
195 |
print "# ERROR: " . (map {$_ . ": " . $err->{$_}} keys %$err) . "\n"; |
|
|
196 |
} # here we print all the non-fatal errors at the end. Not super smooth, but better than nothing. |
197 |
exit(1); |
174 |
exit(1); |
198 |
} |
175 |
} |
199 |
|
176 |
|
200 |
- |
|
|