my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
   my $arap     = $params{vc} eq 'customer' ? 'ar'       : 'ap';
   my $vc       = $params{vc} eq 'customer' ? 'customer' : 'vendor';
+  my $extra_columns = $arap  eq 'ar' ? 'ar.direct_debit, ' : '';
 
   my $query =
     qq|
        SELECT ${arap}.id, ${arap}.invnumber, ${arap}.${vc}_id as vc_id, ${arap}.amount AS invoice_amount, ${arap}.invoice,
-         vc.name AS vcname, vc.language_id, ${arap}.duedate as duedate,
+         vc.name AS vcname, vc.language_id, ${arap}.duedate as duedate, ${extra_columns}
 
          COALESCE(vc.iban, '') <> '' AND COALESCE(vc.bic, '') <> '' AS vc_bank_info_ok,
 
     # Update the invoice to reflect the new paid amount.
     do_statement($form, @{ $handles{update_arap} }, $orig_item->{amount}, $orig_item->{"${arap}_id"});
 
+    # Update datepaid of invoice. set_datepaid (which has some extra logic)
+    # finds the date from acc_trans, where the payment has already been
+    # recorded above, so we don't need to explicitly pass
+    # $item->{execution_date}
+    IO->set_datepaid(table => "$arap", id => $orig_item->{"${arap}_id"}, dbh => $dbh);
+
     # Update the item to reflect that it has been posted.
     do_statement($form, @{ $handles{finish_item} }, $item->{execution_date}, $item_id);