+ my $tax_diff = 0;
+ foreach my $chart_id (keys %{ $data->{taxes} }) {
+ my $rounded = _round($data->{taxes}->{$chart_id} * $data->{exchangerate}, 2);
+ $tax_diff += $data->{taxes}->{$chart_id} * $data->{exchangerate} - $rounded if $self->taxincluded;
+ $data->{taxes}->{$chart_id} = $rounded;
+ }
+
+ my $amount = _round(($self->netamount + $tax_diff) * $data->{exchangerate}, 2);
+ my $diff = $amount - ($self->netamount + $tax_diff) * $data->{exchangerate};
+ my $netamount = $amount;
+
+ if ($self->taxincluded) {
+ $data->{invoicediff} += $diff;
+ $data->{amounts}->{ $data->{last_incex_chart_id} }->{amount} += $data->{invoicediff} if $data->{last_incex_chart_id};
+ }
+
+ _dbg("Sna " . $self->netamount . " idiff " . $data->{invoicediff} . " tdiff ${tax_diff}");
+
+ my $tax = sum values %{ $data->{taxes} };
+ $data->{arap_amount} = $netamount + $tax;
+
+ $self->netamount( $netamount);
+ $self->amount( $netamount + $tax);
+ $self->marge_percent($self->netamount ? ($self->netamount - $data->{lastcost_total}) * 100 / $self->netamount : 0);