SKR04 innergemeinschaftlicher Erwerb: 19% Umsatzsteuer nachgeliefert
authorG. Richardson <information@lx-office-hosting.de>
Thu, 4 Mar 2010 14:56:10 +0000 (15:56 +0100)
committerG. Richardson <information@lx-office-hosting.de>
Fri, 5 Mar 2010 14:28:35 +0000 (15:28 +0100)
* Konto 3804 hinzufügen (Umsatzsteuer aus EG-Erwerb 19%) für
* Konto 3803 auf 16% gesetzt
* Steuerklasse 13 erweitert

Wurde Konto 3803 nach dem 01.01.2007 bebucht wird Upgrade übersprungen
Gibt es das Konto 3804 schon wird Upgrade übersprungen

Dokumentation wie man die Änderungen manuell nachstellen kann, für den Fall,
daß Upgrade nicht automatisch durchgeführt wurde

12 files changed:
doc/skr04-update-3804/konto3804.png [new file with mode: 0644]
doc/skr04-update-3804/konto4315.png [new file with mode: 0644]
doc/skr04-update-3804/skr04_3804_hinzufuegen.html [new file with mode: 0644]
doc/skr04-update-3804/steuer3803.png [new file with mode: 0644]
doc/skr04-update-3804/steuer3804.png [new file with mode: 0644]
doc/skr04-update-3804/steuerliste.png [new file with mode: 0644]
locale/de/all
sql/Pg-upgrade2/SKR04-3804-addition.pl [new file with mode: 0644]
templates/webpages/dbupgrade/SKR04_3804_already_exists_de.html [new file with mode: 0644]
templates/webpages/dbupgrade/SKR04_3804_already_exists_master.html [new file with mode: 0644]
templates/webpages/dbupgrade/SKR04_3804_update_de.html [new file with mode: 0644]
templates/webpages/dbupgrade/SKR04_3804_update_master.html [new file with mode: 0644]

