'Display' => 'Anzeigen',
'Display file' => 'Datei anzeigen',
'Display options' => 'Anzeigeoptionen',
+ 'Do not change the tax rate of taxkey 0.' => 'Ändern Sie nicht den Steuersatz vom Steuerschlüssel 0.',
'Do not check for duplicates' => 'Nicht nach Dubletten suchen',
'Do not set default buchungsgruppe' => 'Nie Standardbuchungsgruppe setzen',
'Do you really want to close the following SEPA exports? No payment will be recorded for bank collections that haven\'t been marked as executed yet.' => 'Wollen Sie wirklich die folgenden SEPA-Exporte abschließen? Für Überweisungen, die noch nicht gebucht wurden, werden dann keine Zahlungen verbucht.',
'Dunnings' => 'Mahnungen',
'Duplicate in CSV file' => 'Duplikat in CSV-Datei',
'Duplicate in database' => 'Duplikat in Datenbank',
+ 'During the next update a taxkey 0 with tax rate of 0 will automatically created.' => 'Beim nächsten Ausführen des Updates wird ein Steuerschlüssel 0 mit einem Steuersatz von 0% automatisch erzeugt.',
'During this user migration kivitendo can create such a group for you and grant all users access to all of kivitendo\'s functions.' => 'Im Rahmen dieser Benutzerdatenmigration kann kivitendo eine solche Gruppe für Sie anlegen und allen Benutzern Zugriff auf alle kivitendo-Funktionen gewähren.',
'E-mail' => 'eMail',
'E-mail Statement to' => 'Fälligkeitsabrechnung als eMail an',
'Fristsetzung' => 'Fristsetzung',
'From' => 'Von',
'From Date' => 'Von',
+ 'From this version on the taxkey 0 must have a tax rate of 0 (for DATEV compatibility).' => 'Ab dieser Version muss der Steuerschlüssel 0 einen Steuersatz von 0% haben (auf Grund der DATEV-Kompatibilität).',
'Full Access' => 'Vollzugriff',
'Full Preview' => 'Alles',
'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
'There are still entries in the database for which no unit has been assigned.' => 'Es gibt noch Einträge in der Datenbank, für die keine Einheit zugeordnet ist.',
'There are still transfers not matching the qty of the delivery order. Stock operations can not be changed later. Do you really want to proceed?' => 'Einige der Lagerbewegungen sind nicht vollständig und Lagerbewegungen können nachträglich nicht mehr verändert werden. Wollen Sie wirklich fortfahren?',
'There are usually three ways to install Perl modules.' => 'Es gibt normalerweise drei Arten, ein Perlmodul zu installieren.',
+ 'There is already a taxkey 0 with tax rate not 0.' => 'Es existiert bereits ein Steuerschlüssel mit Steuersatz ungleich 0%.',
'There is at least one sales or purchase invoice for which kivitendo recorded an inventory transaction with taxkeys even though no tax was recorded.' => 'Es gibt mindestens eine Verkaufs- oder Einkaufsrechnung, für die kivitendo eine Warenbestandsbuchung ohne dazugehörige Steuerbuchung durchgeführt hat.',
'There is at least one transaction for which the user has chosen a logically wrong taxkey.' => 'Es gibt mindestens eine Buchung, bei der ein logisch nicht passender Steuerschlüssel ausgewählt wurde.',
'There is not enough available of \'#1\' at warehouse \'#2\', bin \'#3\', #4, #5, for the transfer of #6.' => 'Von \'#1\' ist in Lager \'#2\', Lagerplatz \'#3\', #4, #5, nicht genügend eingelagert, um insgesamt #6 auszulagern.',
'To (time)' => 'Bis',
'To Date' => 'Bis',
'To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzufügen, ändern und speichern Sie am einfachsten einen bestehenden Benutzernamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
+ 'To continue please change the taxkey 0 to another value.' => 'Um fortzufahren, ändern Sie bitte den Steuerschlüssel 0 auf einen anderen Wert.',
'Top' => 'Oben',
'Top (CSS)' => 'Oben (mit CSS)',
'Top (Javascript)' => 'Oben (mit Javascript)',
'tax_taxdescription' => 'Steuername',
'tax_taxkey' => 'Steuerschlüssel',
'taxincluded checked' => '"Steuer im Preis inbegriffen" vorwählen',
+ 'taxkey 0 is already allocated.' => 'Steuerschlüssel 0 ist bereits vergeben.',
+ 'taxkey 0 with taxrate 0 was created.' => 'Steuerschl&ssel 0 wurde angelegt.',
'taxnumber' => 'Automatikkonto',
'terminated' => 'gekündigt',
'to (date)' => 'bis',
'Fristsetzung' => '',
'From' => '',
'From Date' => '',
+ 'From this version on the taxkey 0 is reserved for tax rate 0.' => '',
'Full Access' => '',
'Full Preview' => '',
'Full access to all functions' => '',
+ 'Furthermore you should define a taxkey for all accounts, because this update cannot be executed.' => '',
'Fwd' => 'Forward',
'GL Transaction' => '',
'GL transactions changeable' => '',
'There are still entries in the database for which no unit has been assigned.' => '',
'There are still transfers not matching the qty of the delivery order. Stock operations can not be changed later. Do you really want to proceed?' => '',
'There are usually three ways to install Perl modules.' => '',
+ 'There is already a taxkey 0 with tax rate not 0.' => '',
'There is at least one sales or purchase invoice for which kivitendo recorded an inventory transaction with taxkeys even though no tax was recorded.' => '',
'There is at least one transaction for which the user has chosen a logically wrong taxkey.' => '',
'There is not enough available of \'#1\' at warehouse \'#2\', bin \'#3\', #4, #5, for the transfer of #6.' => '',
--- /dev/null
+# @tag: charts_without_taxkey
+# @description: Fügt für jedes Konto, was keien Steuerschlüssel hat, den Steuerschlüssel 0 hinzu
+# @depends:
+# @charset: UTF-8
+
+use utf8;
+use strict;
+use SL::Locale;
+
+die("This script cannot be run from the command line.") unless ($main::form);
+
+sub mydberror {
+ my ($msg) = @_;
+ die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
+}
+
+sub do_query {
+ my ($query, $may_fail) = @_;
+
+ if (!$dbh->do($query)) {
+ mydberror($query) unless ($may_fail);
+ $dbh->rollback();
+ $dbh->begin_work();
+ }
+}
+
+
+sub do_update {
+ my ($taxkey0_with_taxes_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0 AND NOT rate=0;");
+
+ if ($taxkey0_with_taxes_exists > 0){
+ print_error_message();
+ return 0;
+ }
+
+ my ($taxkey0_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0");
+
+ if ($taxkey0_exists == 0){
+ my $insert_taxkey0 = <<SQL;
+INSERT INTO tax
+ (rate, taxkey, taxdescription)
+ VALUES
+ (0, 0, 'Keine Steuer');
+SQL
+ do_query($insert_taxkey0);
+ print $::locale->text("taxkey 0 with taxrate 0 was created.");
+ };
+
+ my $insert_taxkeys = <<SQL;
+INSERT INTO taxkeys
+ (chart_id, tax_id, taxkey_id, startdate)
+ SELECT
+ c.id, (SELECT id FROM tax WHERE taxkey=0), 0, '1970-01-01'
+ FROM chart c WHERE c.id NOT IN (SELECT chart_id FROM taxkeys);
+SQL
+ do_query($insert_taxkeys);
+ return 1;
+}; # end do_update
+
+sub print_error_message {
+ print $main::form->parse_html_template("dbupgrade/taxkey_update");
+};
+
+return do_update();