X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FDeliveryOrder.pm;h=45d658876023f2efbe8890d5008e3cf09682b6e2;hb=11aeaa07186197c61dfe610d2a5c981754fd2e9d;hp=a7c20cb9bdbfae17f94fc05bc59de101c106dcdb;hpb=632f0308562656fd01b8bcf75839f2ce5490c03b;p=kivitendo-erp.git diff --git a/SL/DB/DeliveryOrder.pm b/SL/DB/DeliveryOrder.pm index a7c20cb9b..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,19 +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' - : undef; - - # 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 }; @@ -320,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 {