PriceRule: Bessere Validierung für fehlerhafte Regeln
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 17 Apr 2015 15:44:58 +0000 (17:44 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 17 Apr 2015 15:44:58 +0000 (17:44 +0200)
SL/DB/PriceRule.pm
SL/DB/PriceRuleItem.pm
locale/de/all

index e33b3a3..6643637 100644 (file)
@@ -97,6 +97,7 @@ sub validate {
   push @errors, $::locale->text('The name must not be empty.')              if !$self->name;
   push @errors, $::locale->text('Price or discount must not be zero.')      if !$self->price && !$self->discount && !$self->reduction;
   push @errors, $::locale->text('Pirce rules must have at least one rule.') if !@{[ $self->items ]};
+  push @errors, $_->validate                                                for $self->items;
 
   return @errors;
 }
index 3fc39df..8aa71da 100644 (file)
@@ -132,4 +132,15 @@ sub full_description {
   : do { die "unknown type $type" }
 }
 
+sub validate {
+  my ($self) = @_;
+
+  my @errors;
+  push @errors, t8('Rule for part must not be empty')     if $self->type eq 'part'     && !$self->value_int;
+  push @errors, t8('Rule for customer must not be empty') if $self->type eq 'customer' && !$self->value_int;
+  push @errors, t8('Rule for vendor must not be empty')   if $self->type eq 'vendor'   && !$self->value_int;
+
+  return @errors;
+}
+
 1;
index d12ec14..0daacd2 100755 (executable)
@@ -172,7 +172,6 @@ $self->{texts} = {
   'Add User Group'              => 'Neue Benutzergruppe',
   'Add Vendor'                  => 'Lieferant erfassen',
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
-  'Add Vendor Letter'           => '',
   'Add Warehouse'               => 'Lager erfassen',
   'Add and edit units'          => 'Einheiten erfassen und bearbeiten',
   'Add bank account'            => 'Bankkonto erfassen',
@@ -2146,6 +2145,9 @@ $self->{texts} = {
   'Row was linked to another record' => 'Zeile wurde über einen anderen Beleg verlinkt',
   'Row was source for current record' => 'Zeile war Quelle für aktuellen Beleg',
   'Rule Details'                => 'Regel Details',
+  'Rule for customer must not be empty' => 'Eine Kundenbedingung darf nicht leer sein',
+  'Rule for part must not be empty' => 'Eine Warenbedingung darf nicht leer sein',
+  'Rule for vendor must not be empty' => 'Eine Lieferantenbedingung darf nicht leer sein',
   'Run JavaScript unit tests'   => 'JavaScript-Unit-Tests ausführen',
   'Run at'                      => 'Ausgeführt um',
   'Run tests'                   => 'Tests ausführen',
@@ -2565,7 +2567,6 @@ $self->{texts} = {
   'The database user is missing.' => 'Der Datenbankbenutzer fehlt.',
   'The dataset #1 has been created.' => 'Die Datenbank #1 wurde angelegt.',
   'The dataset #1 has been deleted.' => 'Die Datenbank #1 wurde gelöscht.',
-  'The date is missing.'        => 'Das Datum fehlt',
   'The deductible amount'       => 'Der abziehbare Skontobetrag',
   'The default delivery plan only checks if all delivery orders have been created not if the goods are transferred. This feature will check if all the goods are transferred. Caveat: Only the state of the delivery orders are checked not partial transferred delivery orders (in technical terms: the table inventory is not checked' => 'Standardmässig wird beim Lieferplan überprüft, ob es eine vollständige Liefermenge über alle Lieferscheine gibt. Dies ist dann die Statusbedingung für geliefert oder nicht geliefert. Mit dieser Erweiterung wird geprüft ob die Lieferbelege auch wirklich ausgelagert sind oder nicht. Teilausgelagerte Lieferscheine werden allerdings nicht berücksichtigt (Technischer Hintergrund: Keine Überprüfung der Lagertabelle inventory).',
   'The default value depends on the variable type:' => 'Die Bedeutung des Standardwertes h&auml;ngt vom Variablentypen ab:',
@@ -2989,7 +2990,6 @@ $self->{texts} = {
   'Vendor Discount'             => 'Lieferantenrabatt',
   'Vendor Invoice'              => 'Einkaufsrechnung',
   'Vendor Invoices & AP Transactions' => 'Einkaufsrechnungen & Kreditorenbuchungen',
-  'Vendor Letters'              => '',
   'Vendor Name'                 => 'Lieferantenname',
   'Vendor Number'               => 'Lieferantennummer',
   'Vendor Order Number'         => 'Bestellnummer beim Lieferanten',
@@ -3092,7 +3092,6 @@ $self->{texts} = {
   'You have to grant users access to one or more clients.' => 'Benutzern muss dann Zugriff auf einzelne Mandanten gewährt werden.',
   'You have to specify a department.' => 'Sie müssen eine Abteilung wählen.',
   'You have to specify an execution date for each antry.' => 'Sie müssen für jeden zu buchenden Eintrag ein Ausführungsdatum angeben.',
-  'You must choose a user.'     => 'Einen Benutzer auswählen.',
   'You must chose a user.'      => 'Sie m&uuml;ssen einen Benutzer ausw&auml;hlen.',
   'You must enter a name for your new print templates.' => 'Sie müssen einen Namen für die neuen Druckvorlagen angeben.',
   'You must select existing print templates or create a new set.' => 'Sie müssen vorhandene Druckvorlagen auswählen oder einen neuen Satz anlegen.',
@@ -3140,7 +3139,6 @@ $self->{texts} = {
   'bis'                         => 'bis',
   'building data'               => 'Verarbeite Daten',
   'building report'             => 'Erstelle Bericht',
-  'button'                      => '',
   'cash'                        => 'Ist-Versteuerung',
   'chargenumber #1'             => 'Chargennummer #1',
   'chart_of_accounts'           => 'kontenuebersicht',