- # Retrieve the invoice's AR/AP chart ID.
- do_statement($form, @{ $handles{get_arap} }, $orig_item->{"${arap}_id"});
- my ($arap_chart_id) = $handles{get_arap}->[0]->fetchrow_array();
-
- # Record the payment in acc_trans offsetting AR/AP.
- do_statement($form, @{ $handles{add_acc_trans} }, $orig_item->{"${arap}_id"}, $arap_chart_id, -1 * $mult * $orig_item->{amount}, $item->{execution_date}, '');
- do_statement($form, @{ $handles{add_acc_trans} }, $orig_item->{"${arap}_id"}, $orig_item->{chart_id}, $mult * $orig_item->{amount}, $item->{execution_date}, $orig_item->{reference});
-
- # Update the invoice to reflect the new paid amount.
- do_statement($form, @{ $handles{update_arap} }, $orig_item->{amount}, $orig_item->{"${arap}_id"});
+ # fetch item_id via Rose (same id as orig_item)
+ my $sepa_export_item = SL::DB::Manager::SepaExportItem->find_by( id => $item_id);
+
+ my $invoice;
+
+ if ( $sepa_export_item->ar_id ) {
+ $invoice = SL::DB::Manager::Invoice->find_by( id => $sepa_export_item->ar_id);
+ } elsif ( $sepa_export_item->ap_id ) {
+ $invoice = SL::DB::Manager::PurchaseInvoice->find_by( id => $sepa_export_item->ap_id);
+ } else {
+ die "sepa_export_item needs either ar_id or ap_id\n";
+ };
+
+ $invoice->pay_invoice(amount => $sepa_export_item->amount,
+ payment_type => $sepa_export_item->payment_type,
+ chart_id => $sepa_export_item->chart_id,
+ source => $sepa_export_item->reference,
+ transdate => $item->{execution_date}, # value from user form
+ );