Steuern festsetzen
authorNiclas Zimmermann <niclas@kivitendo-premium.de>
Thu, 21 Feb 2013 10:58:38 +0000 (11:58 +0100)
committerNiclas Zimmermann <niclas@kivitendo-premium.de>
Fri, 22 Feb 2013 13:54:42 +0000 (14:54 +0100)
Dieser Commit macht Steuern unveränderbar, wenn mit diesen schon
gebucht wurde, d.h. ein Eintrag in der acc_trans steht. Man kann nur
noch Namen und Automatikkonten verändern. Weiterhin findet eine
Prüfung statt, ob Steuerschlüssel 0 ohne Steuern gespeichert wird.

Die Abfrage isblank war leider fehlerhaft und wurde ebenfalls ersetzt.
Bisher lieferte kivitendo auch Fehler, wenn man Namen von Konten
mit Steuerschlüssel 0 ändert. Das sollte nicht so sein.

SL/AM.pm
bin/mozilla/am.pl
locale/de/all
locale/en/all
templates/webpages/am/edit_tax.html

index c7a88d2..5645c4d 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -1779,7 +1779,9 @@ sub get_tax {
                    taxkey,
                    taxdescription,
                    round(rate * 100, 2) AS rate,
-                   chart_id
+                   chart_id, 
+                   (id IN (SELECT tax_id 
+                           FROM acc_trans)) AS tax_already_used
                  FROM tax
                  WHERE id = ? |;
 
index 2b7cdf8..bcb39d2 100644 (file)
@@ -1491,7 +1491,11 @@ sub edit_tax {
 
   $form->header();
 
+  #set readonly if the there are entries in acc_trans with the tax
+  my $readonly = $form->{tax_already_used} ? 'readonly' : '';
+
   my $parameters_ref = {
+    readonly => $readonly, 
   };
 
   # Ausgabe des Templates
@@ -1552,12 +1556,16 @@ sub save_tax {
 
   $main::auth->assert('config');
 
-  $form->isblank("rate", $locale->text('Taxrate missing!'));
-  $form->isblank("taxdescription", $locale->text('Taxdescription  missing!'));
-  $form->isblank("taxkey", $locale->text('Taxkey  missing!'));
+  $form->error($locale->text('Taxkey  missing!')) unless length($form->{taxkey}) != 0;
+  $form->error($locale->text('Taxdescription  missing!')) unless length($form->{taxdescription}) != 0;
+  $form->error($locale->text('Taxrate missing!')) unless length($form->{rate}) != 0;
 
   $form->{rate} = $form->parse_amount(\%myconfig, $form->{rate});
 
+  if ($form->{taxkey} == 0 and $form->{rate} > 0) {
+    $form->error($locale->text('Taxkey 0 is reserved for rate 0'));
+  }
+
   if ( $form->{rate} < 0 || $form->{rate} >= 100 ) {
     $form->error($locale->text('Tax Percent is a number between 0 and 100'));
   }
index 9e7f46f..1e8bbdd 100644 (file)
@@ -1858,6 +1858,7 @@ $self->{texts} = {
   'Taxes'                       => 'Steuern',
   'Taxkey'                      => 'Steuerschlüssel',
   'Taxkey  missing!'            => 'Steuerschlüssel fehlt!',
+  'Taxkey 0 is reserved for rate 0' => 'Der Steuerschlüssel 0 darf keinen Steuersatz über 0 haben.',
   'Taxkey_coa'                  => 'Steuerschlüssel',
   'Taxkeys and Taxreport Preferences' => 'Steuerautomatik und UStVA',
   'Taxlink_coa'                 => 'Steuerautomatik',
index 7734f90..d39b9ae 100644 (file)
@@ -1814,6 +1814,7 @@ $self->{texts} = {
   'Taxes'                       => '',
   'Taxkey'                      => '',
   'Taxkey  missing!'            => '',
+  'Taxkey 0 is reserved for rate 0' => '',
   'Taxkey_coa'                  => '',
   'Taxkeys and Taxreport Preferences' => '',
   'Taxlink_coa'                 => '',
index 832bd0f..e153d2f 100644 (file)
@@ -9,7 +9,7 @@
   <table width="100%">
    <tr>
     <td>[% 'tax_taxkey' | $T8 %]</td>
-    <td><input name="taxkey" size="2" value="[% HTML.escape(taxkey) %]"></td>
+    <td><input name="taxkey" size="2" value="[% HTML.escape(taxkey) %]" [% readonly %]></td>
    </tr>
 
    <tr>
@@ -19,7 +19,7 @@
 
    <tr>
     <td>[% 'tax_percent' | $T8 %]</td>
-    <td><input name="rate" size="10" value="[% HTML.escape(rate) %]"> %</td>
+    <td><input name="rate" size="10" value="[% HTML.escape(rate) %]" [% readonly %]> %</td>
    </tr>
 
    <tr>
@@ -42,7 +42,7 @@
 
   <input type="submit" class="submit" name="action" value="[% 'Save' | $T8 %]">
 
-  [% IF orphaned %]
+  [% IF orphaned AND NOT tax_already_used %]
   <input type="submit" class="submit" name="action" value="[% 'Delete' | $T8 %]">
   [% END %]