Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 39f3d12c

Von Moritz Bunkus vor etwa 18 Jahren hinzugefügt

  • ID 39f3d12c0cc462f8b110966095cbc2ffef8ad8f6
  • Vorgänger b61db412
  • Nachfolger faf01056

Der Datevexport wird nicht mehr in Dateien im datev/-Verzeichnis geschrieben, sondern dem Benutzer als ZIP-Archiv zum Download angeboten.

Unterschiede anzeigen:

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&uuml;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