$item->marge_percent(0);
} else {
- my $lastcost = ! ($item->lastcost * 1) ? ($item->part->lastcost || 0) : $item->lastcost;
+ my $lastcost = ! ($item->lastcost * 1) ? ($item->part->lastcost || 0) : $item->lastcost;
+ my $linetotal_cost = _round($lastcost * $item->qty / $item->marge_price_factor, 2);
- $item->marge_total( $linetotal - $lastcost / $item->marge_price_factor);
+ $item->marge_total( $linetotal - $linetotal_cost);
$item->marge_percent($item->marge_total * 100 / $linetotal);
$self->marge_total( $self->marge_total + $item->marge_total);
- $data->{lastcost_total} += $lastcost;
+ $data->{lastcost_total} += $linetotal_cost;
}
my $taxkey = $item->part->get_taxkey(date => $self->transdate, is_sales => $data->{is_sales}, taxzone => $self->taxzone_id);
my $chart = $item->part->get_chart(type => $data->{is_sales} ? 'income' : 'expense', taxzone => $self->taxzone_id);
$data->{amounts}->{ $chart->id } ||= { taxkey => $taxkey->taxkey_id, tax_id => $taxkey->tax_id, amount => 0 };
$data->{amounts}->{ $chart->id }->{amount} += $linetotal;
+ $data->{amounts}->{ $chart->id }->{amount} -= $tax_amount if $self->taxincluded;
push @{ $data->{assembly_items} }, [];
if ($item->part->is_assembly) {