Merge branch 'test' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / DB / CustomVariableConfig.pm
index 203f83a..6ba2238 100644 (file)
@@ -5,10 +5,19 @@ package SL::DB::CustomVariableConfig;
 
 use strict;
 
+use List::MoreUtils qw(any);
+
 use SL::DB::MetaSetup::CustomVariableConfig;
 use SL::DB::Manager::CustomVariableConfig;
 use SL::DB::Helper::ActsAsList;
 
+__PACKAGE__->meta->add_relationship(
+  partsgroups  => {
+    type       => 'many to many',
+    map_class  => 'SL::DB::CustomVariableConfigPartsgroup',
+  },
+);
+
 __PACKAGE__->meta->initialize;
 
 __PACKAGE__->configure_acts_as_list(group_by => [qw(module)]);
@@ -28,8 +37,8 @@ sub validate {
 use constant OPTION_DEFAULTS =>
   {
     MAXLENGTH => 75,
-    WIDTH => 30,
-    HEIGHT => 5,
+    WIDTH     => 225,
+    HEIGHT    => 90,
   };
 
 sub processed_options {
@@ -66,7 +75,7 @@ sub processed_flags {
   }
 
   my $flags = $self->flags;
-  my $ret;
+  my $ret = {};
 
   foreach my $flag (split m/:/, $flags) {
     if ( $flag =~ m/(.*?)=(.*)/ ) {
@@ -87,4 +96,32 @@ sub has_flag {
   return $self->processed_flags()->{$flag};
 }
 
+sub type_dependent_default_value {
+  my ($self) = @_;
+
+  return $self->default_value if $self->type ne 'select';
+  return (any { $_ eq $self->default_value } @{ $self->processed_options }) ? $self->default_value : $self->processed_options->[0];
+}
+
+sub value_col {
+  my ($self) = @_;
+
+  my $type = $self->type;
+
+  return {
+    bool      => 'bool_value',
+    timestamp => 'timestamp_value',
+    date      => 'timestamp_value',
+    number    => 'number_value',
+    integer   => 'number_value',
+    customer  => 'number_value',
+    vendor    => 'number_value',
+    part      => 'number_value',
+    htmlfield => 'text_value',
+    text      => 'text_value',
+    textfield => 'text_value',
+    select    => 'text_value'
+  }->{$type};
+}
+
 1;