Csv-Helper: Fehlermeldung, wenn Header nicht erkannt wird (Multiplex-Dateien).
[kivitendo-erp.git] / SL / OE.pm
index 3bb6458..aaaef16 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -42,6 +42,8 @@ use SL::Common;
 use SL::CVar;
 use SL::DB::Order;
 use SL::DB::PeriodicInvoicesConfig;
+use SL::DB::Project;
+use SL::DB::ProjectType;
 use SL::DB::Status;
 use SL::DB::Tax;
 use SL::DBUtils;
@@ -402,7 +404,7 @@ sub save {
 
   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;
+  $form->{$number_field} ||= $trans_number->create_unique; # set $form->{ordnumber} or $form->{quonumber}
 
   if ($form->{id}) {
     $query = qq|DELETE FROM shipto | .
@@ -533,6 +535,23 @@ sub save {
       $pricegroup_id *= 1;
       $pricegroup_id  = undef if !$pricegroup_id;
 
+      # force new project, if not set yet
+      if ($::instance_conf->get_order_always_project && !$form->{"globalproject_id"} && ($form->{type} eq 'sales_order')) {
+        require SL::DB::Customer;
+        my $customer = SL::DB::Manager::Customer->find_by(id => $form->{customer_id});
+        die "Can't find customer" unless $customer;
+        my $new_project = SL::DB::Project->new(
+          projectnumber     => $form->{ordnumber},
+          description       => $customer->name,
+          customer_id       => $customer->id,
+          active            => 1,
+          project_type_id   => $::instance_conf->get_project_type_id,
+          project_status_id => $::instance_conf->get_project_status_id,
+        );
+        $new_project->save;
+        $form->{"globalproject_id"} = $new_project->id;
+      };
+
       CVar->get_non_editable_ic_cvars(form               => $form,
                                       dbh                => $dbh,
                                       row                => $i,