PriceSources: Fehlerbehandlung in PriceRules.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Fri, 23 Oct 2015 19:49:25 +0000 (21:49 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Fri, 23 Oct 2015 20:01:23 +0000 (22:01 +0200)
SL/PriceSource/PriceRules.pm
locale/de/all
locale/en/all

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 {
index 3d86bbd..4191dab 100755 (executable)
@@ -2798,9 +2798,13 @@ $self->{texts} = {
   'The predefined text has been saved.' => 'Der vordefinierte Textblock wurde gespeichert.',
   'The predefined text is in use and cannot be deleted.' => 'Der vordefinierte Textblock wird verwendet und kann nicht gelöscht werden.',
   'The preferred one is to install packages provided by your operating system distribution (e.g. Debian or RPM packages).' => 'Die bevorzugte Art, ein Perl-Modul zu installieren, ist durch Installation eines von Ihrem Betriebssystem zur Verf&uuml;gung gestellten Paketes (z.B. Debian-Pakete oder RPM).',
+  'The price rule for this discount does not exist anymore' => 'Die Preisregel für diesen Rabatt existiert nicht mehr',
+  'The price rule for this price does not exist anymore' => 'Die Preisregel für diesen Preis existiert nicht mehr',
   'The price rule has been created.' => 'Die Preisregel wurde angelegt.',
   'The price rule has been deleted.' => 'Die Preisregel wurde gelöscht.',
   'The price rule has been saved.' => 'Die Preisregel wurde gespeichert.',
+  'The price rule is not a rule for discounts' => 'Die Preisregel ist keine Regel für Rabatte',
+  'The price rule is not a rule for prices' => 'Die Preisregel ist keine Regel für Preise',
   'The printer could not be deleted.' => 'Der Drucker konnte nicht gelöscht werden.',
   'The printer has been created.' => 'Der Drucker wurde angelegt.',
   'The printer has been deleted.' => 'Der Drucker wurde entfernt.',
index c69f7b7..4141d79 100644 (file)
@@ -2213,6 +2213,10 @@ $self->{texts} = {
   'The payment term is in use and cannot be deleted.' => '',
   'The payments have been posted.' => '',
   'The preferred one is to install packages provided by your operating system distribution (e.g. Debian or RPM packages).' => '',
+  'The price rule for this discount does not exist anymore' => '',
+  'The price rule for this price does not exist anymore' => '',
+  'The price rule is not a rule for discounts' => '',
+  'The price rule is not a rule for prices' => '',
   'The printer could not be deleted.' => '',
   'The printer has been created.' => '',
   'The printer has been deleted.' => '',