Order-Controller: Umwandlung: gemeinsamen Code in eigene Funktion ausgelagert
[kivitendo-erp.git] / bin / mozilla / oe.pl
index 012914d..555822a 100644 (file)
@@ -525,7 +525,8 @@ sub form_header {
                    "price_factors" => "ALL_PRICE_FACTORS");
   $form->{ALL_PAYMENTS} = SL::DB::Manager::PaymentTerm->get_all( where => [ or => [ obsolete => 0, id => $form->{payment_id} || undef ] ]);
 
-  $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all;
+  $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted;
+  $form->{ALL_LANGUAGES}   = SL::DB::Manager::Language->get_all_sorted;
 
   # Projects
   my @old_project_ids = uniq grep { $_ } map { $_ * 1 } ($form->{"globalproject_id"}, map { $form->{"project_id_$_"} } 1..$form->{"rowcount"});
@@ -2049,8 +2050,7 @@ sub delivery_order {
   $main::lxdebug->leave_sub();
 }
 
-sub oe_delivery_order_from_order {
-
+sub oe_prepare_xyz_from_order {
   return if !$::form->{id};
 
   my $order = SL::DB::Order->new(id => $::form->{id})->load;
@@ -2067,27 +2067,15 @@ sub oe_delivery_order_from_order {
   $::form->{rowcount}++;
 
   _update_ship();
+}
+
+sub oe_delivery_order_from_order {
+  oe_prepare_xyz_from_order();
   delivery_order();
 }
 
 sub oe_invoice_from_order {
-
-  return if !$::form->{id};
-
-  my $order = SL::DB::Order->new(id => $::form->{id})->load;
-  $order->flatten_to_form($::form, format_amounts => 1);
-
-  # hack: add partsgroup for first row if it does not exists,
-  # because _remove_billed_or_delivered_rows and _remove_full_delivered_rows
-  # determine fields to handled by existing fields for the first row. If partsgroup
-  # is missing there, for deleted rows the partsgroup_field is not emptied and in
-  # update_delivery_order it will not considered an empty row ...
-  $::form->{partsgroup_1} = '' if !exists $::form->{partsgroup_1};
-
-  # fake last empty row
-  $::form->{rowcount}++;
-
-  _update_ship();
+  oe_prepare_xyz_from_order();
   invoice();
 }
 
@@ -2179,10 +2167,12 @@ sub edit_periodic_invoices_config {
                };
   }
   # for older configs, replace email preset text if not yet set.
-  $config->{email_subject} ||= GenericTranslations->get(language_id => $::form->{lanuage_id},
-                                              translation_type =>"preset_text_periodic_invoices_email_subject");
-  $config->{email_body}    ||= GenericTranslations->get(language_id => $::form->{lanuage_id},
-                                              translation_type =>"preset_text_periodic_invoices_email_body");
+  $config->{email_subject} ||= GenericTranslations->get(language_id => $::form->{lanuage_id}, translation_type => "preset_text_periodic_invoices_email_subject");
+  $config->{email_body}    ||= GenericTranslations->get(language_id => $::form->{lanuage_id}, translation_type => "salutation_general")
+                             . GenericTranslations->get(language_id => $::form->{lanuage_id}, translation_type => "salutation_punctuation_mark")
+                             . "\n\n"
+                             . GenericTranslations->get(language_id => $::form->{lanuage_id}, translation_type => "preset_text_periodic_invoices_email_body");
+  $config->{email_body}      =~ s{\A[ \n\r]+|[ \n\r]+\Z}{}g;
 
   $config->{periodicity}             = 'm' if none { $_ eq $config->{periodicity}             }       @SL::DB::PeriodicInvoicesConfig::PERIODICITIES;
   $config->{order_value_periodicity} = 'p' if none { $_ eq $config->{order_value_periodicity} } ('p', @SL::DB::PeriodicInvoicesConfig::ORDER_VALUE_PERIODICITIES);