Kontoauszug verbuchen - Punktesystem sichtbar machen
[kivitendo-erp.git] / SL / Controller / BankTransaction.pm
index 8b9ee20..77f5b96 100644 (file)
@@ -226,7 +226,9 @@ sub action_ajax_payment_suggestion {
 
   my $html;
   $html .= SL::Presenter->input_tag('invoice_ids.' . $::form->{bt_id} . '[]', $::form->{prop_id} , type => 'hidden');
-  $html .= SL::Presenter->escape( $invoice->invnumber );
+  # better in template code - but how to ajax this
+  $html .= SL::Presenter->escape(t8('Invno.') . ': ' . $invoice->invnumber . ' ');
+  $html .= SL::Presenter->escape(t8('Amount') . ': ' . $::form->format_amount(\%::myconfig, $invoice->open_amount, 2) . ' ');
   $html .= SL::Presenter->select_tag('invoice_skontos.' . $::form->{bt_id} . '[]', \@select_options,
                                               value_key => 'payment_type',
                                               title_key => 'display' ) if @select_options;
@@ -248,6 +250,7 @@ sub action_filter_drafts {
 
   foreach my $draft ( @{ $drafts } ) {
     my $draft_as_object = YAML::Load($draft->form);
+    next unless $draft_as_object->{vendor_id};  # we cannot filter for vendor name, if this is a gl draft
     my $vendor = SL::DB::Manager::Vendor->find_by(id => $draft_as_object->{vendor_id});
     $draft->{vendor} = $vendor->name;
     $draft->{vendor_id} = $vendor->id;
@@ -398,26 +401,27 @@ sub action_save_invoices {
       }
       # pay invoice or go to the next bank transaction if the amount is not sufficiently high
       if ($invoice->open_amount <= $amount_of_transaction) {
-        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
-                              trans_id     => $invoice->id,
-                              amount       => $invoice->open_amount,
-                              payment_type => $payment_type,
-                              transdate    => $bank_transaction->transdate->to_kivitendo);
+        # first calculate new bank transaction amount ...
         if ($invoice->is_sales) {
           $amount_of_transaction -= $sign * $invoice->open_amount;
           $bank_transaction->invoice_amount($bank_transaction->invoice_amount + $invoice->open_amount);
         } else {
-          $amount_of_transaction += $sign * $invoice->open_amount if (!$invoice->is_sales);
+          $amount_of_transaction += $sign * $invoice->open_amount;
           $bank_transaction->invoice_amount($bank_transaction->invoice_amount - $invoice->open_amount);
         }
+        # ... and then pay the invoice
+        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
+                              trans_id     => $invoice->id,
+                              amount       => $invoice->open_amount,
+                              payment_type => $payment_type,
+                              transdate    => $bank_transaction->transdate->to_kivitendo);
       } else {
         $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
                               trans_id     => $invoice->id,
                               amount       => $amount_of_transaction,
                               payment_type => $payment_type,
                               transdate    => $bank_transaction->transdate->to_kivitendo);
-        $bank_transaction->invoice_amount($bank_transaction->amount) if $invoice->is_sales;
-        $bank_transaction->invoice_amount($bank_transaction->amount) if !$invoice->is_sales;
+        $bank_transaction->invoice_amount($bank_transaction->amount);
         $amount_of_transaction = 0;
       }