SL::DB::{Invoice,DeliveryOrder}->new_from: manuelles Filtern von Items via coderef
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 22 Jun 2015 10:52:43 +0000 (12:52 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 22 Jun 2015 10:55:05 +0000 (12:55 +0200)
SL/DB/DeliveryOrder.pm
SL/DB/Invoice.pm

index 3afd591..94725a8 100644 (file)
@@ -160,6 +160,7 @@ sub new_from {
 
   } @{ $items };
 
+  @items = grep { $params{item_filter}->($_) } @items if $params{item_filter};
   @items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty};
   @items = grep { $_->qty >=0 } @items if $params{skip_items_negative_qty};
 
@@ -245,6 +246,12 @@ a quantity of 0 are not affected by this option.
 
 If trueish then items with a quantity of 0 are skipped.
 
+=item C<item_filter>
+
+An optional code reference that is called for each item with the item
+as its sole parameter. Items for which the code reference returns a
+falsish value will be skipped.
+
 =item C<attributes>
 
 An optional hash reference. If it exists then it is passed to C<new>
index 82cf66b..8bfc918 100644 (file)
@@ -203,6 +203,7 @@ sub new_from {
     $current_invoice_item;
   } @{ $items };
 
+  @items = grep { $params{item_filter}->($_) } @items if $params{item_filter};
   @items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty};
   @items = grep { $_->qty >=0 } @items if $params{skip_items_negative_qty};
 
@@ -411,6 +412,12 @@ a quantity of 0 are not affected by this option.
 
 If trueish then items with a quantity of 0 are skipped.
 
+=item C<item_filter>
+
+An optional code reference that is called for each item with the item
+as its sole parameter. Items for which the code reference returns a
+falsish value will be skipped.
+
 =item C<attributes>
 
 An optional hash reference. If it exists then it is passed to C<new>