Merge branch 'master' of git@lx-office.linet-services.de:lx-office-erp
[kivitendo-erp.git] / SL / CVar.pm
index 7f82a2d..779bfc3 100644 (file)
@@ -30,6 +30,7 @@ sub get_configs {
     FROM custom_variable_configs $where ORDER BY sortkey
 SQL
 
+  $::form->{CVAR_CONFIGS} = {} unless 'HASH' eq ref $::form->{CVAR_CONFIGS};
   if (!$::form->{CVAR_CONFIGS}->{$params{module}}) {
     my $configs  = selectall_hashref_query($form, $dbh, $query, @values);
 
@@ -224,7 +225,7 @@ sub get_custom_variables {
       $cvar->{OPTIONS} = [ map { { 'value' => $_ } } split(m/\#\#/, $cvar->{options}) ];
     }
 
-    my $act_var;
+    my ($act_var, $valid);
     if ($params{trans_id}) {
       my @values = (conv_i($cvar->{id}), conv_i($params{trans_id}));
       push @values, $params{sub_module} if $params{sub_module};
@@ -232,7 +233,7 @@ sub get_custom_variables {
       do_statement($form, $h_var, $q_var, @values);
       $act_var = $h_var->fetchrow_hashref();
 
-      $act_var->{valid} = $self->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{trans_id});
+      $valid = $self->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{trans_id});
     }
 
     if ($act_var) {
@@ -241,7 +242,7 @@ sub get_custom_variables {
                      : $cvar->{type} eq 'number'    ? $act_var->{number_value}
                      : $cvar->{type} eq 'bool'      ? $act_var->{bool_value}
                      :                                $act_var->{text_value};
-      $cvar->{valid} = $act_var->{valid};
+      $cvar->{valid} = $valid;
     } else {
       $cvar->{valid}  =  1;
 
@@ -337,10 +338,13 @@ sub save_custom_variables {
 
     do_statement($form, $sth, $query, @values);
 
-    my $valid_index = "$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid";
-    $self->save_custom_variables_validity(trans_id => $params{trans_id}, config_id => $config->{id},
-      validity => ($params{variables}{$valid_index} || $params{always_valid} ? 1 : 0)
-    );
+    if ($params{save_validity}) {
+      my $valid_index = "$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid";
+      $self->save_custom_variables_validity(trans_id  => $params{trans_id},
+                                            config_id => $config->{id},
+                                            validity  => ($params{variables}{$valid_index} || $params{always_valid} ? 1 : 0)
+                                           );
+    }
   }
 
   $sth->finish();