PriceRule: Filter nach Ware implementiert
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 11 Sep 2014 16:14:41 +0000 (18:14 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 18 Dec 2014 15:18:50 +0000 (16:18 +0100)
SL/Controller/PriceRule.pm
SL/DB/Manager/PriceRuleItem.pm
SL/DB/PriceRuleItem.pm
templates/webpages/price_rule/item.html

index 3f59832..a90f68e 100644 (file)
@@ -202,7 +202,7 @@ sub all_price_rule_item_types {
 }
 
 sub add_javascripts  {
-  $::request->{layout}->add_javascripts(qw(kivi.PriceRule.js autocomplete_customer.js autocomplete_vendor.js));
+  $::request->{layout}->add_javascripts(qw(kivi.PriceRule.js autocomplete_customer.js autocomplete_vendor.js autocomplete_part.js));
 }
 
 sub init_price_rule {
index 6842d5b..60e5d82 100644 (file)
@@ -15,7 +15,7 @@ __PACKAGE__->make_manager_methods;
 use SL::Locale::String qw(t8);
 
 my @types = qw(
-  customer vendor business partsgroup qty reqdate pricegroup
+  part customer vendor business partsgroup qty reqdate pricegroup
 );
 
 my %ops = (
@@ -28,6 +28,7 @@ my %types = (
   'vendor'              => { description => t8('Vendor'),             customer => 0, vendor => 1, data_type => 'int',  data => sub { $_[0]->vendor->id }, },
   'business'            => { description => t8('Type of Business'),   customer => 1, vendor => 1, data_type => 'int',  data => sub { $_[0]->customervendor->business_id }, exclude_nulls => 1 },
   'reqdate'             => { description => t8('Reqdate'),            customer => 1, vendor => 1, data_type => 'date', data => sub { $_[0]->reqdate }, ops => 'date' },
+  'part'                => { description => t8('Part'),               customer => 1, vendor => 0, data_type => 'int',  data => sub { $_[1]->part->id }, },
   'pricegroup'          => { description => t8('Pricegroup'),         customer => 1, vendor => 1, data_type => 'int',  data => sub { $_[1]->pricegroup_id }, exclude_nulls => 1 },
   'partsgroup'          => { description => t8('Group'),              customer => 1, vendor => 1, data_type => 'int',  data => sub { $_[1]->part->partsgroup_id }, exclude_nulls => 1 },
   'qty'                 => { description => t8('Qty'),                customer => 1, vendor => 1, data_type => 'num',  data => sub { $_[1]->qty }, ops => 'num' },
index 91870c1..c53d9b7 100644 (file)
@@ -37,6 +37,9 @@ sub match_business {
 sub match_partsgroup {
   $_[0]->value_int == $_[1]{record_item}->parts->partsgroup_id;
 }
+sub match_part {
+  $_[0]->value_int == $_[1]{record_item}->parts_id;
+}
 sub match_qty {
   if ($_[0]->op eq 'eq') {
     return $_[0]->value_num == $_[1]{record_item}->qty
@@ -59,6 +62,10 @@ sub match_pricegroup {
   $_[0]->value_int == $_[1]{record_item}->customervendor->pricegroup_id;
 }
 
+sub part {
+  require SL::DB::Part;
+  SL::DB::Part->load_cached($_[0]->value_int);
+}
 sub customer {
   require SL::DB::Customer;
   SL::DB::Customer->load_cached($_[0]->value_int);
@@ -95,6 +102,7 @@ sub full_description {
   : $type eq 'business'   ? t8('Type of Business') . ' ' . $self->business->displayable_name
   : $type eq 'partsgroup' ? t8('Group')            . ' ' . $self->partsgroup->displayable_name
   : $type eq 'pricegroup' ? t8('Pricegroup')       . ' ' . $self->pricegroup->displayable_name
+  : $type eq 'part'       ? t8('Part')             . ' ' . $self->part->long_description
   : $type eq 'qty' ? (
        $op eq 'eq' ? t8('Qty equals #1',    $self->value_num_as_number)
      : $op eq 'lt' ? t8('Qty less than #1', $self->value_num_as_number)
index e3734e9..1bff4b9 100644 (file)
@@ -17,6 +17,8 @@
 [% L.hidden_tag('price_rule.items[+].id', item.id) %]
 [% L.hidden_tag('price_rule.items[].type', item.type) %]
 [%- SWITCH item.type %]
+  [% CASE 'part' %]
+    [% 'Part' | $T8 %] [% 'is' | $T8 %] [% L.part_picker('price_rule.items[].value_int', item.part) %]
   [% CASE 'customer' %]
     [% 'Customer' | $T8 %] [% 'is' | $T8 %] [% L.customer_vendor_picker('price_rule.items[].value_int', item.customer, type='customer') %]
   [% CASE 'vendor' %]