Revert "Kleinere DB-Details (Fremdschlüssel und verwaiste Tabelle)"
[kivitendo-erp.git] / SL / OE.pm
index ae3ff08..3d92746 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -46,6 +46,7 @@ use SL::DB::Status;
 use SL::DB::Tax;
 use SL::DBUtils;
 use SL::IC;
+use SL::TransNumber;
 
 use strict;
 
@@ -314,6 +315,10 @@ sub save {
 
   my $ml = ($form->{type} eq 'sales_order') ? 1 : -1;
 
+  my $number_field         = $form->{type} =~ m{order} ? 'ordnumber' : 'quonumber';
+  my $trans_number         = SL::TransNumber->new(type => $form->{type}, dbh => $dbh, number => $form->{$number_field}, id => $form->{id});
+  $form->{$number_field} ||= $trans_number->create_unique;
+
   if ($form->{id}) {
     $query = qq|DELETE FROM custom_variables
                 WHERE (config_id IN (SELECT id FROM custom_variable_configs WHERE module = 'IC'))
@@ -1070,10 +1075,10 @@ sub order_details {
     %projects_by_id = map { $_->id => $_ } @$projects;
   }
 
-  $form->{globalprojectnumber} = $projects_by_id{$form->{"globalproject_id"}}->projectnumber;
-  $form->{globalprojectdescription} = $projects_by_id{$form->{"globalproject_id"}}->description;
-
   if ($projects_by_id{$form->{"globalproject_id"}}) {
+    $form->{globalprojectnumber} = $projects_by_id{$form->{"globalproject_id"}}->projectnumber;
+    $form->{globalprojectdescription} = $projects_by_id{$form->{"globalproject_id"}}->description;
+
     for (@{ $projects_by_id{$form->{"globalproject_id"}}->cvars_by_config }) {
       $form->{"project_cvar_" . $_->config->name} = $_->value_as_text;
     }