Preisanfrage/Aufträge: dort, wo es ein Liefertermin gibt, diesen f. Steuer nehmen
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 3 Dec 2020 11:21:53 +0000 (12:21 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 3 Dec 2020 13:00:17 +0000 (14:00 +0100)
SL/DB/Order.pm
SL/IC.pm

index 35cfaea..f22c84d 100644 (file)
@@ -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 {
index 46f0f54..ca03e51 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -744,7 +744,9 @@ sub retrieve_accounts {
     # also use deliverydate for credit notes
     $transdate = $form->{tax_point} || $form->{deliverydate} || $form->{invdate};
   } else {
-    $transdate = $form->{tax_point} || $form->{transdate};
+    my $deliverydate;
+    $deliverydate = $form->{reqdate} if any { $_ eq $form->{type} } qw(sales_order request_quotation purchase_order);
+    $transdate = $form->{tax_point} || $deliverydate || $form->{transdate};
   }
 
   if ($transdate eq "") {