Merge branch 'b-3.6.1' into mebil
[kivitendo-erp.git] / SL / DB / DeliveryOrder.pm
index 5f6056d..45d6588 100644 (file)
@@ -17,7 +17,7 @@ use SL::DB::Helper::TransNumberGenerator;
 use SL::DB::Part;
 use SL::DB::Unit;
 
-use SL::Controller::DeliveryOrder::TypeData;
+use SL::DB::DeliveryOrder::TypeData qw(:types);
 
 use SL::Helper::Number qw(_format_total _round_total);
 
@@ -82,6 +82,10 @@ sub type {
   goto &order_type;
 }
 
+sub is_type {
+  return shift->type eq shift;
+}
+
 sub displayable_type {
   my $type = shift->type;
 
@@ -136,8 +140,8 @@ sub new_from {
                                                 ordnumber payment_id reqdate salesman_id shippingpoint shipvia taxincluded taxzone_id transaction_description vendor_id billing_address_id
                                              )),
                closed    => 0,
-               is_sales  => !!$source->customer_id,
                delivered => 0,
+               order_type => $params{type},
                transdate => DateTime->today_local,
             );
 
@@ -158,15 +162,13 @@ sub new_from {
                       : $source->is_sales    ? 'sales_delivery_order'
                       : croak "need some way to set delivery order type from source";
 
-  # overwrite legacy is_sales from type_data
-  $args{is_sales} = SL::Controller::DeliveryOrder::TypeData::get3($args{order_type}, "properties", "is_customer");
-
   my $delivery_order = $class->new(%args);
   $delivery_order->assign_attributes(%{ $params{attributes} }) if $params{attributes};
   my $items          = delete($params{items}) || $source->items_sorted;
   my %item_parents;
 
-  my @items = map {
+  # do not copy items when converting to supplier delivery order
+  my @items = $delivery_order->is_type(SUPPLIER_DELIVERY_ORDER_TYPE) ? () : map {
     my $source_item      = $_;
     my $source_item_id   = $_->$item_parent_id_column;
     my @custom_variables = map { _clone_orderitem_cvar($_) } @{ $source_item->custom_variables };
@@ -322,13 +324,13 @@ sub new_from_time_recordings {
 # use type_data cusomtervendor and transfer direction instead
 sub is_sales {
   if ($_[0]->order_type) {
-   return SL::Controller::DeliveryOrder::TypeData::get3($_[0]->order_type, "properties", "is_customer");
+   return SL::DB::DeliveryOrder::TypeData::get3($_[0]->order_type, "properties", "is_customer");
   }
   return $_[0]{is_sales};
 }
 
 sub customervendor {
-  SL::Controller::DeliveryOrder::TypeData::get3($_[0]->order_type, "properties", "is_customer") ? $_[0]->customer : $_[0]->vendor;
+  SL::DB::DeliveryOrder::TypeData::get3($_[0]->order_type, "properties", "is_customer") ? $_[0]->customer : $_[0]->vendor;
 }
 
 sub convert_to_invoice {