X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdatev.pl;h=6d89a21b911823c3ee1b751ee9833f060297cfb8;hb=0e5b1ea3ee6a7ad8ec9b735971eb894c850c5a64;hp=72666769e7cbc6186825483d7f96c272039c35f7;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/bin/mozilla/datev.pl b/bin/mozilla/datev.pl index 72666769e..6d89a21b9 100644 --- a/bin/mozilla/datev.pl +++ b/bin/mozilla/datev.pl @@ -22,29 +22,33 @@ #====================================================================== # # Datev export module -# +# #====================================================================== +use POSIX qw(strftime getcwd); +use Archive::Zip qw(:ERROR_CODES :CONSTANTS); +use SL::Common; use SL::DATEV; 1; -# end of main -sub continue { &{ $form->{nextsub} } }; +# end of main +require "bin/mozilla/common.pl"; +sub continue { call_sub($form->{"nextsub"}); } sub export { $lxdebug->enter_sub(); + $auth->assert('datev_export'); $form->{title} = $locale->text("DATEX - Export Assistent"); - - DATEV->get_datev_stamm(\%myconfig, \%$form); + DATEV->get_datev_stamm(\%myconfig, \%$form); $form->header; - + print qq| @@ -56,45 +60,49 @@ sub export { $form->{title} - |.$locale->text("DATEV Angaben").qq| + | . $locale->text("DATEV Angaben") . qq| - + - - + + - + - - + + - + - - + + - + - + | . # OBE-Export noch nicht implementiert! + qq| - - + + + - + - - + +
|.$locale->text("Beraternummer").qq|| . $locale->text("Beraternummer") . qq| |.$locale->text("DFV-Kennzeichen").qq|| . $locale->text("DFV-Kennzeichen") . qq|
|.$locale->text("Beratername").qq|| . $locale->text("Beratername") . qq| |.$locale->text("Password").qq|| . $locale->text("Password") . qq|
|.$locale->text("Mandantennummer").qq|| . $locale->text("Mandantennummer") . qq| |.$locale->text("Datenträgernummer").qq|| . $locale->text("Medium Number") . qq|
|.$locale->text("Kontonummernerweiterung (KNE)").qq| | . $locale->text("Kontonummernerweiterung (KNE)") . qq| |.$locale->text("Abrechnungsnummer").qq|| . $locale->text("Abrechnungsnummer") . qq|
|.$locale->text("Export Buchungsdaten").qq| | + . $locale->text("Export Buchungsdaten") . qq| |.$locale->text("Export Stammdaten").qq| | + . $locale->text("Export Stammdaten") . qq|
@@ -107,12 +115,9 @@ sub export { -{path}> -{login}> -{password}> -
- + @@ -124,37 +129,62 @@ sub export { sub export2 { $lxdebug->enter_sub(); - if ($form->{exporttype}==0) { + $auth->assert('datev_export'); + + if ($form->{exporttype} == 0) { &export_bewegungsdaten(); - } else {&export_stammdaten();} + } else { + &export_stammdaten(); + } $lxdebug->leave_sub(); } sub export_bewegungsdaten { $lxdebug->enter_sub(); + $auth->assert('datev_export'); $form->{title} = $locale->text("DATEX - Export Assistent"); - $form->{allemonate}=qq| - - - - - - - - - - - |; - - $form->{allequartale}=qq| - - - |; + $form->{allemonate} = + qq| + + + + + + + + + + + |; + + $form->{allequartale} = + qq| + + + |; + $form->{"jsscript"} = 1; $form->header; - + print qq| @@ -166,29 +196,34 @@ sub export_bewegungsdaten { $form->{title} - |.$locale->text("Zeitraum").qq| + | . $locale->text("Zeitraum") . qq| - + - - + + - - - - - + + + + +
 |.$locale->text('Monat').qq| | + . $locale->text('Monat') . qq|
 |.$locale->text('Quartal').qq|
 | + . $locale->text('Quartal') . qq|
 |.$locale->text('Datum von').qq||.$locale->text('bis').qq|
 | + . $locale->text('Datum von') . qq| + | . $locale->text('bis') . qq| +
@@ -198,6 +233,10 @@ sub export_bewegungsdaten { +| . $form->write_trigger(\%myconfig, 2, + "transdatefrom", "BL", "trigger_transdatefrom", + "transdateto", "BL", "trigger_transdateto") . qq| + @@ -211,12 +250,9 @@ sub export_bewegungsdaten { -{path}> -{login}> -{password}> -
- + @@ -229,12 +265,12 @@ sub export_bewegungsdaten { sub export_stammdaten { $lxdebug->enter_sub(); + $auth->assert('datev_export'); $form->{title} = $locale->text("DATEX - Export Assistent"); - $form->header; - + print qq| @@ -244,18 +280,18 @@ sub export_stammdaten { $form->{title} - |.$locale->text("Konten").qq| + | . $locale->text("Konten") . qq| - + - +
|.$locale->text('Von Konto: ').qq|| . $locale->text('Von Konto: ') . qq|
|.$locale->text('Bis Konto: ').qq|| . $locale->text('Bis Konto: ') . qq|
@@ -278,12 +314,9 @@ sub export_stammdaten { -{path}> -{login}> -{password}> -
- + @@ -293,18 +326,72 @@ sub export_stammdaten { $lxdebug->leave_sub(); } - sub export3 { $lxdebug->enter_sub(); + $auth->assert('datev_export'); + DATEV->save_datev_stamm(\%myconfig, \%$form); - + + my $link = "datev.pl?action=download"; + if ($form->{kne}) { - if (DATEV->kne_export(\%myconfig, \%$form)) { - $form->redirect($locale->text('KNE Export erfolgreich!'))} + my @filenames = DATEV->kne_export(\%myconfig, \%$form); + if (@filenames) { + print(qq|
| . $locale->text('KNE-Export erfolgreich!') . qq|
|); + $link .= "&filenames=" . $form->escape(join(":", @filenames)); + print(qq|
Download|); + } else { + $form->error("KNE-Export schlug fehl."); + } } else { - if (DATEV->obe_export(\%myconfig, \%$form)) { - $form->redirect($locale->text('OBE Export erfolgreich!'));} + my @filenames = DATEV->obe_export(\%myconfig, \%$form); + if (@filenames) { + print(qq|
| . $locale->text('OBE-Export erfolgreich!') . qq|
|); + $link .= "&filenames=" . $form->escape(join(":", @filenames)); + print(qq|
Download|); + } else { + $form->error("OBE-Export schlug fehl."); + } } + + print(""); + + $lxdebug->leave_sub(); +} + +sub download { + $lxdebug->enter_sub(); + + $auth->assert('datev_export'); + + my $tmp_name = Common->tmpname(); + my $zip_name = strftime("lx-office-datev-export-%Y%m%d.zip", + localtime(time())); + + my $cwd = getcwd(); + chdir("users") || die("chdir users"); + + my @filenames = split(/:/, $form->{"filenames"}); + map({ s|.*/||; $form->error("Eine der KNE-Exportdateien wurde nicht " . + "gefunden. Wurde der Export bereits " . + "durchgeführt?") unless (-f $_); } + @filenames); + + my $zip = Archive::Zip->new(); + map({ $zip->addFile($_); } @filenames); + $zip->writeToFileNamed($tmp_name); + chdir($cwd); + + open(IN, $tmp_name) || die("open $tmp_name"); + print("Content-Type: application/zip\n"); + print("Content-Disposition: attachment; filename=\"${zip_name}\"\n\n"); + while () { + print($_); + } + close(IN); + + unlink($tmp_name); + $lxdebug->leave_sub(); }