CustomerVendorPicker: ref($value) nur prüfen, wenn es tatsächlich ein Objekt ist
[kivitendo-erp.git] / bin / mozilla / io.pl
index d3441ea..5af1b88 100644 (file)
@@ -277,7 +277,12 @@ sub display_row {
     my $linetotal      = $form->round_amount($form->{"qty_$i"} * $form->{"sellprice_$i"} * (100 - $form->{"discount_$i"}) / 100 / $price_factor, 2);
     my $rows            = $form->numtextrows($form->{"description_$i"}, 30, 6);
 
-    $column_data{runningnumber} = $cgi->textfield(-name => "runningnumber_$i", -id => "runningnumber_$i", -size => 5,  -value => $i);    # HuT
+    # quick delete single row
+    $column_data{runningnumber} .= q|<a onclick= "$('#partnumber_| . $i . q|').val(''); $('#update_button').click();">| .
+                                   q|<img height="10px" width="10px" src="image/cross.png" alt="| . $locale->text('Remove') . q|"></a> |;
+    $column_data{runningnumber} .= $cgi->textfield(-name => "runningnumber_$i", -id => "runningnumber_$i", -size => 5,  -value => $i);    # HuT
+
+
     $column_data{partnumber}    = $cgi->textfield(-name => "partnumber_$i",    -id => "partnumber_$i",    -size => 12, -value => $form->{"partnumber_$i"});
     $column_data{description} = (($rows > 1) # if description is too large, use a textbox instead
                                 ? $cgi->textarea( -name => "description_$i", -id => "description_$i", -default => $form->{"description_$i"}, -rows => $rows, -columns => 30)
@@ -995,6 +1000,10 @@ sub edit_e_mail {
   $form->{oldmedia} = $form->{media};
   $form->{media}    = "email";
 
+  my $global_bcc = AM->get_defaults()->{global_bcc};
+
+  $form->{bcc} = join ', ', grep $_, $form->{bcc}, $global_bcc;
+
   my $attachment_filename = $form->generate_attachment_filename();
   my $subject             = $form->{subject} || $form->generate_email_subject();
 
@@ -1861,13 +1870,29 @@ sub _render_custom_variables_inputs {
 
   my $valid = CVar->custom_variables_validity_by_trans_id(trans_id => $params{part_id});
 
+  # get partsgroup_id from part
+  my $partsgroup_id;
+  if ($params{part_id}) {
+    $partsgroup_id = SL::DB::Part->new(id => $params{part_id})->load->partsgroup_id;
+  }
+
   my $num_visible_cvars = 0;
   foreach my $cvar (@{ $form->{CVAR_CONFIGS}->{IC} }) {
     $cvar->{valid} = $params{part_id} && $valid->($cvar->{id});
 
+    # set partsgroup filter
+    my $partsgroup_filtered = 0;
+    if ($cvar->{flag_partsgroup_filter}) {
+      if (!$partsgroup_id || (!grep {$partsgroup_id == $_} @{ $cvar->{partsgroups} })) {
+        $partsgroup_filtered = 1;
+      }
+    }
+
+    my $hide_non_editable = 1;
+
     my $show = 0;
     my $description = '';
-    if ($cvar->{flag_editable} && $cvar->{valid}) {
+    if (( ($cvar->{flag_editable} || !$hide_non_editable) && $cvar->{valid}) && !$partsgroup_filtered) {
       $num_visible_cvars++;
       $description = $cvar->{description} . ' ';
       $show = 1;
@@ -1876,16 +1901,17 @@ sub _render_custom_variables_inputs {
     my $form_key = "ic_cvar_" . $cvar->{name} . "_$params{row}";
 
     push @{ $params{ROW2} }, {
-      line_break     => $show && !(($num_visible_cvars - 1) % 3),
+      line_break     => $show && !(($num_visible_cvars - 1) % ($::myconfig{form_cvars_nr_cols}*1 || 3)),
       description    => $description,
       cvar           => 1,
       render_options => {
-         hide_non_editable => 1,
+         hide_non_editable => $hide_non_editable,
          var               => $cvar,
          name_prefix       => 'ic_',
          name_postfix      => "_$params{row}",
          valid             => $cvar->{valid},
          value             => CVar->parse($::form->{$form_key}, $cvar),
+         partsgroup_filtered => $partsgroup_filtered,
       }
     };
   }