X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/c0b5a02609aedcf80741877c5ed3f61ecb94b8c8..b6f8a6b0fe6dae88ce0189c4999d7c1aa96d32a2:/SL/DB/ShopOrder.pm diff --git a/SL/DB/ShopOrder.pm b/SL/DB/ShopOrder.pm index e02969486..4e125fbc9 100644 --- a/SL/DB/ShopOrder.pm +++ b/SL/DB/ShopOrder.pm @@ -26,8 +26,9 @@ __PACKAGE__->meta->initialize; sub convert_to_sales_order { my ($self, %params) = @_; - my $customer = delete $params{customer}; - my $employee = delete $params{employee}; + my $customer = delete $params{customer}; + my $employee = delete $params{employee}; + my $transdate = delete $params{transdate} // DateTime->today_local; croak "param customer is missing" unless ref($customer) eq 'SL::DB::Customer'; croak "param employee is missing" unless ref($employee) eq 'SL::DB::Employee'; @@ -59,8 +60,8 @@ sub convert_to_sales_order { if(!scalar(@error_report)){ my $shipto_id; - if ($self->billing_firstname ne $self->delivery_firstname || $self->billing_lastname ne $self->delivery_lastname || $self->billing_city ne $self->delivery_city || $self->billing_street ne $self->delivery_street) { - if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname, + if ($self->has_differing_delivery_address) { + if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->delivery_fullname, shiptostreet => $self->delivery_street, shiptocity => $self->delivery_city, )) { @@ -68,7 +69,7 @@ sub convert_to_sales_order { } else { my $deliveryaddress = SL::DB::Shipto->new; $deliveryaddress->assign_attributes( - shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname, + shiptoname => $self->delivery_fullname, shiptodepartment_1 => $self->delivery_company, shiptodepartment_2 => $self->delivery_department, shiptostreet => $self->delivery_street, @@ -98,7 +99,7 @@ sub convert_to_sales_order { taxzone_id => $customer->taxzone_id, currency_id => $customer->currency_id, transaction_description => $shop->transaction_description, - transdate => DateTime->today_local + transdate => $transdate, ); return $order; }else{ @@ -245,6 +246,18 @@ sub check_trgm { return 0; } +sub has_differing_delivery_address { + my ($self) = @_; + ($self->billing_firstname // '') ne ($self->delivery_firstname // '') || + ($self->billing_lastname // '') ne ($self->delivery_lastname // '') || + ($self->billing_city // '') ne ($self->delivery_city // '') || + ($self->billing_street // '') ne ($self->delivery_street // '') +} + +sub delivery_fullname { + ($_[0]->delivery_firstname // '') . " " . ($_[0]->delivery_lastname // '') +} + 1; __END__