X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FHelper%2FCustomVariables.pm;h=c935cbae5863a89713f77b97641350d5e1c83fee;hb=a341d959ab798890746200efd0d5983c66f67db7;hp=ef6a0a9bc78ff7cd5f483d53bda8dd0ea5e76582;hpb=d5a003cf54b65b18d75401d2b7fc27ae6184efe0;p=kivitendo-erp.git diff --git a/SL/DB/Helper/CustomVariables.pm b/SL/DB/Helper/CustomVariables.pm index ef6a0a9bc..c935cbae5 100644 --- a/SL/DB/Helper/CustomVariables.pm +++ b/SL/DB/Helper/CustomVariables.pm @@ -18,7 +18,7 @@ sub import { $params{module} ||= _calc_modules_from_overloads(%params) if $params{overloads}; $params{sub_module} ||= ''; - $params{id} ||= 'id'; + $params{id} ||= _get_primary_key_column($caller_package); $params{module} || $params{sub_module} or croak 'need param module or sub_module'; @@ -51,7 +51,7 @@ sub make_cvar_accessor { custom_variables => { type => 'one to many', class => 'SL::DB::CustomVariable', - column_map => { ($params{id} || 'id') => 'trans_id' }, + column_map => { $params{id} => 'trans_id' }, query_args => [ sub_module => $params{sub_module}, @module_filter ], } ); @@ -165,6 +165,17 @@ sub _calc_modules_from_overloads { return [ keys %modules ]; } +sub _get_primary_key_column { + my ($caller_package) = @_; + my $meta = $caller_package->meta; + + my $column_name; + $column_name = $meta->{primary_key}->{columns}->[0] if $meta->{primary_key} && (ref($meta->{primary_key}->{columns}) eq 'ARRAY') && (1 == scalar(@{ $meta->{primary_key}->{columns} })); + + croak "Unable to retrieve primary key column name: meta information for package $caller_package not set up correctly" unless $column_name; + + return $column_name; +} 1;