Steuerzone - Default eingeführt (statt id 0)
authorG. Richardson <information@kivitendo-premium.de>
Thu, 31 Jul 2014 08:21:02 +0000 (10:21 +0200)
committerG. Richardson <information@kivitendo-premium.de>
Mon, 4 Aug 2014 15:31:41 +0000 (17:31 +0200)
Als Defaultsteuerzone gilt nun die Steuerzone mit dem höchsten Sortcode, der
nicht obsolet ist (in der Regel also id 1).

Bernd hatte noch ein paar Stellen gefunden, wo als Default 0 gesetzt wird.
Außerdem Doku angepasst, taxzone_id ist nun nicht mehr im Bereich 0-3.

SL/DB/Buchungsgruppe.pm
SL/DB/Manager/TaxZone.pm
SL/DB/Part.pm
SL/IR.pm
SL/IS.pm

index e71d0f2..1b5bdad 100644 (file)
@@ -103,26 +103,25 @@ SL::DB::Buchungsgruppe - RDBO wrapper for the C<buchungsgruppen> table
 =item C<expense_accno_id $taxzone>
 
 Return the chart ID for the expense account for the given taxzone
-(either an integer between 0 and 3 inclusively or an instance of
-L<SL::DB::TaxZone>).
+(either the DB id or an instance of L<SL::DB::TaxZone>).
 
 =item C<expense_account>
 
 Return the chart (an instance of L<SL::DB::Chart>) for the expense
-account for the given taxzone (either an integer between 0 and 3
-inclusively or an instance of L<SL::DB::TaxZone>).
+account for the given taxzone (either the DB id or an instance of
+L<SL::DB::TaxZone>).
 
 =item C<income_accno_id>
 
 Return the chart ID for the income account for the given taxzone
-(either an integer between 0 and 3 inclusively or an instance of
+(either the DB id or an instance of L<SL::DB::TaxZone>).
 L<SL::DB::TaxZone>).
 
 =item C<income_account>
 
 Return the chart (an instance of L<SL::DB::Chart>) for the income
-account for the given taxzone (either an integer between 0 and 3
-inclusively or an instance of L<SL::DB::TaxZone>).
+account for the given taxzone (either the DB id or an instance of
+L<SL::DB::TaxZone>).
 
 =back
 
index 6d61fad..25ec442 100644 (file)
@@ -17,4 +17,36 @@ sub _sort_spec {
            columns => { SIMPLE => 'ALL' } );
 }
 
+sub get_default {
+    return $_[0]->get_first(where => [ obsolete => 0 ], sort_by => 'sortkey');
+}
+
 1;
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::DB::Manager::TaxZone - RDBO manager for the C<tax_zones> table
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<get_default>
+
+Returns an RDBO instance corresponding to the default taxzone. The default
+taxzone is defined as the taxzone with the highest sort order (usually 1) that
+is not set to obsolete.
+
+Example:
+
+  my $default_taxzone_id = SL::DB::Manager::TaxZone->get_default->id;
+
+
+=back
+
+=cut
index adb650e..a25b64a 100644 (file)
@@ -318,7 +318,7 @@ This function looks up the income (for trueish values of
 C<$params{is_sales}>) or expense (for falsish values of
 C<$params{is_sales}>) account for the current part. It uses the part's
 associated buchungsgruppe and uses the fields belonging to the tax
-zone given by C<$params{taxzone}> (range 0..3).
+zone given by C<$params{taxzone}>.
 
 The information retrieved by the function is cached.
 
@@ -330,8 +330,7 @@ C<$params{type}> and tax zone C<$params{taxzone}>
 the three key words C<income>, C<expense> and C<inventory>.
 
 This function uses the part's associated buchungsgruppe and uses the
-fields belonging to the tax zone given by C<$params{taxzone}> (range
-0..3).
+fields belonging to the tax zone given by C<$params{taxzone}>.
 
 The information retrieved by the function is cached.
 
index c13d84b..f880f86 100644 (file)
--- a/SL/IR.pm
+++ b/SL/IR.pm
@@ -46,6 +46,7 @@ use SL::HTML::Restrict;
 use SL::IO;
 use SL::MoreCommon;
 use SL::DB::Default;
+use SL::DB::TaxZone;
 use List::Util qw(min);
 
 use strict;
@@ -672,6 +673,7 @@ sub post_invoice {
 
   # set values which could be empty
   my $taxzone_id         = $form->{taxzone_id} * 1;
+  $taxzone_id = SL::DB::Manager::TaxZone->get_default->id unless SL::DB::Manager::TaxZone->find_by(id => $taxzone_id);
 
   # Seit neuestem wird die department_id schon übergeben UND $form->department nicht mehr
   # korrekt zusammengebaut. Sehr wahrscheinlich beim Umstieg auf T8 kaputt gegangen
@@ -682,8 +684,6 @@ sub post_invoice {
   }
   $form->{invnumber}     = $form->{id} unless $form->{invnumber};
 
-  $taxzone_id = 0 if (3 < $taxzone_id) || (0 > $taxzone_id);
-
   # save AP record
   $query = qq|UPDATE ap SET
                 invnumber    = ?, ordnumber   = ?, quonumber     = ?, transdate   = ?,
@@ -963,9 +963,9 @@ sub retrieve_invoice {
   map { $form->{$_} = $ref->{$_} } keys %$ref;
 
   my $transdate  = $form->{invdate} ? $dbh->quote($form->{invdate}) : "current_date";
-  my $taxzone_id = $form->{taxzone_id} * 1;
 
-  $taxzone_id = 0 if ((3 < $taxzone_id) || (0 > $taxzone_id));
+  my $taxzone_id = $form->{taxzone_id} * 1;
+  $taxzone_id = SL::DB::Manager::TaxZone->get_default->id unless SL::DB::Manager::TaxZone->find_by(id => $taxzone_id);
 
   # retrieve individual items
   $query =
@@ -1219,7 +1219,7 @@ sub retrieve_item {
   }
 
   my $taxzone_id = $form->{taxzone_id} * 1;
-  $taxzone_id    = 0 if ((3 < $taxzone_id) || (0 > $taxzone_id));
+  $taxzone_id = SL::DB::Manager::TaxZone->get_default->id unless SL::DB::Manager::TaxZone->find_by(id => $taxzone_id);
 
   my $query =
     qq|SELECT
index a1fbeaf..51f3c1b 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -51,6 +51,7 @@ use SL::IO;
 use SL::TransNumber;
 use SL::DB::Default;
 use SL::DB::Tax;
+use SL::DB::TaxZone;
 use SL::TransNumber;
 use Data::Dumper;
 
@@ -1638,7 +1639,7 @@ sub retrieve_invoice {
 
 
     my $taxzone_id = $form->{taxzone_id} *= 1;
-    $taxzone_id = 0 if (0 > $taxzone_id) || (3 < $taxzone_id);
+    $taxzone_id = SL::DB::Manager::TaxZone->get_default->id unless SL::DB::Manager::TaxZone->find_by(id => $taxzone_id);
 
     # retrieve individual items
     $query =