Merge branch 'master' of git@vc.linet-services.de:public/lx-office-erp
[kivitendo-erp.git] / SL / DB / Helper / CustomVariables.pm
index e8c7d6b..ef6a0a9 100644 (file)
@@ -22,7 +22,7 @@ sub import {
 
   $params{module} || $params{sub_module}  or croak 'need param module or sub_module';
 
-  save_meta_info($caller_package, %params);
+  return unless save_meta_info($caller_package, %params);
   make_cvar_accessor($caller_package, %params);
   make_cvar_alias($caller_package, %params)      if $params{cvars_alias};
   make_cvar_by_configs($caller_package, %params);
@@ -36,13 +36,15 @@ sub save_meta_info {
   return 0 if $meta->{META_CVARS()};
 
   $meta->{META_CVARS()} = \%params;
+
+  return 1;
 }
 
 sub make_cvar_accessor {
   my ($caller_package, %params) = @_;
 
   my @module_filter = $params{module} ?
-    ("config.module" => $params{module}) :
+    ("config_id" => [ \"(SELECT custom_variable_configs.id FROM custom_variable_configs WHERE custom_variable_configs.module = '$params{module}')" ]) :
     ();
 
   $caller_package->meta->add_relationships(
@@ -50,7 +52,6 @@ sub make_cvar_accessor {
       type         => 'one to many',
       class        => 'SL::DB::CustomVariable',
       column_map   => { ($params{id} || 'id') => 'trans_id' },
-      manager_args => { with_objects => 'config' },
       query_args   => [ sub_module => $params{sub_module}, @module_filter ],
     }
   );
@@ -65,7 +66,7 @@ sub make_cvar_alias {
 }
 
 # this is used for templates where you need to list every applicable config
-# auto vivifies non existant cvar objects as necessary.
+# auto vivifies non existent cvar objects as necessary.
 sub make_cvar_by_configs {
   my ($caller_package, %params) = @_;
 
@@ -120,6 +121,7 @@ sub _all_configs {
 sub _overload_by_module {
   my ($module, %params) = @_;
 
+  keys %{ $params{overloads} }; # reset each iterator
   while (my ($fk, $class) = each %{ $params{overloads} }) {
     return ($fk, $class) if $class->meta->{META_CVARS()}->{module} eq $module;
   }