Verkaufsrechnung: Fehler bei VK Rechnung "Als bezahlt markieren": action= nicht definiert
[kivitendo-erp.git] / SL / DB / Helper / TransNumberGenerator.pm
index 41dba2c..a6f4e2e 100644 (file)
@@ -8,7 +8,6 @@ our @EXPORT = qw(get_next_trans_number create_trans_number);
 use Carp;
 use List::Util qw(max);
 
-use SL::DB::Default;
 use SL::PrefixedNumber;
 
 sub oe_scoping {
@@ -34,7 +33,7 @@ my %specs = ( ar                      => { number_column => 'invnumber',
               vendor                  => { number_column => 'vendornumber',   number_range_column => 'vendornumber',                                                     },
               part                    => { number_column => 'partnumber',     number_range_column => 'articlenumber',  scoping => \&parts_scoping                        },
               service                 => { number_column => 'partnumber',     number_range_column => 'servicenumber',  scoping => \&parts_scoping                        },
-              assembly                => { number_column => 'partnumber',     number_range_column => 'articlenumber',  scoping => \&parts_scoping                        },
+              assembly                => { number_column => 'partnumber',     number_range_column => 'assemblynumber', scoping => \&parts_scoping                        },
             );
 
 sub get_next_trans_number {
@@ -55,8 +54,10 @@ sub get_next_trans_number {
   my @numbers        = map { $_->$number_column } @{ $self->_get_manager_class->get_all(%conditions) };
   my %numbers_in_use = map { ( $_ => 1 )        } @numbers;
 
+  require SL::DB::Default;
   my $defaults       = SL::DB::Default->get;
-  my $sequence       = SL::PrefixedNumber->new(number => $defaults->$number_range_column);
+  $number_range_column = 'articlenumber' if $number_range_column eq 'assemblynumber' and length($defaults->$number_range_column) < 1;
+  my $sequence       = SL::PrefixedNumber->new(number => ($defaults->$number_range_column || 1));
 
   $sequence->set_to_max(@numbers) if !$fill_holes_in_range;