epic-s6g
[kivitendo-erp.git] / SL / DB / PaymentTerm.pm
index 5d84d68..2f62bd9 100644 (file)
@@ -35,7 +35,7 @@ sub calc_date {
   }
 
   my $terms           = ($params{terms} // 'net') eq 'discount' ? 'terms_skonto' : 'terms_netto';
-  my $date            = $reference_date->add(days => $self->$terms);
+  my $date            = $reference_date->clone->add(days => $self->$terms);
 
   my $dow             = $date->day_of_week;
   $date               = $date->add(days => 8 - $dow) if $dow > 5;
@@ -57,8 +57,15 @@ SL::DB::PaymentTerm - Rose model for the payment_terms table
 =head1 SYNOPSIS
 
   my $terms             = SL::DB::PaymentTerm->new(id => $::form->{payment_id})->load;
-  my $due_date_net      = $erms->calc_date(terms => 'net');      # uses terms_netto
-  my $due_date_discount = $erms->calc_date(terms => 'discount'); # uses terms_skonto
+  my $due_date_net      = $terms->calc_date(terms => 'net');      # uses terms_netto
+  my $due_date_discount = $terms->calc_date(terms => 'discount'); # uses terms_skonto
+
+  # Calculate due date taking the existing invoice date and the due
+  # date entered by the user into account:
+  my $due_date = $terms->calc_date(
+    reference_date => $::form->{invdate},
+    due_date       => $::form->{duedate},
+  );
 
 =head1 FUNCTIONS
 
@@ -71,7 +78,7 @@ adding one of C<$self>'s terms fields if automatic calculation is on;
 otherwise returns the currently-set due date (which must be provided)
 or the reference date, whichever is later.
 
-Note that for automatich calculation the resulting date will be the
+Note that for automatic calculation the resulting date will be the
 following Monday if the result falls on a weekend.
 
 C<%params> can contain the following parameters: