X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FCVar.pm;h=0ace069027da47f263262c49e4fa1f9e40a73fc9;hb=83a78eea7bb24102f0b255bd350b7dd343e7a8e4;hp=0264d8ab09ceadb707dc80006d6f7b081e6fccfd;hpb=36703a86a998c7c395f110f94b3b3feebc2a3a80;p=kivitendo-erp.git diff --git a/SL/CVar.pm b/SL/CVar.pm index 0264d8ab0..0ace06902 100644 --- a/SL/CVar.pm +++ b/SL/CVar.pm @@ -98,13 +98,12 @@ sub get_custom_variables { my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); - my $trans_id = $params{trans_id} ? 'OR (v.trans_id = ?) ' : ''; + my $sub_module = $params{sub_module} ? $params{sub_module} : ''; my $q_var = qq|SELECT text_value, timestamp_value, timestamp_value::date AS date_value, number_value, bool_value FROM custom_variables - WHERE (config_id = ?) AND (trans_id = ?)|; - $q_var .= qq| AND (sub_module = ?)| if $params{sub_module}; + WHERE (config_id = ?) AND (trans_id = ?) AND (sub_module = ?)|; my $h_var = prepare_query($form, $dbh, $q_var); my $custom_variables = $self->get_configs(module => $params{module}); @@ -129,8 +128,7 @@ sub get_custom_variables { my ($act_var, $valid); if ($params{trans_id}) { - my @values = (conv_i($cvar->{id}), conv_i($params{trans_id})); - push @values, $params{sub_module} if $params{sub_module}; + my @values = (conv_i($cvar->{id}), conv_i($params{trans_id}), $sub_module); do_statement($form, $h_var, $q_var, @values); $act_var = $h_var->fetchrow_hashref(); @@ -654,6 +652,56 @@ sub format_to_template { return $value; } +sub get_non_editable_ic_cvars { + $main::lxdebug->enter_sub(2); + my $self = shift; + my %params = @_; + + Common::check_params(\%params, qw(form dbh row sub_module may_converted_from)); + my $form = $params{form}; + my $dbh = $params{dbh}; + my $row = $params{row}; + my $sub_module = $params{sub_module}; + my $may_converted_from = $params{may_converted_from}; + + my $cvars; + if (! $form->{"${sub_module}_id_${row}"}) { + my $conv_from = 0; + foreach (@{ $may_converted_from }) { + if ($form->{"converted_from_${_}_id_$row"}) { + $cvars = CVar->get_custom_variables(dbh => $dbh, + module => 'IC', + sub_module => $_, + trans_id => $form->{"converted_from_${_}_id_$row"}, + ); + $conv_from = 1; + last; + } + } + # get values for CVars from master data for new items + if (!$conv_from) { + $cvars = CVar->get_custom_variables(dbh => $dbh, + module => 'IC', + trans_id => $form->{"id_$row"}, + ); + } + } else { + # get values for CVars from custom_variables for existing items + $cvars = CVar->get_custom_variables(dbh => $dbh, + module => 'IC', + sub_module => $sub_module, + trans_id => $form->{"${sub_module}_id_${row}"}, + ); + } + # map only non-editable CVars to form + foreach (@{ $cvars }) { + next if $_->{flag_editable}; + $form->{"ic_cvar_$_->{name}_$row"} = $_->{value} + } + + $main::lxdebug->leave_sub(2); +} + 1; __END__