global $::cgi in bin/mozilla/login.pl entfernt
[kivitendo-erp.git] / bin / mozilla / do.pl
index 1e5c5a2..adaeb27 100644 (file)
@@ -236,6 +236,160 @@ sub prepare_order {
   $main::lxdebug->leave_sub();
 }
 
+sub setup_do_action_bar {
+  my @transfer_qty   = qw(kivi.SalesPurchase.delivery_order_check_transfer_qty);
+  my @req_trans_desc = qw(kivi.SalesPurchase.check_transaction_description) x!!$::instance_conf->get_require_transaction_description_ps;
+  my $is_customer    = $::form->{vc} eq 'customer';
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action =>
+        [ t8('Update'),
+          submit    => [ '#form', { action => "update" } ],
+          id        => 'update_button',
+          accesskey => 'enter',
+        ],
+
+      combobox => [
+        action => [
+          t8('Save'),
+          submit   => [ '#form', { action => "save" } ],
+          checks   => [ @req_trans_desc ],
+          disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef,
+        ],
+        action => [
+          t8('Save as new'),
+          submit   => [ '#form', { action => "save_as_new" } ],
+          checks   => [ @req_trans_desc ],
+          disabled => !$::form->{id},
+        ],
+        action => [
+          t8('Mark as closed'),
+          submit   => [ '#form', { action => "mark_closed" } ],
+          checks   => [ @req_trans_desc ],
+          confirm  => t8('This will remove the delivery order from showing as open even if contents are not delivered. Proceed?'),
+          disabled => !$::form->{id}    ? t8('This record has not been saved yet.')
+                    : $::form->{closed} ? t8('This record has already been closed.')
+                    :                     undef,
+        ],
+      ], # end of combobox "Save"
+
+      action => [
+        t8('Delete'),
+        submit   => [ '#form', { action => "delete" } ],
+        confirm  => t8('Do you really want to delete this object?'),
+        disabled => !$::form->{id}                                                                              ? t8('This record has not been saved yet.')
+                  : $::form->{delivered}                                                                        ? t8('This record has already been delivered.')
+                  : ($::form->{vc} eq 'customer' && !$::instance_conf->get_sales_delivery_order_show_delete)    ? t8('Deleting this type of record has been disabled in the configuration.')
+                  : ($::form->{vc} eq 'vendor'   && !$::instance_conf->get_purchase_delivery_order_show_delete) ? t8('Deleting this type of record has been disabled in the configuration.')
+                  :                                                                                               undef,
+      ],
+
+      combobox => [
+        action => [
+          t8('Transfer out'),
+          submit   => [ '#form', { action => "transfer_out" } ],
+          checks   => [ @req_trans_desc, @transfer_qty ],
+          disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef,
+          only_if  => $is_customer,
+        ],
+        action => [
+          t8('Transfer out via default'),
+          submit   => [ '#form', { action => "transfer_out_default" } ],
+          checks   => [ @req_trans_desc, @transfer_qty ],
+          disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef,
+          only_if  => $is_customer && $::instance_conf->get_transfer_default,
+        ],
+        action => [
+          t8('Transfer in'),
+          submit   => [ '#form', { action => "transfer_in"> 1 } ],
+          checks   => [ @req_trans_desc, @transfer_qty ],
+          disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef,
+          only_if  => !$is_customer,
+        ],
+        action => [
+          t8('Transfer in via default'),
+          submit   => [ '#form', { action => "transfer_in_default" } ],
+          checks   => [ @req_trans_desc, @transfer_qty ],
+          disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef,
+          only_if  => !$is_customer && $::instance_conf->get_transfer_default,
+        ],
+      ], # end of combobox "Transfer out"
+
+
+      'separator',
+
+      action => [
+        t8('Invoice'),
+        submit => [ '#form', { action => "invoice" } ],
+        disabled => !$::form->{id} ? t8('This record has not been saved yet.') : undef,
+      ],
+
+      combobox => [
+        action => [ t8('Export') ],
+        action => [
+          t8('Print'),
+          call   => [ 'kivi.SalesPurchase.show_print_dialog' ],
+          checks => [ @req_trans_desc ],
+        ],
+        action => [
+          t8('E Mail'),
+          call   => [ 'kivi.SalesPurchase.show_email_dialog' ],
+          checks => [ @req_trans_desc ],
+        ],
+      ], # end of combobox "Export"
+
+      combobox =>  [
+        action => [ t8('more') ],
+        action => [
+          t8('History'),
+          call     => [ 'set_history_window', $::form->{id} * 1, 'id' ],
+          disabled => !$::form->{id} ? t8('This record has not been saved yet.') : undef,
+        ],
+        action => [
+          t8('Follow-Up'),
+          call     => [ 'follow_up_window' ],
+          disabled => !$::form->{id} ? t8('This record has not been saved yet.') : undef,
+        ],
+      ], # end if combobox "more"
+    );
+  }
+}
+
+sub setup_do_search_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Search'),
+        submit    => [ '#form' ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_do_orders_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('New invoice'),
+        submit    => [ '#form', { action => 'invoice_multi' } ],
+        checks    => [ [ 'kivi.check_if_entries_selected', '#form tbody input[type=checkbox]' ] ],
+        accesskey => 'enter',
+      ],
+      action => [
+        t8('Print'),
+        call   => [ 'kivi.SalesPurchase.show_print_dialog', 'js:kivi.MassDeliveryOrderPrint.submitMultiOrders' ],
+        checks => [ [ 'kivi.check_if_entries_selected', '#form tbody input[type=checkbox]' ] ],
+      ],
+    );
+  }
+}
+
 sub form_header {
   $main::lxdebug->enter_sub();
 
@@ -247,8 +401,11 @@ sub form_header {
   my $class       = "SL::DB::" . ($form->{vc} eq 'customer' ? 'Customer' : 'Vendor');
   $form->{VC_OBJ} = $class->load_cached($form->{ $form->{vc} . '_id' });
 
-  $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
-  $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
+  my $current_employee   = SL::DB::Manager::Employee->current;
+  $form->{employee_id}   = $form->{old_employee_id} if $form->{old_employee_id};
+  $form->{salesman_id}   = $form->{old_salesman_id} if $form->{old_salesman_id};
+  $form->{employee_id} ||= $current_employee->id;
+  $form->{salesman_id} ||= $current_employee->id;
 
   my $vc = $form->{vc} eq "customer" ? "customers" : "vendors";
   $form->get_lists("price_factors"  => "ALL_PRICE_FACTORS",
@@ -302,13 +459,15 @@ sub form_header {
 
   $form->{follow_up_trans_info} = $form->{donumber} .'('. $form->{VC_OBJ}->name .')';
 
-  $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.File kivi.MassDeliveryOrderPrint kivi.SalesPurchase ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part));
+  $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.File kivi.MassDeliveryOrderPrint kivi.SalesPurchase kivi.Part ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer));
 
   my @custom_hidden;
   push @custom_hidden, map { "shiptocvar_" . $_->name } @{ SL::DB::Manager::CustomVariableConfig->get_all(where => [ module => 'ShipTo' ]) };
 
   $::form->{HIDDENS} = [ map { +{ name => $_, value => $::form->{$_} } } (@custom_hidden) ];
 
