Revision cdb719c4
Von Sven Schöling vor etwa 2 Jahren hinzugefügt
SL/DB/Manager/PriceRuleItem.pm | ||
---|---|---|
__PACKAGE__->make_manager_methods;
|
||
|
||
use SL::Locale::String qw(t8);
|
||
use List::Util qw(first);
|
||
|
||
use SL::DB::CustomVariableConfig;
|
||
|
||
my %ops = (
|
||
'num' => { eq => '=', le => '<=', ge => '>=' },
|
||
... | ... | |
# we only generate cvar types for cvar price_rules that are actually used to keep the query smaller
|
||
# these are cached per request
|
||
sub generate_cvar_types {
|
||
my $cvar_configs = SL::DB::Manager::CustomVariableConfig->get_all(query => [ id => \"(select distinct custom_variable_configs_id from price_rule_items where custom_variable_configs_id is not null)" ]);
|
||
my $cvar_configs = SL::DB::Manager::CustomVariableConfig->get_all(query => [
|
||
id => [ \"(select distinct custom_variable_configs_id from price_rule_items where custom_variable_configs_id is not null)" ]
|
||
]);
|
||
|
||
my @types;
|
||
|
||
for my $config (@$cvar_configs) {
|
||
|
||
# NOTE! this only works for non-editable selects.
|
||
# if the cvar is editable, it needs to be pulled from the record itself
|
||
push @types, {
|
||
type => "cvar_" . $config->id,
|
||
description => $config->description,
|
||
customer => 1,
|
||
vendor => 1,
|
||
data_type => 'text',
|
||
data => sub { $_[1]->part->cvar_by_name($config->name)->value },
|
||
exclude_nulls => 1,
|
||
cvar_config => $config->id,
|
||
} if $config->module eq 'IC' && !$config->processed_flags->{editable} && $config->type eq 'select';
|
||
|
||
# NOTE! this only works for editable selects.
|
||
# if the cvar is editable, it needs to be pulled from the record itself
|
||
push @types, {
|
||
type => "cvar_" . $config->id,
|
||
description => $config->description,
|
||
customer => 1,
|
||
vendor => 1,
|
||
data_type => 'text',
|
||
data => sub { $_[1]->cvar_by_name($config->name)->value },
|
||
data => sub {
|
||
$config->processed_flags->{editable}
|
||
? $_[1]->cvar_by_name($config->name)->value
|
||
: $_[1]->part->cvar_by_name($config->name)->value
|
||
},
|
||
exclude_nulls => 1,
|
||
cvar_config => $config->id,
|
||
} if $config->module eq 'IC' && $config->processed_flags->{editable} && $config->type eq 'select';
|
||
} if $config->module eq 'IC' && $config->type eq 'select';
|
||
|
||
}
|
||
|
Auch abrufbar als: Unified diff
PriceRule: cvar editable Behandlung gefixt