+  my $start_date = DateTime->new(year => $self->year, month =>  1, day =>  1, time_zone => $::locale->get_local_time_zone);
+  my $end_date   = DateTime->new(year => $self->year, month => 12, day => 31, time_zone => $::locale->get_local_time_zone);
+
+  $self->calculate_one_periodic_invoice(config => $_, start_date => $start_date, end_date => $end_date) for @{ $self->objects->{periodic_invoices_cfg} };
+}
+
+sub calculate_one_periodic_invoice {
+  my ($self, %params) = @_;
+
+  my @dates           = $params{config}->calculate_invoice_dates(start_date => $params{start_date}, end_date => $params{end_date}, past_dates => 1);
+  my $first_date      = $dates[0];
+
+  return if !$first_date;
+
+  my $net  = $params{config}->order->netamount * scalar(@dates);
+  my $sord = $self->data->{sales_orders};
+
+  $sord->{months  }->[ $first_date->month   - 1 ] += $net;
+  $sord->{quarters}->[ $first_date->quarter - 1 ] += $net;
+  $sord->{year}                                   += $net;