+ @values = ($ar_id, conv_i($form->{AR}), -1 * $amount);
+ do_statement($form, $sth, $query, @values);
+
+ $sth->finish();
+
+ $query = qq|UPDATE dunning SET fee_interest_ar_id = ? WHERE dunning_id = ?|;
+ do_query($form, $dbh, $query, $ar_id, $dunning_id);
+
+ $main::lxdebug->leave_sub();
+}
+
+sub save_dunning {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $form, $rows, $userspath, $spool) = @_;
+ # connect to database
+ my $dbh = $form->dbconnect_noauto($myconfig);
+
+ my ($query, @values);
+
+ my ($dunning_id) = selectrow_query($form, $dbh, qq|SELECT nextval('id')|);
+
+ my $q_update_ar = qq|UPDATE ar SET dunning_config_id = ? WHERE id = ?|;
+ my $h_update_ar = prepare_query($form, $dbh, $q_update_ar);
+
+ my $q_insert_dunning =
+ qq|INSERT INTO dunning (dunning_id, dunning_config_id, dunning_level, trans_id,
+ fee, interest, transdate, duedate)
+ VALUES (?, ?,
+ (SELECT dunning_level FROM dunning_config WHERE id = ?),
+ ?,
+ (SELECT SUM(fee)
+ FROM dunning_config
+ WHERE dunning_level <= (SELECT dunning_level FROM dunning_config WHERE id = ?)),
+ (SELECT (amount - paid) * (current_date - transdate) FROM ar WHERE id = ?)
+ * (SELECT interest_rate FROM dunning_config WHERE id = ?)
+ / 360,
+ current_date,
+ current_date + (SELECT payment_terms FROM dunning_config WHERE id = ?))|;
+ my $h_insert_dunning = prepare_query($form, $dbh, $q_insert_dunning);
+
+ my @invoice_ids;
+ my ($next_dunning_config_id, $customer_id);
+ my $send_email = 0;
+
+ foreach my $row (@{ $rows }) {
+ push @invoice_ids, $row->{invoice_id};
+ $next_dunning_config_id = $row->{next_dunning_config_id};
+ $customer_id = $row->{customer_id};
+
+ @values = ($row->{next_dunning_config_id}, $row->{invoice_id});
+ do_statement($form, $h_update_ar, $q_update_ar, @values);
+
+ $send_email |= $row->{email};
+
+ my $next_config_id = conv_i($row->{next_dunning_config_id});
+ my $invoice_id = conv_i($row->{invoice_id});
+
+ @values = ($dunning_id, $next_config_id, $next_config_id,
+ $invoice_id, $next_config_id, $invoice_id,
+ $next_config_id, $next_config_id);
+ do_statement($form, $h_insert_dunning, $q_insert_dunning, @values);