Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0e83d54d

Von Sven Schöling vor mehr als 5 Jahren hinzugefügt

  • ID 0e83d54de99fbb7e0ab6471eb2c70db9a0b53466
  • Vorgänger 19df37e1
  • Nachfolger fbd33694

PTC: Fehlerhafte ungerundete Berechnung von grossamount

Bei Rechnungen mit sehr vielen sehr kleinen Positionen wurde die
Rundungsfehlerakkumulation nur in den finalen netamounts
berücksichtigt, nicht aber in den daraus berechneten grossamounts was zu
Cent-Abweichungen geführt hat.

(cherry picked from commit 061180a3a9cd5ddffc5d9b40fc1751653fc8ef09)

Unterschiede anzeigen:

SL/DB/Helper/PriceTaxCalculator.pm
145 145
    die "tax_amount != 0 but no chart_id for taxkey " . $taxkey->id . " tax " . $taxkey->tax->id;
146 146
  }
147 147

  
148
  $self->netamount($self->netamount + $sellprice * (1 - $item->discount) * $item->qty / $item->price_factor);
149

  
150 148
  my $chart = $part->get_chart(type => $data->{is_sales} ? 'income' : 'expense', taxzone => $self->taxzone_id);
151 149
  $data->{amounts}->{ $chart->id }           ||= { taxkey => $taxkey->taxkey_id, tax_id => $taxkey->tax_id, amount => 0 };
152 150
  $data->{amounts}->{ $chart->id }->{amount}  += $linetotal;
......
187 185
    $data->{taxes}->{$chart_id}  = $rounded;
188 186
  }
189 187

  
188
  $self->netamount(sum map { $_->{amount} } values %{ $data->{amounts} });
189

  
190 190
  my $amount    = _round(($self->netamount + $tax_diff) * $data->{exchangerate}, 2);
191 191
  my $diff      = $amount - ($self->netamount + $tax_diff) * $data->{exchangerate};
192 192
  my $netamount = $amount;

Auch abrufbar als: Unified diff