+  setup_do_action_bar();
+
   $form->header();
   # Fix für Bug 1082 Erwartet wird: 'abteilungsNAME--abteilungsID'
   # und Erweiterung für Bug 1760:
@@ -334,7 +493,7 @@ sub form_footer {
 
   my $form     = $main::form;
 
-  $form->{PRINT_OPTIONS} = print_options('inline' => 1);
+  $form->{PRINT_OPTIONS}      = setup_sales_purchase_print_options();
   $form->{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted();
 
   print $form->parse_html_template('do/form_footer',
@@ -490,6 +649,8 @@ sub search {
   $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all;
   $form->{title}             = $locale->text('Delivery Orders');
 
+  setup_do_search_action_bar();
+
   $form->header();
 
   print $form->parse_html_template('do/search');
@@ -507,7 +668,7 @@ sub orders {
   my $locale   = $main::locale;
   my $cgi      = $::request->{cgi};
 
-  $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.MassDeliveryOrderPrint));
+  $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.MassDeliveryOrderPrint kivi.SalesPurchase));
   ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = split(/--/, $form->{ $form->{vc} });
 
   report_generator_set_default_sort('transdate', 1);
@@ -643,25 +804,23 @@ sub orders {
     push @options, $locale->text('Not delivered');
   }
 
-  # all_vc ruft get_employee auf, dort wird emloyee überschrieben, deshalb retten:
-  my $save_employee_id = $form->{'employee_id'};
-  my $save_employee    = $form->{'employee'};
-  $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP");
-  $form->{'employee_id'} = $save_employee_id;
-  $form->{'employee'}    = $save_employee;
-
   my $pr = SL::DB::Manager::Printer->find_by(
       printer_description => $::locale->text("sales_delivery_order_printer"));
   if ($pr ) {
       $form->{printer_id} = $pr->id;
   }
 
+  my $print_options = SL::Helper::PrintOptions->get_print_options(
+    options => {
+      hide_language_id => 1,
+      show_bothsided   => 1,
+      show_headers     => 1,
+    },
+  );
+
   $report->set_options('top_info_text'        => join("\n", @options),
                        'raw_top_info_text'    => $form->parse_html_template('do/orders_top'),
-                       'raw_bottom_info_text' => $form->parse_html_template('do/orders_bottom',
-                        {
-                           print_options   => print_options(inline => 1,hide_language_id => 1),
-                        }),
+                       'raw_bottom_info_text' => $form->parse_html_template('do/orders_bottom', { print_options => $print_options }),
                        'output_format'        => 'HTML',
                        'title'                => $form->{title},
                        'attachment_basename'  => $attachment_basename . strftime('_%Y%m%d', localtime time),
@@ -701,6 +860,8 @@ sub orders {
     $idx++;
   }
 
+  setup_do_orders_action_bar();
+
   $report->generate_with_headers();
 
   $main::lxdebug->leave_sub();
@@ -1036,26 +1197,6 @@ sub save_as_new {
   $main::lxdebug->leave_sub();
 }
 
-sub e_mail {
-  $main::lxdebug->enter_sub();
-
-  check_do_access();
-
-  $::form->mtime_ischanged('delivery_orders','mail');
-
-  $::form->{print_and_save} = 1;
-
-  my $saved_form = save_form();
-
-  save();
-
-  restore_form($saved_form, 0, qw(id ordnumber quonumber));
-
-  edit_e_mail();
-
-  $main::lxdebug->leave_sub();
-}
-
 sub calculate_stock_in_out {
   $main::lxdebug->enter_sub();
 
@@ -1595,7 +1736,7 @@ sub dispatcher {
   my $form     = $main::form;
   my $locale   = $main::locale;
 
-  foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_out_default sort
+  foreach my $action (qw(update print save transfer_out transfer_out_default sort
                          transfer_in transfer_in_default mark_closed save_as_new invoice delete)) {
     if ($form->{"action_${action}"}) {
       call_sub($action);