PriceSources: Fehlerbehandlung in PriceRules.
[kivitendo-erp.git] / SL / PriceSource / PriceRules.pm
index 6685578..48ab563 100644 (file)
@@ -45,22 +45,40 @@ sub price_from_source {
   my ($self, $source, $spec) = @_;
 
   my $rule = SL::DB::Manager::PriceRule->find_by(id => $spec);
+
+  return SL::PriceSource::Discount->new(
+    price_source => $self,
+    missing      => t8('The price rule for this price does not exist anymore'),
+  ) if !$rule;
+
   if ($rule->price_type != SL::DB::Manager::PriceRule::PRICE_DISCOUNT()) {
     return $self->make_price_from_rule($rule);
+  } else {
+    return SL::PriceSource::Price->new(
+      price_source => $self,
+      invalid      => t8('The price rule is not a rule for prices'),
+    );
   }
-
-  return;
 }
 
 sub discount_from_source {
   my ($self, $source, $spec) = @_;
 
   my $rule = SL::DB::Manager::PriceRule->find_by(id => $spec);
+
+  return SL::PriceSource::Discount->new(
+    price_source => $self,
+    missing      => t8('The price rule for this discount does not exist anymore'),
+  ) if !$rule;
+
   if ($rule->price_type == SL::DB::Manager::PriceRule::PRICE_DISCOUNT()) {
     return $self->make_discount_from_rule($rule);
+  } else {
+    return SL::PriceSource::Discount->new(
+      price_source => $self,
+      invalid      => t8('The price rule is not a rule for discounts'),
+    );
   }
-
-  return;
 }
 
 sub best_price {