items => [ ],
);
- _get_exchangerate($self, \%data, %params);
+ # set exchangerate in $data>{exchangerate}
+ if ( ref($self) eq 'SL::DB::Order' ) {
+ # orders store amount in the order currency
+ $data{exchangerate} = 1;
+ } else {
+ # invoices store amount in the default currency
+ _get_exchangerate($self, \%data, %params);
+ # $data{exchangerate} = $self->exchangerate; # untested alternative for setting exchangerate
+ };
$self->netamount( 0);
$self->marge_total(0);
$item->marge_percent(0);
} else {
- my $lastcost = ! ($item->lastcost * 1) ? ($part->lastcost || 0) : $item->lastcost;
+ my $lastcost = !(($item->lastcost // 0) * 1) ? ($part->lastcost || 0) : $item->lastcost;
$linetotal_cost = _round($lastcost * $item->qty / $item->marge_price_factor, 2);
$item->marge_total( $linetotal - $linetotal_cost);