From f747a789de8f0dd680fb1d330c608e1fb2fae46f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bernd=20Ble=C3=9Fmann?= Date: Fri, 25 May 2018 15:14:18 +0200 Subject: [PATCH] =?utf8?q?SL::DB::Order->new=5Ffrom:=20Pr=C3=BCfung=20auf?= =?utf8?q?=20Quell-=20und=20Ziel-Typ=20refactored?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/DB/Order.pm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/SL/DB/Order.pm b/SL/DB/Order.pm index 3eb2078dc..bc7d87f6b 100644 --- a/SL/DB/Order.pm +++ b/SL/DB/Order.pm @@ -6,6 +6,7 @@ use strict; use Carp; use DateTime; use List::Util qw(max); +use List::MoreUtils qw(any); use SL::DB::MetaSetup::Order; use SL::DB::Manager::Order; @@ -205,13 +206,17 @@ sub new_from { croak("A destination type must be given as parameter") unless $params{destination_type}; my $destination_type = delete $params{destination_type}; - my $src_dst_allowed = ('sales_quotation' eq $source->type && 'sales_order' eq $destination_type) - || ('request_quotation' eq $source->type && 'purchase_order' eq $destination_type) - || ('sales_quotation' eq $source->type && 'sales_quotation' eq $destination_type) - || ('sales_order' eq $source->type && 'sales_order' eq $destination_type) - || ('request_quotation' eq $source->type && 'request_quotation' eq $destination_type) - || ('purchase_order' eq $source->type && 'purchase_order' eq $destination_type); - croak("Cannot convert from '" . $source->type . "' to '" . $destination_type . "'") unless $src_dst_allowed; + + my @from_tos = ( + { from => 'sales_quotation', to => 'sales_order', abbr => 'sqso' }, + { from => 'request_quotation', to => 'purchase_order', abbr => 'rqpo' }, + { from => 'sales_quotation', to => 'sales_quotation', abbr => 'sqsq' }, + { from => 'sales_order', to => 'sales_order', abbr => 'soso' }, + { from => 'request_quotation', to => 'request_quotation', abbr => 'rqrq' }, + { from => 'purchase_order', to => 'purchase_order', abbr => 'popo' }, + ); + my $from_to = (grep { $_->{from} eq $source->type && $_->{to} eq $destination_type} @from_tos)[0]; + croak("Cannot convert from '" . $source->type . "' to '" . $destination_type . "'") if !$from_to; my ($item_parent_id_column, $item_parent_column); -- 2.20.1