X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FOrder.pm;h=dc4bbebd85a31378a939ec55860c8a2704e7c7c8;hb=60dcd6c0c1abb2e06d31c4d46863fc09556ccd7b;hp=35cfaea4f4fb76d34673a62d1ace3f640db75126;hpb=d512cb5d87333ebce57e015343de3a0799762e91;p=kivitendo-erp.git diff --git a/SL/DB/Order.pm b/SL/DB/Order.pm index 35cfaea4f..dc4bbebd8 100644 --- a/SL/DB/Order.pm +++ b/SL/DB/Order.pm @@ -139,15 +139,17 @@ sub is_type { } sub deliverydate { - # oe doesn't have deliverydate, but PTC checks for deliverydate or transdate to determine tax - # oe can't deal with deviating tax rates, but at least make sure PTC doesn't barf - return shift->transdate; + # oe doesn't have deliverydate, but it does have reqdate. + # But this has a different meaning for sales quotations. + # deliverydate can be used to determine tax if tax_point isn't set. + + return $_[0]->reqdate if $_[0]->type ne 'sales_quotation'; } sub effective_tax_point { my ($self) = @_; - return $self->tax_point || $self->transdate; + return $self->tax_point || $self->deliverydate || $self->transdate; } sub displayable_type { @@ -308,14 +310,13 @@ sub new_from { { from => 'purchase_order', to => 'purchase_order', abbr => 'popo' }, { from => 'sales_order', to => 'purchase_order', abbr => 'sopo' }, { from => 'purchase_order', to => 'sales_order', abbr => 'poso' }, + { from => 'sales_order', to => 'sales_quotation', abbr => 'sosq' }, + { from => 'purchase_order', to => 'request_quotation', abbr => 'porq' }, ); 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 $is_abbr_any = sub { - # foreach my $abbr (@_) { - # croak "no such abbreviation: '$abbr'" if !grep { $_->{abbr} eq $abbr } @from_tos; - # } any { $from_to->{abbr} eq $_ } @_; }; @@ -355,6 +356,11 @@ sub new_from { if ( $is_abbr_any->(qw(soso)) ) { $args{periodic_invoices_config} = $source->periodic_invoices_config->clone_and_reset if $source->periodic_invoices_config; } + if ( $is_abbr_any->(qw(sosq porq)) ) { + $args{ordnumber} = undef; + $args{quonumber} = undef; + $args{reqdate} = DateTime->today_local->next_workday(); + } # Custom shipto addresses (the ones specific to the sales/purchase # record and not to the customer/vendor) are only linked from @@ -435,7 +441,7 @@ sub new_from_multi { # set this entries to undef that yield different information my %attributes; - foreach my $attr (qw(ordnumber transdate reqdate taxincluded shippingpoint + foreach my $attr (qw(ordnumber transdate reqdate tax_point taxincluded shippingpoint shipvia notes closed delivered reqdate quonumber cusordnumber proforma transaction_description order_probability expected_billing_date)) {