Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 543d7822

Von G. Richardson vor mehr als 5 Jahren hinzugefügt

  • ID 543d78225ec609e9f67ecb1544e135ca88149234
  • Vorgänger c3500451
  • Nachfolger cdd986ac

Spalte taxnumber aus Tabelle tax entfernt

tax.taxnumber war ein redundanter Eintrag, und entsprach dem Wert von
chart.accno aus tax.chart_id.

Z.B. in SKR04 hatte Steuerschlüssel 3 (Umsatzsteuer 19%) die taxnumber
1776 und die chart_id 775 (chart mit id 775 ist das Konto 1776).

Ein Problem dabei ist, daß wenn man in den Konteneinstellungen die
Kontonummer von 1776 ändert, dies nicht automatisch in tax.taxnumber mit
aktualisiert wurde.

Im Code wurde taxnumber v.A. verwendet, um bei Belegen die Steuern zu
gruppieren, mit der taxnumber als Schlüssel.

taxnumber wurde nun also entfernt, und obwohl zum Gruppieren der Steuern
immer noch diese Kontonummer verwendet wird, wird diese Kontonummer
nicht mehr zum Suchen des entsprechenden Taxeintrags verwendet, sondern
die Suche passiert indirekt über die chart_id.

Das ganze System basiert derzeit darauf, daß es für jeden tax-Eintrag ein
eindeutiges Automatikkonto gibt, in der Praxis muß dies aber nicht der
Fall sein!

Unterschiede anzeigen:

SL/IS.pm
506 506
    push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate_nofmt} },  $form->{"${item}_rate"} * 100);
507 507
    push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} },      $form->{"${item}_taxnumber"});
508 508

  
509
    my $tax_obj     = SL::DB::Manager::Tax->find_by(taxnumber => $form->{"${item}_taxnumber"});
509
    # taxnumber is used for grouping the amount of the various taxes
510

  
511
    # this code assumes that at most one tax entry can point to the same
512
    # chart_id, even though chart_id does not have a unique constraint!
513

  
514
    # this chart_id is then looked up via its accno, which is the key that is
515
    # used to group the different taxes by for a record
516

  
517
    # not every tax has a taxnumber (e.g. tax-free), but that is ok, because
518
    # then there would be no tax amount to assign it to
519

  
520
    my $tax_objs = SL::DB::Manager::Tax->get_objects_from_sql(
521
      sql  => 'SELECT * FROM tax WHERE chart_id = (SELECT id FROM chart WHERE accno = ?)',
522
      args => [ $form->{"${item}_taxnumber"} ]
523
    );
524
    my $tax_obj;
525
    if ( $tax_objs ) {
526
      $tax_obj     = $tax_objs->[0];
527
    }
510 528
    my $description = $tax_obj ? $tax_obj->translated_attribute('taxdescription',  $form->{language_id}, 0) : '';
511 529
    push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $description . q{ } . 100 * $form->{"${item}_rate"} . q{%});
512 530
  }
......
2069 2087
      # get tax rates and description
2070 2088
      my $accno_id = ($form->{vc} eq "customer") ? $ref->{income_accno} : $ref->{expense_accno};
2071 2089
      $query =
2072
        qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber FROM tax t
2090
        qq|SELECT c.accno, t.taxdescription, t.rate, c.accno as taxnumber
2091
           FROM tax t
2073 2092
           LEFT JOIN chart c ON (c.id = t.chart_id)
2074 2093
           WHERE t.id IN
2075 2094
             (SELECT tk.tax_id FROM taxkeys tk
......
2393 2412
    # get tax rates and description
2394 2413
    my $accno_id = ($form->{vc} eq "customer") ? $ref->{income_accno} : $ref->{expense_accno};
2395 2414
    $query =
2396
      qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber
2415
      qq|SELECT c.accno, t.taxdescription, t.rate, c.accno as taxnumber
2397 2416
         FROM tax t
2398 2417
         LEFT JOIN chart c ON (c.id = t.chart_id)
2399 2418
         WHERE t.id in

Auch abrufbar als: Unified diff