Revision 39f3d12c
Von Moritz Bunkus vor etwa 18 Jahren hinzugefügt
bin/mozilla/datev.pl | ||
---|---|---|
25 | 25 |
# |
26 | 26 |
#====================================================================== |
27 | 27 |
|
28 |
use POSIX qw(strftime getcwd); |
|
29 |
use Archive::Zip qw(:ERROR_CODES :CONSTANTS); |
|
30 |
|
|
31 |
use SL::Common; |
|
28 | 32 |
use SL::DATEV; |
29 | 33 |
|
30 | 34 |
1; |
... | ... | |
80 | 84 |
<td><input name=datentraegernr size=5 maxlength=3 value="$form->{datentraegernr}"></td> |
81 | 85 |
</tr> |
82 | 86 |
<tr> |
83 |
<td><input checked name=kne type=checkbox class=checkbox value=1> |
|
|
84 |
. $locale->text("Kontonummernerweiterung (KNE)") . qq|</td>
|
|
87 |
| . # OBE-Export noch nicht implementiert! <td><input checked name=kne type=checkbox class=checkbox value=1> | . $locale->text("Kontonummernerweiterung (KNE)") . qq|</td>
|
|
88 |
qq|<td><input type="hidden" name="kne" value="1"></td>
|
|
85 | 89 |
<td></td> |
86 | 90 |
|
87 | 91 |
<td align=left nowrap>| . $locale->text("Abrechnungsnummer") . qq|</td> |
88 | 92 |
<td><input name=abrechnungsnr size=5 maxlength=3 value="$form->{abrechnungsnr}"></td> |
89 | 93 |
</tr> |
94 |
|
|
90 | 95 |
<tr> |
91 | 96 |
<td><input name=exporttype type=radio class=radio value=0 checked> | |
92 | 97 |
. $locale->text("Export Buchungsdaten") . qq|</td> |
... | ... | |
321 | 326 |
|
322 | 327 |
DATEV->save_datev_stamm(\%myconfig, \%$form); |
323 | 328 |
|
329 |
my $link = $form->{"script"} . "?"; |
|
330 |
map({ $link .= "${_}=" . $form->escape($form->{$_}) . "&"; } qw(path login password)); |
|
331 |
$link .= "action=download"; |
|
332 |
|
|
324 | 333 |
if ($form->{kne}) { |
325 |
if (DATEV->kne_export(\%myconfig, \%$form)) { |
|
326 |
$form->redirect($locale->text('KNE Export erfolgreich!')); |
|
334 |
my @filenames = DATEV->kne_export(\%myconfig, \%$form); |
|
335 |
if (@filenames) { |
|
336 |
print(qq|<br><b>| . $locale->text('KNE-Export erfolgreich!') . qq|</b><br>|); |
|
337 |
$link .= "&filenames=" . $form->escape(join(":", @filenames)); |
|
338 |
print(qq|<br><a href="$link">Download</a>|); |
|
339 |
} else { |
|
340 |
$form->error("KNE-Export schlug fehl."); |
|
327 | 341 |
} |
328 | 342 |
} else { |
329 |
if (DATEV->obe_export(\%myconfig, \%$form)) { |
|
330 |
$form->redirect($locale->text('OBE Export erfolgreich!')); |
|
343 |
my @filenames = DATEV->obe_export(\%myconfig, \%$form); |
|
344 |
if (@filenames) { |
|
345 |
print(qq|<br><b>| . $locale->text('OBE-Export erfolgreich!') . qq|</b><br>|); |
|
346 |
$link .= "&filenames=" . $form->escape(join(":", @filenames)); |
|
347 |
print(qq|<br><a href="$link">Download</a>|); |
|
348 |
} else { |
|
349 |
$form->error("OBE-Export schlug fehl."); |
|
331 | 350 |
} |
332 | 351 |
} |
352 |
|
|
353 |
print("</body></html>"); |
|
354 |
|
|
355 |
$lxdebug->leave_sub(); |
|
356 |
} |
|
357 |
|
|
358 |
sub download { |
|
359 |
$lxdebug->enter_sub(); |
|
360 |
|
|
361 |
my $tmp_name = Common->tmpname(); |
|
362 |
my $zip_name = strftime("lx-office-datev-export-%Y%m%d.zip", |
|
363 |
localtime(time())); |
|
364 |
|
|
365 |
my $cwd = getcwd(); |
|
366 |
chdir("users") || die("chdir users"); |
|
367 |
|
|
368 |
my @filenames = split(/:/, $form->{"filenames"}); |
|
369 |
map({ s|.*/||; $form->error("Eine der KNE-Exportdateien wurde nicht " . |
|
370 |
"gefunden. Wurde der Export bereits " . |
|
371 |
"durchgeführt?") unless (-f $_); } |
|
372 |
@filenames); |
|
373 |
|
|
374 |
my $zip = Archive::Zip->new(); |
|
375 |
map({ $zip->addFile($_); } @filenames); |
|
376 |
$zip->writeToFileNamed($tmp_name); |
|
377 |
chdir($cwd); |
|
378 |
|
|
379 |
open(IN, $tmp_name) || die("open $tmp_name"); |
|
380 |
print("Content-Type: application/zip\n"); |
|
381 |
print("Content-Disposition: attachment; filename=\"${zip_name}\"\n\n"); |
|
382 |
while (<IN>) { |
|
383 |
print($_); |
|
384 |
} |
|
385 |
close(IN); |
|
386 |
|
|
387 |
unlink($tmp_name); |
|
388 |
|
|
333 | 389 |
$lxdebug->leave_sub(); |
334 | 390 |
} |
Auch abrufbar als: Unified diff
Der Datevexport wird nicht mehr in Dateien im datev/-Verzeichnis geschrieben, sondern dem Benutzer als ZIP-Archiv zum Download angeboten.