]> wagnertech.de Git - mfinanz.git/blobdiff - SL/CVar.pm
Einheiten die Waren zugeordnet sind entsprechend als Fremdschlüssel verknüpfen.
[mfinanz.git] / SL / CVar.pm
index 0de9a4bcf777db9722aeb41bfe7f3992200602c0..8b3cd8e27c97ef66321a0ecf4aac85f9560ac022 100644 (file)
@@ -240,6 +240,7 @@ sub get_custom_variables {
       $cvar->{value} = $cvar->{type} eq 'date'      ? $act_var->{date_value}
                      : $cvar->{type} eq 'timestamp' ? $act_var->{timestamp_value}
                      : $cvar->{type} eq 'number'    ? $act_var->{number_value}
+                     : $cvar->{type} eq 'customer'  ? $act_var->{number_value}
                      : $cvar->{type} eq 'bool'      ? $act_var->{bool_value}
                      :                                $act_var->{text_value};
       $cvar->{valid} = $valid;
@@ -273,6 +274,9 @@ sub get_custom_variables {
 
     if ($cvar->{type} eq 'number') {
       $cvar->{value} = $form->format_amount($myconfig, $cvar->{value} * 1, $cvar->{precision});
+    } elsif ($cvar->{type} eq 'customer') {
+      require SL::DB::Customer;
+      $cvar->{value} = SL::DB::Manager::Customer->find_by(id => $cvar->{value} * 1);
     }
   }
 
@@ -334,14 +338,19 @@ sub save_custom_variables {
 
     } elsif ($config->{type} eq 'bool') {
       push @values, $value ? 't' : 'f', undef, undef, undef;
+    } elsif ($config->{type} eq 'customer') {
+      push @values, undef, undef, undef, $value * 1;
     }
 
     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();
@@ -486,6 +495,11 @@ sub build_filter_query {
 
       $not = 'NOT' if ($params{filter}->{$name} eq 'no');
       push @sub_where,  qq|COALESCE(cvar.bool_value, false) = TRUE|;
+    } elsif ($config->{type} eq 'customer') {
+      next unless $params{filter}->{$name};
+
+      push @sub_where, qq|cvar.number_value * 1 IN (SELECT id FROM customer WHERE name ILIKE ?)|;
+      push @sub_values, "%$params{filter}->{$name}%";
     }
 
     if (@sub_where) {
@@ -559,6 +573,7 @@ sub add_custom_variables_to_report {
           $cfg->{type} eq 'date'      ? $ref->{date_value}
         : $cfg->{type} eq 'timestamp' ? $ref->{timestamp_value}
         : $cfg->{type} eq 'number'    ? $form->format_amount($myconfig, $ref->{number_value} * 1, $cfg->{precision})
+        : $cfg->{type} eq 'customer'  ? SL::DB::Manager::Customer->find_by(id => 1* $ref->{number_value})->name
         : $cfg->{type} eq 'bool'      ? ($ref->{bool_value} ? $locale->text('Yes') : $locale->text('No'))
         :                               $ref->{text_value};
     }