Revision eb518737
Von Bernd Blessmann vor mehr als 12 Jahren hinzugefügt
SL/CVar.pm | ||
---|---|---|
7 | 7 |
use Data::Dumper; |
8 | 8 |
|
9 | 9 |
use SL::DBUtils; |
10 |
use SL::MoreCommon qw(listify); |
|
10 |
use SL::MoreCommon qw(any listify);
|
|
11 | 11 |
|
12 | 12 |
sub get_configs { |
13 | 13 |
$main::lxdebug->enter_sub(); |
... | ... | |
243 | 243 |
: $cvar->{type} eq 'timestamp' ? $act_var->{timestamp_value} |
244 | 244 |
: $cvar->{type} eq 'number' ? $act_var->{number_value} |
245 | 245 |
: $cvar->{type} eq 'customer' ? $act_var->{number_value} |
246 |
: $cvar->{type} eq 'vendor' ? $act_var->{number_value} |
|
247 |
: $cvar->{type} eq 'part' ? $act_var->{number_value} |
|
246 | 248 |
: $cvar->{type} eq 'bool' ? $act_var->{bool_value} |
247 | 249 |
: $act_var->{text_value}; |
248 | 250 |
$cvar->{valid} = $valid; |
... | ... | |
279 | 281 |
} elsif ($cvar->{type} eq 'customer') { |
280 | 282 |
require SL::DB::Customer; |
281 | 283 |
$cvar->{value} = SL::DB::Manager::Customer->find_by(id => $cvar->{value} * 1); |
284 |
} elsif ($cvar->{type} eq 'vendor') { |
|
285 |
require SL::DB::Vendor; |
|
286 |
$cvar->{value} = SL::DB::Manager::Vendor->find_by(id => $cvar->{value} * 1); |
|
287 |
} elsif ($cvar->{type} eq 'part') { |
|
288 |
require SL::DB::Part; |
|
289 |
$cvar->{value} = SL::DB::Manager::Part->find_by(id => $cvar->{value} * 1); |
|
282 | 290 |
} |
283 | 291 |
} |
284 | 292 |
|
... | ... | |
340 | 348 |
|
341 | 349 |
} elsif ($config->{type} eq 'bool') { |
342 | 350 |
push @values, $value ? 't' : 'f', undef, undef, undef; |
343 |
} elsif ($config->{type} eq 'customer') {
|
|
351 |
} elsif (any { $config->{type} eq $_ } qw(customer vendor part)) {
|
|
344 | 352 |
push @values, undef, undef, undef, $value * 1; |
345 | 353 |
} |
346 | 354 |
|
... | ... | |
498 | 506 |
|
499 | 507 |
$not = 'NOT' if ($params{filter}->{$name} eq 'no'); |
500 | 508 |
push @sub_where, qq|COALESCE(cvar.bool_value, false) = TRUE|; |
501 |
} elsif ($config->{type} eq 'customer') {
|
|
509 |
} elsif (any { $config->{type} eq $_ } qw(customer vendor part)) {
|
|
502 | 510 |
next unless $params{filter}->{$name}; |
503 | 511 |
|
504 |
push @sub_where, qq|cvar.number_value * 1 IN (SELECT id FROM customer WHERE name ILIKE ?)|; |
|
512 |
my $table = $config->{type}; |
|
513 |
push @sub_where, qq|cvar.number_value * 1 IN (SELECT id FROM $table WHERE name ILIKE ?)|; |
|
514 |
push @sub_values, "%$params{filter}->{$name}%"; |
|
515 |
} elsif ($config->{type} eq 'part') { |
|
516 |
next unless $params{filter}->{$name}; |
|
517 |
|
|
518 |
push @sub_where, qq|cvar.number_value * 1 IN (SELECT id FROM parts WHERE partnumber ILIKE ?)|; |
|
505 | 519 |
push @sub_values, "%$params{filter}->{$name}%"; |
506 | 520 |
} |
507 | 521 |
|
... | ... | |
577 | 591 |
: $cfg->{type} eq 'timestamp' ? $ref->{timestamp_value} |
578 | 592 |
: $cfg->{type} eq 'number' ? $form->format_amount($myconfig, $ref->{number_value} * 1, $cfg->{precision}) |
579 | 593 |
: $cfg->{type} eq 'customer' ? (SL::DB::Manager::Customer->find_by(id => 1*$ref->{number_value}) || SL::DB::Customer->new)->name |
594 |
: $cfg->{type} eq 'vendor' ? (SL::DB::Manager::Vendor->find_by(id => 1*$ref->{number_value}) || SL::DB::Vendor->new)->name |
|
595 |
: $cfg->{type} eq 'part' ? (SL::DB::Manager::Part->find_by(id => 1*$ref->{number_value}) || SL::DB::Part->new)->partnumber |
|
580 | 596 |
: $cfg->{type} eq 'bool' ? ($ref->{bool_value} ? $locale->text('Yes') : $locale->text('No')) |
581 | 597 |
: $ref->{text_value}; |
582 | 598 |
} |
Auch abrufbar als: Unified diff
Waren und Lieferanten als benutzerdefinierte Variablen hinzugefügt.
Mit einfachen vendor_ und part_selectoren im L-Plugin, die das
select_tag verwenden. vc_limit wird nicht berücksichtigt und das
ganze ist nur rudimentär getestet.