diff --git a/doc/skr04-update-3804/konto3804.png b/doc/skr04-update-3804/konto3804.png
new file mode 100644 (file)
index 0000000..e66b66a
Binary files /dev/null and b/doc/skr04-update-3804/konto3804.png differ
diff --git a/doc/skr04-update-3804/konto4315.png b/doc/skr04-update-3804/konto4315.png
new file mode 100644 (file)
index 0000000..d9971cf
Binary files /dev/null and b/doc/skr04-update-3804/konto4315.png differ
diff --git a/doc/skr04-update-3804/skr04_3804_hinzufuegen.html b/doc/skr04-update-3804/skr04_3804_hinzufuegen.html
new file mode 100644 (file)
index 0000000..14a49ed
--- /dev/null
@@ -0,0 +1,54 @@
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Lx-Office: SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</title>
+</head>
+<body>
+
+<h1>Umsatzsteuer 19% für Verkauf mit Steuerschlüssel "EU ohne USt.-IdNr.":</h1>
+
+Die Umsatzsteuerumstellung auf 19% für SKR04 für die Steuerschlüssel "EU ohne
+USt-ID Nummer" ist erst 2010 erfolgt. Das Upgradeskript erstellt automatisch
+das Konto 3804 und stellt die Steuereinstellungen korrekt ein, hat der Benutzer
+aber schon selber das Konto 3804 angelegt, oder gab es schon Buchungen im
+Zeitraum nach dem 01.01.2007 auf das Konto 3803, wird das Upgradeskript
+vorsichtshalber nicht ausgeführt, da der Benutzer sich vielleicht schon selbst
+geholfen hat und mit seinen Änderungen zufrieden ist. Die korrekten
+Einstellungen kann man aber auch per Hand ausführen, nachfolgend werden die
+entsprechenden Schritte anhand von Screenshots dargestellt.
+
+Für den Fall, daß Buchungen mit der Steuerschlüssel "EU ohne USt.-IdNr." nach dem
+01.01.2007 erfolgt sind, ist davon auszugehen, daß diese mit dem alten
+Umsatzsteuersatz von 16% gebucht worden sind, und diese Buchungen sollten
+entsprechend kontrolliert werden.
+
+<h2>Lx-Office: 3804 hinzufügen</h2>
+Konto 3804 anlegen:<br>
+
+System -> Kontenübersicht -> Konto erfassen<br>
+
+<img src="konto3804.png" alt="konto3804.png">
+
+
+<h2>Steuergruppe 13 für Konto 3803 anpassen (16%):</h2>
+System -> Steuern -> bearbeiten -> Eintrag mit Steuerschlüssel 13 auswählen<br>
+
+<img src="steuer3803.png" alt="steuer3803.png">
+
+<h2>Neuen Eintrag mit Steuerschlüssel 13 für Konto 3804 (19%) anlegen</h2>
+System -> Steuern -> bearbeiten -> erfassen<br>
+
+<img src="steuer3804.png" alt="steuer3804.png">
+<h2>Alle Konten, die als Steuerautomatikkonto die 3803 haben, kriegen ab 1.1.2007 auch Steuerautomatik auf 3804</h2>
+
+Steuerschlüssel für Konto 4315 anpassen (das gleiche für 4726) <br>
+
+System -> Kontenübersicht -> Konten anzeigen -> 4315<br>
+
+<img src="konto4315.png" alt="konto4315.png">
+
+<h2>Steuerliste kontrolllieren</h2>
+System -> Steuern -> bearbeiten
+
+<img src="steuerliste.png" alt="steuerliste.png">
+
+</body></html>
diff --git a/doc/skr04-update-3804/steuer3803.png b/doc/skr04-update-3804/steuer3803.png
new file mode 100644 (file)
index 0000000..361c0b3
Binary files /dev/null and b/doc/skr04-update-3804/steuer3803.png differ
diff --git a/doc/skr04-update-3804/steuer3804.png b/doc/skr04-update-3804/steuer3804.png
new file mode 100644 (file)
index 0000000..fad5986
Binary files /dev/null and b/doc/skr04-update-3804/steuer3804.png differ
diff --git a/doc/skr04-update-3804/steuerliste.png b/doc/skr04-update-3804/steuerliste.png
new file mode 100644 (file)
index 0000000..2c4945c
Binary files /dev/null and b/doc/skr04-update-3804/steuerliste.png differ
index 35e8d33..442fb7b 100644 (file)
@@ -1184,6 +1184,7 @@ $self->{texts} = {
   'Please insert your longdescription below' => 'Bitte den Langtext eingeben',
   'Please install the below listed modules or ask your system administrator to.' => 'Bitte installieren Sie die unten aufgef&uuml;hrten Module, oder bitten Sie Ihren Administrator darum.',
   'Please re-run the analysis for broken general ledger entries by clicking this button:' => 'Bitte wiederholen Sie die Analyse der Hauptbucheinträge, indem Sie auf diesen Button klicken:',
+  'Please read the file'        => 'Bitte lesen Sie die Datei',
   'Please select a customer from the list below.' => 'Bitte einen Endkunden aus der Liste auswählen',
   'Please select a part from the list below.' => 'Bitte w&auml;hlen Sie einen Artikel aus der Liste aus.',
   'Please select a vendor from the list below.' => 'Bitte einen Händler aus der Liste auswählen',
@@ -1532,6 +1533,8 @@ $self->{texts} = {
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
   'The SEPA export has been created.' => 'Der SEPA-Export wurde erstellt',
   'The access rights have been saved.' => 'Die Zugriffsrechte wurden gespeichert.',
+  'The account 3804 already exists, the update will be skipped.' => 'Das Konto 3804 existiert schon, das Update wird übersprungen.',
+  'The account 3804 will not be added automatically.' => 'Das Konto 3804 wird nicht automatisch hinzugefügt.',
   'The assembly has been created.' => 'Das Erzeugnis wurde hergestellt.',
   'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => 'Der Korrekturassistent konnte kein Problem bei #1 feststellen. Eventuell wurde das Problem in der Zwischenzeit bereits behoben.',
   'The authentication configuration file &quot;config/authentication.pl&quot; does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => 'Die Konfigurationsdatei f&uuml;r die Authentifizierung &quot;config/authentication.pl&quot; wurde nicht gefunden. Diese Lx-Office-Installation wurde vermutlich noch nicht vollst&auml;ndig aktualisiert oder eingerichtet. Bitte wenden Sie sich an Ihren Administrator.',
@@ -1647,6 +1650,7 @@ $self->{texts} = {
   'There are #1 more open invoices for this customer with other currencies.' => 'Es gibt #1 weitere offene Rechnungen für diesen Kunden, die in anderen Währungen ausgestellt wurden.',
   'There are #1 more open invoices from this vendor with other currencies.' => 'Es gibt #1 weitere offene Rechnungen von diesem Lieferanten, die in anderen Währungen ausgestellt wurden.',
   'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+  'There are bookings to the account 3803 after 01.01.2007. If you didn\'t change this account manually to 19% the bookings are probably incorrect.' => 'Das Konto 3803 wurde nach dem 01.01.2007 bebucht. Falls Sie dieses Konto nicht manuell auf 19% gestellt haben sind die Buchungen wahrscheinlich mit falscher Umsatzsteuer gebucht worden.',
   'There are four tax zones.'   => 'Es gibt vier Steuerzonen.',
   'There are no items in stock.' => 'Dieser Artikel ist nicht eingelagert.',
   'There are no items on your TODO list at the moment.' => 'Ihre Aufgabenliste enth&auml;lt momentan keine Eintr&auml;ge.',
@@ -1755,6 +1759,7 @@ $self->{texts} = {
   'Update'                      => 'Erneuern',
   'Update Dataset'              => 'Datenbank aktualisieren',
   'Update Prices'               => 'Preise aktualisieren',
+  'Update SKR04: new tax account 3804 (19%)' => 'Update SKR04: neues Steuerkonto 3804 (19%) für innergemeinschaftlichen Erwerb',
   'Update complete'             => 'Update beendet.',
   'Update prices'               => 'Preise aktualisieren',
   'Update?'                     => 'Aktualisieren?',
diff --git a/sql/Pg-upgrade2/SKR04-3804-addition.pl b/sql/Pg-upgrade2/SKR04-3804-addition.pl
new file mode 100644 (file)
index 0000000..ccea7e9
--- /dev/null
@@ -0,0 +1,136 @@
+# @tag: SKR04-3804-addition
+# @description: Konto 3804 zu SKR04 hinzufügen: Umsatzsteuer 19% für Steuerschlüssel 13 (Umsatzsteuer aus EG-Erwerb)
+# @depends:
+# @charset: UTF-8
+
+use strict;
+
+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 {
+
+  # 1. Überprüfen ob Kontenrahmen SKR04 ist, wenn nicht alles überspringen
+  my ($kontenrahmen) = $dbh->selectrow_array("select coa from defaults");
+
+  unless ( $kontenrahmen eq 'Germany-DATEV-SKR04EU' ) {
+    print "Kontenrahmen ist nicht SKR04, überspringen<br>";
+    return 1;
+  };
+
+  # Mandant hat SKR04, erst prüfen wir, ob in der Vergangenheit Buchungen mit
+  # taxkey 13 erfolgt sind (Fall "EU ohne USt. ID), diese sind wahrscheinlich
+  # mit der falschen MwSt (16%) gebucht worden, wenn dies nicht manuell
+  # geändert worden ist
+
+  my ($anzahl_buchungen) = $dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';");
+  if ( $anzahl_buchungen > 0 ) {
+    if ($main::form->{bookings_exist} ) {
+      # Benutzer hat Meldung bestätigt
+      print "Buchungen nach dem 01.01.2007 existierten, Upgrade überspringen";
+      return 1;  
+    } else {
+      # Meldung anzeigen und auf Rückgabe warten
+      print_past_booking_warning();
+      return 2;
+    };
+  } else {  # es gibt keine Buchungen mit taxkey 13 nach 01.01.2007
+  
+    # prüfen ob Konto 3804 schon existiert
+    my ($konto_existiert) = $dbh->selectrow_array("select count (*) from chart where accno = '3804'");
+    if ( $konto_existiert ) {
+      # 3804 existiert, wir gehen davon aus, daß der Benutzer das Konto schon selber angelegt hat und
+      # ordnungsgemäß benutzt
+
+      if ($main::form->{account_exists} ) {
+      # Benutzer hat Meldung bestätigt
+        print "Konto existiert, Upgrade überspringen\n";
+        return 1;  
+      } else {
+        # Meldung anzeigen und auf Rückgabe warten
+        print_3804_already_exists();
+        return 2;
+      };
+    } else {
+
+    # noch keine Buchungen mit taxkey 13 und Konto 3804 existiert noch nicht,
+    # also legen wir es an und machen noch die nötigen Einstellungen in tax und
+    # taxkeys
+
+        my $insert_chart = <<SQL;
+INSERT INTO chart (
+  accno, description,
+  charttype,   category,  link,
+  taxkey_id, pos_eur
+  )
+SELECT
+  '3804','Umsatzsteuer aus EG-Erwerb 19%',
+  'A','I','AR_tax:IC_taxpart:IC_taxservice',
+  0, (select pos_eur from chart where accno = '3803')
+WHERE EXISTS ( -- update only for SKR04, aber eigentlich schon überprüft
+    SELECT coa FROM defaults
+    WHERE defaults.coa='Germany-DATEV-SKR04EU'
+);
+SQL
+
+        do_query($insert_chart);
+
+        my $konto_anlegen = $dbh->prepare($insert_chart) || mydberror($insert_chart);
+
+
+        # 13-1 (16%) korrigieren:
+        my $edit_taxkey_13 = qq|UPDATE tax SET taxdescription = 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', rate = '0.16', chart_id = (select id FROM chart where accno = '3803'), taxnumber = 3803 WHERE taxkey = '13'|;
+        do_query($edit_taxkey_13);
+
+        # Sicherstellen, daß 3803 die richtige Bezeichnung hat
+        my $update_3803 = qq|update chart set description = 'Umsatzsteuer aus EG-Erwerb 16%' where accno = '3803'|;
+        do_query($update_3803);
+
+        # Zweiter  Eintrag für taxkey 13 in key: 19%
+        my $insert_taxkey_13_2 = qq|INSERT INTO tax ( taxkey, taxdescription, rate, chart_id, taxnumber ) VALUES ('13', 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', '0.19', (select id from chart where accno = '3804'), '3804')|;
+
+        do_query($insert_taxkey_13_2);
+
+        # alle Konten finden, bei denen 3803 das Steuerautomatikkonto ist,
+        # und dort den zweiten Eintrag ab 1.1.2007 für 19% einstellen
+        my $sth_query  = $dbh->prepare(qq|select c.id from chart c join taxkeys t on (c.id = t.chart_id) where tax_id = (select id from tax where taxnumber = '3803')|);
+        my $sth_insert = $dbh->prepare(qq|INSERT INTO taxkeys ( taxkey_id, chart_id, tax_id, pos_ustva, startdate )
+                                                       VALUES (13, ?, (select id from tax where taxkey = 13 and rate = '0.19'),
+            (select pos_ustva from taxkeys where tax_id = (select id from tax where taxnumber = '3803') and pos_ustva > 0 limit 1),
+            '01.01.2007')|);
+        $sth_query->execute();
+
+        while (my $ref = $sth_query->fetchrow_hashref()) {
+          $sth_insert->execute($ref->{id});
+        }
+        $sth_query->finish();
+        $sth_insert->finish();
+
+      }; # end code update
+  }; # end check if 3804 exists
+
+}; # end do_update
+
+sub print_past_booking_warning {
+  print $main::form->parse_html_template("dbupgrade/SKR04_3804_update");
+};
+sub print_3804_already_exists {
+  print $main::form->parse_html_template("dbupgrade/SKR04_3804_already_exists");
+};
+
+return do_update();
diff --git a/templates/webpages/dbupgrade/SKR04_3804_already_exists_de.html b/templates/webpages/dbupgrade/SKR04_3804_already_exists_de.html
new file mode 100644 (file)
index 0000000..7c2ecd0
--- /dev/null
@@ -0,0 +1,11 @@
+[% USE HTML %]<div class="listtop">Update SKR04: neues Steuerkonto 3804 (19%) für innergemeinschaftlichen Erwerb</div>
+
+<form action="[% script %]" method="POST">
+
+<p>Das Konto 3804 existiert schon, das Update wird übersprungen.</p>
+<p>Bitte lesen Sie die Dateidoc/skr04-update-3804/skr04_3804_hinzufuegen.html.
+
+<input type="hidden" name="account_exists" value="1">
+<input type="submit" value="Weiter">
+
+
diff --git a/templates/webpages/dbupgrade/SKR04_3804_already_exists_master.html b/templates/webpages/dbupgrade/SKR04_3804_already_exists_master.html
new file mode 100644 (file)
index 0000000..ba36b3e
--- /dev/null
@@ -0,0 +1,11 @@
+[% USE HTML %]<div class="listtop"><translate>Update SKR04: new tax account 3804 (19%)</translate></div>
+
+<form action="[% script %]" method="POST">
+
+<p><translate>The account 3804 already exists, the update will be skipped.</translate></p>
+<p><translate>Please read the file</translate>doc/skr04-update-3804/skr04_3804_hinzufuegen.html.
+
+<input type="hidden" name="account_exists" value="1">
+<input type="submit" value="<translate>Continue</translate>">
+
+
diff --git a/templates/webpages/dbupgrade/SKR04_3804_update_de.html b/templates/webpages/dbupgrade/SKR04_3804_update_de.html
new file mode 100644 (file)
index 0000000..2641022
--- /dev/null
@@ -0,0 +1,12 @@
+[% USE HTML %]<div class="listtop">Update SKR04: neues Steuerkonto 3804 (19%) für innergemeinschaftlichen Erwerb</div>
+
+<form action="[% script %]" method="POST">
+
+<p>Das Konto 3803 wurde nach dem 01.01.2007 bebucht. Falls Sie dieses Konto nicht manuell auf 19% gestellt haben sind die Buchungen wahrscheinlich mit falscher Umsatzsteuer gebucht worden.</p>
+<p>Das Konto 3804 wird nicht automatisch hinzugefügt.</p>
+<p>Bitte lesen Sie die Dateidoc/skr04-update-3804/skr04_3804_hinzufuegen.html</p>
+
+<input type="hidden" name="bookings_exist" value="1">
+<input type="submit" value="Weiter">
+
+
diff --git a/templates/webpages/dbupgrade/SKR04_3804_update_master.html b/templates/webpages/dbupgrade/SKR04_3804_update_master.html
new file mode 100644 (file)
index 0000000..b706a83
--- /dev/null
@@ -0,0 +1,12 @@
+[% USE HTML %]<div class="listtop"><translate>Update SKR04: new tax account 3804 (19%)</translate></div>
+
+<form action="[% script %]" method="POST">
+
+<p><translate>There are bookings to the account 3803 after 01.01.2007. If you didn't change this account manually to 19% the bookings are probably incorrect.</translate></p>
+<p><translate>The account 3804 will not be added automatically.</translate></p>
+<p><translate>Please read the file</translate>doc/skr04-update-3804/skr04_3804_hinzufuegen.html</p>
+
+<input type="hidden" name="bookings_exist" value="1">
+<input type="submit" value="<translate>Continue</translate>">
+
+