Part Controller - mit nächster freier Nummer speichern
authorG. Richardson <information@kivitendo-premium.de>
Tue, 30 May 2017 09:09:39 +0000 (11:09 +0200)
committerG. Richardson <information@kivitendo-premium.de>
Tue, 30 May 2017 10:08:41 +0000 (12:08 +0200)
Gibt man beim Anlegen eines neuen Artikels die Artikelnummer vor so wird
beim Speichern eine Warnung angezeigt und der Speichervorgang
abgebrochen.

Lässt man die Artikelnummer frei und die nächste Artikelnummer (laut
defaults articlenumber, servicenumber, ...) ist schon vergeben, so wird
die nächste freie Artikelnummer genommen.

Die Prüfung, ob die nächste Artikelnummer bereits vergeben ist, wurde
daher entfernt.

SL/Controller/Part.pm

index ee56b7a..6477a90 100644 (file)
@@ -94,8 +94,11 @@ sub action_save {
       return $self->js->error(t8('The document has been changed by another user. Please reopen it in another window and copy the changes to the new window'))->render;
   }
 
-  if ( $is_new and !$::form->{part}{partnumber} ) {
-    $self->check_next_transnumber_is_free or return $self->js->error(t8('The next partnumber in the number range already exists!'))->render;
+  if (    $is_new
+       && $::form->{part}{partnumber}
+       && SL::DB::Manager::Part->find_by(partnumber => $::form->{part}{partnumber})
+     ) {
+    return $self->js->error(t8('The partnumber is already being used'))->render;
   }
 
   $self->parse_form;
@@ -1037,17 +1040,6 @@ sub form_check_partnumber_is_unique {
 }
 
 # general checking functions
-sub check_next_transnumber_is_free {
-  my ($self) = @_;
-
-  my ($next_transnumber, $count);
-  $self->part->db->with_transaction(sub {
-    $next_transnumber = $self->part->get_next_trans_number;
-    $count = SL::DB::Manager::Part->get_all_count(where => [ partnumber => $next_transnumber ]);
-    return 1;
-  }) or die $@;
-  $count ? return 0 : return 1;
-}
 
 sub check_part_id {
   die t8("Can't load item without a valid part.id") . "\n" unless $::form->{part}{id};