X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FBankTransaction.pm;h=dbb278632e1ea0573f2ff7dd9eaf174f773e4b50;hb=036d1ca4bd5e9574118a7041e58b64fda4bc003d;hp=87157278302a239cf14fabd7f3f38dc8cc8618cb;hpb=32dc7476d46dc7b6991e8d0c203deaea727c7413;p=kivitendo-erp.git diff --git a/SL/Controller/BankTransaction.pm b/SL/Controller/BankTransaction.pm index 871572783..dbb278632 100644 --- a/SL/Controller/BankTransaction.pm +++ b/SL/Controller/BankTransaction.pm @@ -48,6 +48,7 @@ sub action_search { my $bank_accounts = SL::DB::Manager::BankAccount->get_all_sorted( query => [ obsolete => 0 ] ); + $self->setup_search_action_bar; $self->render('bank_transactions/search', BANK_ACCOUNTS => $bank_accounts); } @@ -58,6 +59,7 @@ sub action_list_all { $self->make_filter_summary; $self->prepare_report; + $self->setup_list_all_action_bar; $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get); } @@ -511,6 +513,9 @@ sub save_invoices { $count += scalar( @{$invoice_ids} ); } } + foreach (@{ $self->problems }) { + $count-- if $_->{result} eq 'error'; + } return $count; } @@ -596,7 +601,7 @@ sub save_single_bank_transaction { if ( $payment_sent && any { ( $_->is_sales && ($_->amount > 0)) - || (!$_->is_sales && ($_->amount < 0)) + || (!$_->is_sales && ($_->amount < 0) && ($_->invoice_type eq 'purchase_invoice')) } @{ $data{invoices} }) { return { %data, @@ -659,8 +664,17 @@ sub save_single_bank_transaction { source => $source, memo => $memo, transdate => $bank_transaction->transdate->to_kivitendo); - } elsif ( $invoice->is_sales && $invoice->type eq 'credit_note' ) { + } elsif (( $invoice->is_sales && $invoice->invoice_type eq 'credit_note' ) || + (!$invoice->is_sales && $invoice->invoice_type eq 'ap_transaction' )) { # no check for overpayment/multiple payments + + # 1. $invoice->open_amount is arap.amount - ararp.paid (always positive!) + # 2. $bank_transaction->amount is negative for outgoing transactions and positive for + # incoming transactions. + # 1. and 2. => we have to turn the sign for invoice_amount in bank_transactions + # for verifying expected data, check t/bank/bank_transactions.t + $bank_transaction->invoice_amount($invoice->open_amount * -1); + $invoice->pay_invoice(chart_id => $bank_transaction->local_bank_account->chart_id, trans_id => $invoice->id, amount => $invoice->open_amount, @@ -730,7 +744,8 @@ sub save_single_bank_transaction { }; }; - die if $error; + # Rollback Fehler nicht weiterreichen + # die if $error; }); return grep { $_ } ($error, @warnings); @@ -888,6 +903,34 @@ sub load_ap_record_template_url { ); } +sub setup_search_action_bar { + my ($self, %params) = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Filter'), + submit => [ '#search_form', { action => 'BankTransaction/list' } ], + accesskey => 'enter', + ], + ); + } +} + +sub setup_list_all_action_bar { + my ($self, %params) = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Filter'), + submit => [ '#filter_form', { action => 'BankTransaction/list_all' } ], + accesskey => 'enter', + ], + ); + } +} + 1; __END__