+ 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;