sub items { goto &orderitems; }
sub add_items { goto &add_orderitems; }
+sub payment_terms { goto &payment; }
sub sales_order {
my $self = shift;
$item_parent_column = 'order';
}
- my $terms = $source->can('payment_id') && $source->payment_id ? $source->payment_terms->terms_netto : 0;
-
my %args = ( map({ ( $_ => $source->$_ ) } qw(cp_id currency_id customer_id cusordnumber department_id employee_id globalproject_id intnotes language_id notes
- ordnumber reqdate salesman_id shippingpoint shipvia taxincluded taxzone_id transaction_description vendor_id
+ ordnumber payment_id reqdate salesman_id shippingpoint shipvia taxincluded taxzone_id transaction_description vendor_id
)),
closed => 0,
is_sales => !!$source->customer_id,
delivered => 0,
- terms => $terms,
transdate => DateTime->today_local,
);
} @{ $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};
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>