From: Moritz Bunkus Date: Thu, 11 Jan 2007 15:32:50 +0000 (+0000) Subject: Der Datevexport wird nicht mehr in Dateien im datev/-Verzeichnis geschrieben, sondern... X-Git-Tag: release-2.4.1~1^2~53 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=39f3d12c0cc462f8b110966095cbc2ffef8ad8f6;p=kivitendo-erp.git Der Datevexport wird nicht mehr in Dateien im datev/-Verzeichnis geschrieben, sondern dem Benutzer als ZIP-Archiv zum Download angeboten. --- diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 3a7bbc15e..c83112fea 100644 --- a/SL/DATEV.pm +++ b/SL/DATEV.pm @@ -83,17 +83,17 @@ sub kne_export { $main::lxdebug->enter_sub(); my ($self, $myconfig, $form) = @_; - my $rc; + my @rc; if ($form->{exporttype} == 0) { - $rc = &kne_buchungsexport($myconfig, $form); + @rc = &kne_buchungsexport($myconfig, $form); } else { - $rc = &kne_stammdatenexport($myconfig, $form); + @rc = &kne_stammdatenexport($myconfig, $form); } $main::lxdebug->leave_sub(); - return $rc; + return @rc; } sub obe_export { @@ -583,7 +583,9 @@ sub kne_buchungsexport { my ($myconfig, $form) = @_; - my $export_path = "datev/"; + my @filenames; + + my $export_path = $main::userspath . "/"; my $filename = "ED00000"; my $evfile = "EV01"; my @ed_versionsets; @@ -611,6 +613,7 @@ sub kne_buchungsexport { my $buchungssatz = ""; $filename++; my $ed_filename = $export_path . $filename; + push(@filenames, $filename); open(ED, "> $ed_filename") or die "can't open outputfile: $!\n"; $header = &make_kne_data_header($myconfig, $form, $fromto); $remaining_bytes -= length($header); @@ -822,6 +825,7 @@ sub kne_buchungsexport { #Make EV Verwaltungsdatei $ev_header = &make_ev_header($form, $fileno); $ev_filename = $export_path . $evfile; + push(@filenames, $evfile); open(EV, "> $ev_filename") or die "can't open outputfile: EV01\n"; print(EV $ev_header); @@ -829,11 +833,12 @@ sub kne_buchungsexport { print(EV $ed_versionset[$file]); } close(EV); - print qq|
Done.
- + print qq|
Done.
|; ### $main::lxdebug->leave_sub(); + + return @filenames; } sub kne_stammdatenexport { @@ -842,7 +847,15 @@ sub kne_stammdatenexport { my ($myconfig, $form) = @_; $form->{abrechnungsnr} = "99"; - my $export_path = "datev/"; + $form->header; + print qq| + + Export in Bearbeitung
+|; + + my @filenames; + + my $export_path = $main::userspath . "/"; my $filename = "ED00000"; my $evfile = "EV01"; my @ed_versionsets; @@ -854,6 +867,7 @@ sub kne_stammdatenexport { my $buchungssatz = ""; $filename++; my $ed_filename = $export_path . $filename; + push(@filenames, $filename); open(ED, "> $ed_filename") or die "can't open outputfile: $!\n"; $header = &make_kne_data_header($myconfig, $form, ""); $remaining_bytes -= length($header); @@ -911,6 +925,7 @@ sub kne_stammdatenexport { $ev_header = &make_ev_header($form, $fileno); $ev_filename = $export_path . $evfile; + push(@filenames, $evfile); open(EV, "> $ev_filename") or die "can't open outputfile: EV01\n"; print(EV $ev_header); @@ -922,7 +937,12 @@ sub kne_stammdatenexport { $dbh->disconnect; ### + print qq|
Done.
+|; + $main::lxdebug->leave_sub(); + + return @filenames; } 1; diff --git a/bin/mozilla/datev.pl b/bin/mozilla/datev.pl index 62a1cf006..f1110e403 100644 --- a/bin/mozilla/datev.pl +++ b/bin/mozilla/datev.pl @@ -25,6 +25,10 @@ # #====================================================================== +use POSIX qw(strftime getcwd); +use Archive::Zip qw(:ERROR_CODES :CONSTANTS); + +use SL::Common; use SL::DATEV; 1; @@ -80,13 +84,14 @@ sub export { - | - . $locale->text("Kontonummernerweiterung (KNE)") . qq| + | . # OBE-Export noch nicht implementiert! | . $locale->text("Kontonummernerweiterung (KNE)") . qq| + qq| | . $locale->text("Abrechnungsnummer") . qq| + | . $locale->text("Export Buchungsdaten") . qq| @@ -321,14 +326,65 @@ sub export3 { DATEV->save_datev_stamm(\%myconfig, \%$form); + my $link = $form->{"script"} . "?"; + map({ $link .= "${_}=" . $form->escape($form->{$_}) . "&"; } qw(path login password)); + $link .= "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(); + + 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(); } diff --git a/locale/de/all b/locale/de/all index 9b9ef4528..b7957c3ec 100644 --- a/locale/de/all +++ b/locale/de/all @@ -217,7 +217,6 @@ aktualisieren wollen?', 'Character Set' => 'Zeichensatz', 'Chart of Accounts' => 'Kontenübersicht', 'Chart of accounts' => 'Kontenrahmen', - 'Check' => 'Scheck', 'Checks' => 'Schecks', 'Choose Customer' => 'Endkunde wählen:', 'Choose Vendor' => 'Händler wählen', @@ -475,7 +474,6 @@ gestartet', 'Groups' => 'Warengruppen', 'Gültig ab' => 'Gültig ab', 'HTML' => 'HTML', - 'HTML Templates' => 'HTML-Vorlagen', 'Heading' => 'Überschrift', 'Help' => 'Hilfe', 'Help:' => 'Hilfe:', @@ -548,7 +546,7 @@ gestartet', 'July' => 'Juli', 'Jun' => 'Jun', 'June' => 'Juni', - 'KNE Export erfolgreich!' => 'KNE-Export erfolgreich!', + 'KNE-Export erfolgreich!' => 'KNE-Export erfolgreich!', 'KNr. beim Kunden' => 'KNr. beim Kunden', 'Kein Firmenname hinterlegt!' => 'Kein Firmenname hinterlegt!', 'Keine Firmenadresse hinterlegt!' => 'Keine Firmenadresse hinterlegt!', @@ -561,7 +559,6 @@ gestartet', 'Kreditinstitut' => 'Kreditinstitut', 'Kundennummer' => 'Kundennummer', 'L' => 'L', - 'LaTeX Templates' => 'LaTeX-Vorlagen', 'Language' => 'Sprache', 'Language Values' => 'Sprachübersetzungen', 'Language deleted!' => 'Sprache gelöscht!', @@ -679,7 +676,7 @@ gestartet', 'Number missing in Row' => 'Nummer fehlt in Zeile', 'Number of copies' => 'Anzahl Kopien', 'O' => 'O', - 'OBE Export erfolgreich!' => 'OBE-Export erfolgreich!', + 'OBE-Export erfolgreich!' => 'OBE-Export erfolgreich!', 'Obsolete' => 'Ungültig', 'Oct' => 'Okt', 'October' => 'Oktober', @@ -1017,9 +1014,6 @@ gestartet', 'USTVA-Hint: Tax Authoritys' => 'Bitte das Bundesland UND die Stadt bzw. den Einzugsbereich Ihres zuständigen Finanzamts auswählen.', 'USt-IdNr.' => 'USt-IdNr.', 'UStVA' => 'UStVA', - 'UStVA 2004' => 'UStVA 2004', - 'UStVA 2005' => 'UStVA 2005', - 'UStVA 2006' => 'UStVA 2006', 'UStVA als PDF-Dokument' => 'UStVa als PDF-Dokument', 'UStVA-Nr. 35' => 'Kz. 35', 'UStVA-Nr. 36' => 'Kz. 36', diff --git a/locale/de/datev b/locale/de/datev index 699f5b327..7aa9b223b 100644 --- a/locale/de/datev +++ b/locale/de/datev @@ -22,7 +22,7 @@ $self->{texts} = { 'January' => 'Januar', 'July' => 'Juli', 'June' => 'Juni', - 'KNE Export erfolgreich!' => 'KNE-Export erfolgreich!', + 'KNE-Export erfolgreich!' => 'KNE-Export erfolgreich!', 'Konten' => 'Konten', 'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)', 'Mandantennummer' => 'Mandantennummer', @@ -30,7 +30,7 @@ $self->{texts} = { 'May' => 'Mai', 'Monat' => 'Monat', 'November' => 'November', - 'OBE Export erfolgreich!' => 'OBE-Export erfolgreich!', + 'OBE-Export erfolgreich!' => 'OBE-Export erfolgreich!', 'October' => 'Oktober', 'Password' => 'Passwort', 'Quartal' => 'Quartal', @@ -42,6 +42,7 @@ $self->{texts} = { $self->{subs} = { 'continue' => 'continue', + 'download' => 'download', 'export' => 'export', 'export2' => 'export2', 'export3' => 'export3', diff --git a/locale/de/menu b/locale/de/menu index 4f164a835..31a272c1d 100644 --- a/locale/de/menu +++ b/locale/de/menu @@ -41,7 +41,6 @@ $self->{texts} = { 'Buchungsgruppen' => 'Buchungsgruppen', 'Cash' => 'Zahlungsverkehr', 'Chart of Accounts' => 'Kontenübersicht', - 'Check' => 'Scheck', 'Checks' => 'Schecks', 'Contacts' => 'Kontakte', 'Customer' => 'Kunde', @@ -53,13 +52,10 @@ $self->{texts} = { 'Edit Dunning' => 'Mahnungen konfigurieren', 'General Ledger' => 'Finanzbuchhaltung', 'Groups' => 'Warengruppen', - 'HTML Templates' => 'HTML-Vorlagen', 'Import CSV' => 'Import CSV', 'Income Statement' => 'GuV', - 'Invoice' => 'Rechnung', 'Invoices' => 'Rechnungen', 'Journal' => 'Buchungsjournal', - 'LaTeX Templates' => 'LaTeX-Vorlagen', 'Languages' => 'Sprachen', 'Lead' => 'Kundenquelle', 'Licenses' => 'Lizenzen', @@ -74,7 +70,6 @@ $self->{texts} = { 'List Printer' => 'Drucker anzeigen', 'Logout' => 'Abmeldung', 'Master Data' => 'Stammdaten', - 'Packing List' => 'Lieferschein', 'Packing Lists' => 'Lieferschein', 'Parts' => 'Waren', 'Payment' => 'Zahlungsausgang', @@ -86,31 +81,22 @@ $self->{texts} = { 'Programm' => 'Programm', 'Projects' => 'Projekte', 'Projecttransactions' => 'Projektbuchungen', - 'Purchase Order' => 'Lieferantenauftrag', 'Purchase Orders' => 'Lieferantenaufträge', - 'Quotation' => 'Angebot', 'Quotations' => 'Angebote', - 'RFQ' => 'Anfrage', 'RFQs' => 'Anfragen', 'Receipt' => 'Zahlungseingang', 'Receipts' => 'Zahlungseingänge', 'Reconciliation' => 'Kontenabgleich', 'Reports' => 'Berichte', 'Sales Invoices' => 'Kundenrechnung', - 'Sales Order' => 'Kundenauftrag', 'Sales Orders' => 'Aufträge', 'Service units' => 'Dienstleistungseinheiten', 'Services' => 'Dienstleistungen', 'Shipto' => 'Lieferanschriften', - 'Statement' => 'Sammelrechnung', 'Stylesheet' => 'Stilvorlage', 'System' => 'System', 'Trial Balance' => 'Saldenbilanz', 'Type of Business' => 'Kundentyp', - 'UStVA' => 'UStVA', - 'UStVA 2004' => 'UStVA 2004', - 'UStVA 2005' => 'UStVA 2005', - 'UStVA 2006' => 'UStVA 2006', 'UStVa' => 'UStVa', 'UStVa Einstellungen' => 'UStVa Einstellungen', 'Units' => 'Einheiten', diff --git a/locale/de/menunew b/locale/de/menunew index b31368fd9..df2c65fc5 100644 --- a/locale/de/menunew +++ b/locale/de/menunew @@ -40,7 +40,6 @@ $self->{texts} = { 'Buchungsgruppen' => 'Buchungsgruppen', 'Cash' => 'Zahlungsverkehr', 'Chart of Accounts' => 'Kontenübersicht', - 'Check' => 'Scheck', 'Checks' => 'Schecks', 'Contacts' => 'Kontakte', 'Customer' => 'Kunde', @@ -52,13 +51,10 @@ $self->{texts} = { 'Edit Dunning' => 'Mahnungen konfigurieren', 'General Ledger' => 'Finanzbuchhaltung', 'Groups' => 'Warengruppen', - 'HTML Templates' => 'HTML-Vorlagen', 'Import CSV' => 'Import CSV', 'Income Statement' => 'GuV', - 'Invoice' => 'Rechnung', 'Invoices' => 'Rechnungen', 'Journal' => 'Buchungsjournal', - 'LaTeX Templates' => 'LaTeX-Vorlagen', 'Languages' => 'Sprachen', 'Lead' => 'Kundenquelle', 'Licenses' => 'Lizenzen', @@ -73,7 +69,6 @@ $self->{texts} = { 'List Printer' => 'Drucker anzeigen', 'Logout' => 'Abmeldung', 'Master Data' => 'Stammdaten', - 'Packing List' => 'Lieferschein', 'Packing Lists' => 'Lieferschein', 'Parts' => 'Waren', 'Payment' => 'Zahlungsausgang', @@ -85,31 +80,22 @@ $self->{texts} = { 'Programm' => 'Programm', 'Projects' => 'Projekte', 'Projecttransactions' => 'Projektbuchungen', - 'Purchase Order' => 'Lieferantenauftrag', 'Purchase Orders' => 'Lieferantenaufträge', - 'Quotation' => 'Angebot', 'Quotations' => 'Angebote', - 'RFQ' => 'Anfrage', 'RFQs' => 'Anfragen', 'Receipt' => 'Zahlungseingang', 'Receipts' => 'Zahlungseingänge', 'Reconciliation' => 'Kontenabgleich', 'Reports' => 'Berichte', 'Sales Invoices' => 'Kundenrechnung', - 'Sales Order' => 'Kundenauftrag', 'Sales Orders' => 'Aufträge', 'Service units' => 'Dienstleistungseinheiten', 'Services' => 'Dienstleistungen', 'Shipto' => 'Lieferanschriften', - 'Statement' => 'Sammelrechnung', 'Stylesheet' => 'Stilvorlage', 'System' => 'System', 'Trial Balance' => 'Saldenbilanz', 'Type of Business' => 'Kundentyp', - 'UStVA' => 'UStVA', - 'UStVA 2004' => 'UStVA 2004', - 'UStVA 2005' => 'UStVA 2005', - 'UStVA 2006' => 'UStVA 2006', 'UStVa' => 'UStVa', 'UStVa Einstellungen' => 'UStVa Einstellungen', 'Units' => 'Einheiten',