]> wagnertech.de Git - kivitendo-erp.git/commitdiff
CustomVariables: modules nicht mehr zur Compilezeit inferieren
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 21 Jun 2013 16:08:37 +0000 (18:08 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Tue, 25 Jun 2013 12:22:34 +0000 (14:22 +0200)
Um module zu inferieren müssen die Zielobjekte bekannt sein, das kann aber zu
zirkulären Includes mitten im RDBO initialize führen.

Nachlagern geht auch nicht, weil die Daten für relationships benötigt werden.

Ohne also die Relationships tief ins RDBO auto_foreign_key Modell zu hacken,
ist das Inferieren nicht möglich, deshalb erstmal manuell konfigurieren.

SL/DB/DeliveryOrderItem.pm
SL/DB/Helper/CustomVariables.pm
SL/DB/InvoiceItem.pm
SL/DB/OrderItem.pm

index d50a63ff409df45cf2ba790688dd761c2624a48c..3c5eef85c1ba3d9eeb168097f89fb6d52873f480 100644 (file)
@@ -7,7 +7,10 @@ use SL::DB::Helper::CustomVariables (
   sub_module  => 'delivery_order_item',
   cvars_alias => 1,
   overloads   => {
   sub_module  => 'delivery_order_item',
   cvars_alias => 1,
   overloads   => {
-    parts_id => 'SL::DB::Part',
+    parts_id => {
+      class => 'SL::DB::Part',
+      module => 'IC',
+    }
   },
 );
 
   },
 );
 
index c935cbae5863a89713f77b97641350d5e1c83fee..df90aa73b7f9810d55cd6e0579159219bc5c9f24 100644 (file)
@@ -4,7 +4,6 @@ use strict;
 use Carp;
 use Data::Dumper;
 use List::Util qw(first);
 use Carp;
 use Data::Dumper;
 use List::Util qw(first);
-use SL::DB::CustomVariableConfig;
 
 use constant META_CVARS => 'cvars_config';
 
 
 use constant META_CVARS => 'cvars_config';
 
@@ -113,6 +112,9 @@ sub make_cvar_by_name {
 
 sub _all_configs {
   my (%params) = @_;
 
 sub _all_configs {
   my (%params) = @_;
+
+  require SL::DB::CustomVariableConfig;
+
   $params{module}
     ? SL::DB::Manager::CustomVariableConfig->get_all(query => [ module => $params{module} ])
     : SL::DB::Manager::CustomVariableConfig->get_all;
   $params{module}
     ? SL::DB::Manager::CustomVariableConfig->get_all(query => [ module => $params{module} ])
     : SL::DB::Manager::CustomVariableConfig->get_all;
@@ -122,8 +124,8 @@ sub _overload_by_module {
   my ($module, %params) = @_;
 
   keys %{ $params{overloads} }; # reset each iterator
   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;
+  while (my ($fk, $def) = each %{ $params{overloads} }) {
+    return ($fk, $def->{class}) if $def->{module} eq $module;
   }
 
   croak "unknown overload, cannot resolve module $module";
   }
 
   croak "unknown overload, cannot resolve module $module";
@@ -155,11 +157,8 @@ sub _calc_modules_from_overloads {
   my (%params) = @_;
   my %modules;
 
   my (%params) = @_;
   my %modules;
 
-  while (my ($fk, $class) = each %{ $params{overloads} }) {
-    eval "require $class"; # make sure the class is loaded
-    my $module = $class->meta->{META_CVARS()}->{module};
-    next if ref $module;
-    $modules{$module} = 1;
+  for my $def (values %{ $params{overloads} || {} }) {
+    $modules{$def->{module}} = 1;
   }
 
   return [ keys %modules ];
   }
 
   return [ keys %modules ];
@@ -200,7 +199,10 @@ SL::DB::Helper::CustomVariables - Mixin to provide custom variables relations
     sub_module  => 'orderitems',
     cvars_alias => 1,
     overloads   => {
     sub_module  => 'orderitems',
     cvars_alias => 1,
     overloads   => {
-      parts_id    => 'SL::DB::Part',
+      parts_id    => {
+        class => 'SL::DB::Part',
+        module => 'IC',
+      }
     }
   );
 
     }
   );
 
index a4135fc4c67b9acdd1c4cc40be90dab70187c9fe..8f9a4dde7bae629beb2df365c38f0786c7a0a793 100644 (file)
@@ -7,7 +7,10 @@ use SL::DB::Helper::CustomVariables (
   sub_module  => 'invoice',
   cvars_alias => 1,
   overloads   => {
   sub_module  => 'invoice',
   cvars_alias => 1,
   overloads   => {
-    parts_id => 'SL::DB::Part',
+    parts_id => {
+     class => 'SL::DB::Part',
+     module => 'IC',
+    },
   },
 );
 
   },
 );
 
index 67bffd8cef00002d5612e8e5bac3136bed26e2fa..37520977bfc9ca486e049d91b269efb54083287d 100644 (file)
@@ -10,7 +10,10 @@ use SL::DB::Helper::CustomVariables (
   sub_module  => 'orderitems',
   cvars_alias => 1,
   overloads   => {
   sub_module  => 'orderitems',
   cvars_alias => 1,
   overloads   => {
-    parts_id => 'SL::DB::Part',
+    parts_id => {
+      class => 'SL::DB::Part',
+      module => 'IC',
+    }
   },
 );
 
   },
 );