use SL::DB::MetaSetup::DeliveryOrder;
use SL::DB::Manager::DeliveryOrder;
+use SL::DB::Helper::AttrHTML;
+use SL::DB::Helper::AttrSorted;
use SL::DB::Helper::FlattenToForm;
use SL::DB::Helper::LinkedRecords;
use SL::DB::Helper::TransNumberGenerator;
__PACKAGE__->meta->initialize;
+__PACKAGE__->attr_html('notes');
+__PACKAGE__->attr_sorted('items');
+
__PACKAGE__->before_save('_before_save_set_donumber');
# hooks
sub items { goto &orderitems; }
sub add_items { goto &add_orderitems; }
-sub items_sorted {
- my ($self) = @_;
-
- return [ sort {$a->id <=> $b->id } @{ $self->items } ];
-}
-
sub sales_order {
my $self = shift;
my %params = @_;
SL::DB::DeliveryOrderItem->new(map({ ( $_ => $source_item->$_ ) }
qw(base_qty cusordnumber description discount lastcost longdescription marge_price_factor parts_id price_factor price_factor_id
- project_id qty reqdate sellprice serialnumber transdate unit
+ project_id qty reqdate sellprice serialnumber transdate unit active_discount_source active_price_source
)),
custom_variables => \@custom_variables,
ordnumber => ref($item_parent) eq 'SL::DB::Order' ? $item_parent->ordnumber : $source_item->ordnumber,
} @{ $items };
@items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty};
+ @items = grep { $_->qty >=0 } @items if $params{skip_items_negative_qty};
$delivery_order->items(\@items);
return ($delivery_order, $custom_shipto);
}
+sub customervendor {
+ $_[0]->is_sales ? $_[0]->customer : $_[0]->vendor;
+}
+
1;
__END__
An alias for C<deliver_orer_items> for compatibility with other
sales/purchase models.
-=item C<items_sorted>
-
-Returns the delivery order items sorted by their ID (same order they
-appear in the frontend delivery order masks).
-
=item C<new_from $source, %params>
Creates a new C<SL::DB::DeliveryOrder> instance and copies as much
C<$source>. This option can be used to override the sorting, to
exclude certain positions or to add additional ones.
+=item C<skip_items_negative_qty>
+
+If trueish then items with a negative quantity are skipped. Items with
+a quantity of 0 are not affected by this option.
+
=item C<skip_items_zero_qty>
If trueish then items with a quantity of 0 are skipped.