- while ( my ($bt_id, $invoice_ids) = each(%$invoice_hash) ) {
- my $bank_transaction = SL::DB::Manager::BankTransaction->find_by(id => $bt_id);
+ $self->problems([]);
+
+ while ( my ($bank_transaction_id, $invoice_ids) = each(%$invoice_hash) ) {
+ push @{ $self->problems }, $self->save_single_bank_transaction(
+ bank_transaction_id => $bank_transaction_id,
+ invoice_ids => $invoice_ids,
+ );
+ }
+
+ $self->action_list();
+}
+
+sub save_single_bank_transaction {
+ my ($self, %params) = @_;
+
+ my %data = (
+ %params,
+ bank_transaction => SL::DB::Manager::BankTransaction->find_by(id => $params{bank_transaction_id}),
+ invoices => [],
+ );
+
+ if (!$data{bank_transaction}) {
+ return {
+ %data,
+ result => 'error',
+ message => $::locale->text('The ID #1 is not a valid database ID.', $data{bank_transaction_id}),
+ };
+ }
+
+ my (@warnings);
+
+ my $worker = sub {
+ my $bt_id = $data{bank_transaction_id};
+ my $bank_transaction = $data{bank_transaction};