+  my $linetotal_cost = 0;
+
+  if (!$linetotal) {
+    $item->marge_total(  0);
+    $item->marge_percent(0);
+
+  } else {
+    my $lastcost       = !(($item->lastcost // 0) * 1) ? ($part->lastcost || 0) : $item->lastcost;
+    $linetotal_cost    = _round($lastcost * $item->qty / $item->marge_price_factor, 2);
+    my $linetotal_net  = $self->taxincluded ? $linetotal - $tax_amount : $linetotal;
+
+    $item->marge_total(  $linetotal_net - $linetotal_cost);
+    $item->marge_percent($item->marge_total * 100 / $linetotal_net);
+
+    $self->marge_total(  $self->marge_total + $item->marge_total);
+    $data->{lastcost_total} += $linetotal_cost;
+  }
+