]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/DB/AssortmentItem.pm
Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / DB / AssortmentItem.pm
index 1f53f969f041587bca1ad4e4ce1e5a6508cc25b4..6ed474f43465c7ec5631150b67046fe5a28c5ac7 100644 (file)
@@ -11,11 +11,22 @@ use Rose::DB::Object::Helpers qw(clone);
 
 __PACKAGE__->meta->initialize;
 
-sub linetotal {
-  my ($self) = @_;
-
-  return 0 unless $self->qty > 0 and $self->part->sellprice > 0;
-  return $self->qty * $self->part->sellprice / ( $self->part->price_factor_id ? $self->part->price_factor->factor : 1 );
+sub linetotal_sellprice {
+  my ($self, %params) = @_;
+
+  my $sellprice = $self->part->sellprice;
+  if ($params{pricegroup}) {
+    my $pricegroup = SL::DB::Manager::Pricegroup->find_by( pricegroup => $params{pricegroup});
+    die "Can't find pricegroup with name " . $params{pricegroup} unless $pricegroup;
+    $params{pricegroup_id} = $pricegroup->id if $pricegroup;
+  }
+  if ($params{pricegroup_id}) {
+    my $price = SL::DB::Manager::Price->find_by(pricegroup_id => $params{pricegroup_id}, parts_id => $self->part->id);
+    $sellprice = $price->price if $price;
+  }
+
+  return 0 unless $self->qty > 0 and $sellprice > 0;
+  return $self->qty * $sellprice / ( $self->part->price_factor_id ? $self->part->price_factor->factor : 1 );
 }
 
 sub linetotal_lastcost {