Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 986282c1

Von Sven Schöling vor mehr als 9 Jahren hinzugefügt

  • ID 986282c191d6ad3c02608b2fd33d66a12779e401
  • Vorgänger 5aa485a7
  • Nachfolger 678f57a3

PriceRule: Mehr Filteroptionen

Unterschiede anzeigen:

SL/DB/Manager/PriceRule.pm
17 17
sub object_class { 'SL::DB::PriceRule' }
18 18

  
19 19
__PACKAGE__->make_manager_methods;
20
__PACKAGE__->add_filter_specs(
21
  has_item_type => sub {
22
    my ($key, $values, $prefix) = @_;
23
    return unless @$values;
24

  
25
    my $each_type = "SELECT DISTINCT price_rules_id FROM price_rule_items WHERE type = %s";
26
    my $sub_query = join ' INTERSECT ', map { sprintf $each_type, $::form->get_standard_dbh->quote($_) } @$values;
27
    return or => [ ${prefix} . 'id' => [ \$sub_query ] ];
28
  },
29
  item_type_matches => sub {
30
    my ($key, $values, $prefix) = @_;
31
    return unless @$values;
32
    return unless 'HASH' eq ref $values->[0];
33
    return unless grep $_, values %{ $values->[0] };
34

  
35
    my $each_type = "SELECT DISTINCT price_rules_id FROM price_rule_items WHERE type = %s AND (%s)";
36
    my $sub_query = join ' INTERSECT ', map {
37
      sprintf $each_type, $::form->get_standard_dbh->quote($_), SL::DB::Manager::PriceRuleItem->filter_match($_, $values->[0]{$_})
38
    } grep { $values->[0]{$_} } keys %{ $values->[0] };
39
    return or => [ ${prefix} . 'id' => [ \$sub_query ] ];
40
  },
41
);
20 42

  
21 43
sub get_matching_filter {
22 44
  my ($class, %params) = @_;

Auch abrufbar als: Unified diff