Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 2c86cb0a

Von Niclas Zimmermann vor fast 12 Jahren hinzugefügt

  • ID 2c86cb0ad16866113be6e6d8dff239623b77a576
  • Vorgänger 8b8d4848
  • Nachfolger 03ff37cb

Update-Script für fehlende Steuerschlüssel

Bisher gab es noch sehr viele Konten, für die kein Eintrag in der
Tabelle taxkeys und damit kein Steuerschlüssel vorhanden war.
Dieses Update erstellt für jedes Konto ohne Steuerschlüssel einen
in der taxkeys, s.d. solche Konten den Steuerschlüssel 0 haben.

Hierfür ist unbedingt erforderlich, dass der Steuerschlüssel 0
existiert (also in tax vorhanden ist) und dieser Eintrag den
Steuersatz 0% hat. Existiert der Steuerschlüssel 0 nicht, so
wird er angelegt. Existiert ein Steuerschlüssel 0 mit mehr als 0%
Steuern, so wird das Update mit Fehlermeldung abgebrochen.

Siehe hierzu auch die Tickets #2028, #2029.

Unterschiede anzeigen:

locale/de/all
651 651
  'Display'                     => 'Anzeigen',
652 652
  'Display file'                => 'Datei anzeigen',
653 653
  'Display options'             => 'Anzeigeoptionen',
654
  'Do not change the tax rate of taxkey 0.' => 'Ändern Sie nicht den Steuersatz vom Steuerschlüssel 0.',
654 655
  'Do not check for duplicates' => 'Nicht nach Dubletten suchen',
655 656
  'Do not set default buchungsgruppe' => 'Nie Standardbuchungsgruppe setzen',
656 657
  '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.',
......
699 700
  'Dunnings'                    => 'Mahnungen',
700 701
  'Duplicate in CSV file'       => 'Duplikat in CSV-Datei',
701 702
  'Duplicate in database'       => 'Duplikat in Datenbank',
703
  '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.',
702 704
  '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.',
703 705
  'E-mail'                      => 'eMail',
704 706
  'E-mail Statement to'         => 'Fälligkeitsabrechnung als eMail an',
......
912 914
  'Fristsetzung'                => 'Fristsetzung',
913 915
  'From'                        => 'Von',
914 916
  'From Date'                   => 'Von',
917
  '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).',
915 918
  'Full Access'                 => 'Vollzugriff',
916 919
  'Full Preview'                => 'Alles',
917 920
  'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
......
2054 2057
  '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.',
2055 2058
  '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?',
2056 2059
  'There are usually three ways to install Perl modules.' => 'Es gibt normalerweise drei Arten, ein Perlmodul zu installieren.',
2060
  'There is already a taxkey 0 with tax rate not 0.' => 'Es existiert bereits ein Steuerschlüssel mit Steuersatz ungleich 0%.',
2057 2061
  '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.',
2058 2062
  '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.',
2059 2063
  '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.',
......
2094 2098
  'To (time)'                   => 'Bis',
2095 2099
  'To Date'                     => 'Bis',
2096 2100
  '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.',
2101
  'To continue please change the taxkey 0 to another value.' => 'Um fortzufahren, ändern Sie bitte den Steuerschlüssel 0 auf einen anderen Wert.',
2097 2102
  'Top'                         => 'Oben',
2098 2103
  'Top (CSS)'                   => 'Oben (mit CSS)',
2099 2104
  'Top (Javascript)'            => 'Oben (mit Javascript)',
......
2486 2491
  'tax_taxdescription'          => 'Steuername',
2487 2492
  'tax_taxkey'                  => 'Steuerschlüssel',
2488 2493
  'taxincluded checked'         => '"Steuer im Preis inbegriffen" vorwählen',
2494
  'taxkey 0 is already allocated.' => 'Steuerschlüssel 0 ist bereits vergeben.',
2495
  'taxkey 0 with taxrate 0 was created.' => 'Steuerschl&ssel 0 wurde angelegt.',
2489 2496
  'taxnumber'                   => 'Automatikkonto',
2490 2497
  'terminated'                  => 'gekündigt',
2491 2498
  'to (date)'                   => 'bis',
locale/en/all
893 893
  'Fristsetzung'                => '',
894 894
  'From'                        => '',
895 895
  'From Date'                   => '',
