X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FDB%2FDeliveryOrder.pm;h=45d658876023f2efbe8890d5008e3cf09682b6e2;hb=a9d9ca02abd3a0ff1e43f23888142266174bec55;hp=068d6c419008b95958686afd2160c0c480880fa2;hpb=84db7f413b4e61dd6bbce432f9b4a05cfa8a90ca;p=kivitendo-erp.git diff --git a/SL/DB/DeliveryOrder.pm b/SL/DB/DeliveryOrder.pm index 068d6c419..45d658876 100644 --- a/SL/DB/DeliveryOrder.pm +++ b/SL/DB/DeliveryOrder.pm @@ -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, ); @@ -153,20 +157,18 @@ sub new_from { } # infer type from legacy fields if not given - $params{order_type} //= $source->customer_id ? 'sales_delivery_order' - : $source->vendor_id ? 'purchase_delivery_order' - : $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($params{order_type}, "properties", "is_customer"); + $args{order_type} //= $source->customer_id ? 'sales_delivery_order' + : $source->vendor_id ? 'purchase_delivery_order' + : $source->is_sales ? 'sales_delivery_order' + : croak "need some way to set delivery order type from source"; 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 }; @@ -321,11 +323,14 @@ sub new_from_time_recordings { # legacy for compatibility # use type_data cusomtervendor and transfer direction instead sub is_sales { - SL::Controller::DeliveryOrder::TypeData::get3($_[0]->order_type, "properties", "is_customer"); + if ($_[0]->order_type) { + 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 {