896
  'From this version on the taxkey 0 is reserved for tax rate 0.' => '',
896 897
  'Full Access'                 => '',
897 898
  'Full Preview'                => '',
898 899
  'Full access to all functions' => '',
900
  'Furthermore you should define a taxkey for all accounts, because this update cannot be executed.' => '',
899 901
  'Fwd'                         => 'Forward',
900 902
  'GL Transaction'              => '',
901 903
  'GL transactions changeable'  => '',
......
1989 1991
  'There are still entries in the database for which no unit has been assigned.' => '',
1990 1992
  '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?' => '',
1991 1993
  'There are usually three ways to install Perl modules.' => '',
1994
  'There is already a taxkey 0 with tax rate not 0.' => '',
1992 1995
  'There is at least one sales or purchase invoice for which kivitendo recorded an inventory transaction with taxkeys even though no tax was recorded.' => '',
1993 1996
  'There is at least one transaction for which the user has chosen a logically wrong taxkey.' => '',
1994 1997
  'There is not enough available of \'#1\' at warehouse \'#2\', bin \'#3\', #4, #5, for the transfer of #6.' => '',
sql/Pg-upgrade2/charts_without_taxkey.pl
1
# @tag: charts_without_taxkey
2
# @description: Fügt für jedes Konto, was keien Steuerschlüssel hat, den Steuerschlüssel 0 hinzu
3
# @depends:
4
# @charset: UTF-8
5

  
6
use utf8;
7
use strict;
8
use SL::Locale;
9

  
10
die("This script cannot be run from the command line.") unless ($main::form);
11

  
12
sub mydberror {
13
  my ($msg) = @_;
14
  die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
15
}
16

  
17
sub do_query {
18
  my ($query, $may_fail) = @_;
19

  
20
  if (!$dbh->do($query)) {
21
    mydberror($query) unless ($may_fail);
22
    $dbh->rollback();
23
    $dbh->begin_work();
24
  }
25
}
26

  
27

  
28
sub do_update {
29
  my ($taxkey0_with_taxes_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0 AND NOT rate=0;"); 
30

  
31
  if ($taxkey0_with_taxes_exists > 0){
32
    print_error_message();
33
    return 0;
34
  }
35

  
36
  my ($taxkey0_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0");
37

  
38
  if ($taxkey0_exists == 0){
39
    my $insert_taxkey0 = <<SQL;
40
INSERT INTO tax 
41
  (rate, taxkey, taxdescription)
42
  VALUES
43
  (0, 0, 'Keine Steuer');
44
SQL
45
    do_query($insert_taxkey0);
46
    print $::locale->text("taxkey 0 with taxrate 0 was created.");
47
  };
48
  
49
  my $insert_taxkeys = <<SQL;
50
INSERT INTO taxkeys 
51
  (chart_id, tax_id, taxkey_id, startdate) 
52
  SELECT 
53
  c.id, (SELECT id FROM tax WHERE taxkey=0), 0, '1970-01-01' 
54
  FROM chart c WHERE c.id NOT IN (SELECT chart_id FROM taxkeys);
55
SQL
56
    do_query($insert_taxkeys);
57
    return 1;
58
}; # end do_update
59

  
60
sub print_error_message {
61
  print $main::form->parse_html_template("dbupgrade/taxkey_update");
62
};
63

  
64
return do_update();
templates/webpages/dbupgrade/taxkey_update.html
1
[%- USE T8 %]
2
[% USE HTML %]<div class="listtop">[% 'taxkey 0 is already allocated.' | $T8 %]</div>
3

  
4
<form name="Form" method="post" action="login.pl">
5
<input type="hidden" name="action" value="login">
6

  
7
<p>[% 'There is already a taxkey 0 with tax rate not 0.' | $T8 %]</p>
8
<p>[% 'From this version on the taxkey 0 must have a tax rate of 0 (for DATEV compatibility).' | $T8 %]</p>
9
<p>[% 'To continue please change the taxkey 0 to another value.' | $T8 %]</p>
10
<p>[% 'Do not change the tax rate of taxkey 0.' | $T8 %]</p>
11
<p>[% 'During the next update a taxkey 0 with tax rate of 0 will automatically created.' | $T8 %]</p>
12
<p>[% 'Please contact your administrator.' | $T8 %]</p>
13

  
14
</form>
15

  

Auch abrufbar als: Unified diff