# * transdate
# * remote_account_number (may be empty for records of our own bank)
# * amount
+ # * local_bank_account_id (case flatrate bank charges for two accounts in one bank: same purpose, transdate, remote_account_number(empty), amount. Just different local_bank_account_id)
my $num;
- if ( $num = SL::DB::Manager::BankTransaction->get_all_count(query =>[ remote_account_number => $object->remote_account_number, transdate => $object->transdate, purpose => $object->purpose, amount => $object->amount] ) ) {
+ if ( $num = SL::DB::Manager::BankTransaction->get_all_count(query =>[ remote_account_number => $object->remote_account_number, transdate => $object->transdate, purpose => $object->purpose, amount => $object->amount, local_bank_account_id => $object->local_bank_account_id] ) ) {
push(@{$entry->{errors}}, $::locale->text('Skipping due to existing bank transaction in database'));
};
} else {
my $object = $entry->{object};
- my $purpose = join(' ', $entry->{raw_data}->{purpose},
- $entry->{raw_data}->{purpose1},
- $entry->{raw_data}->{purpose2},
- $entry->{raw_data}->{purpose3},
- $entry->{raw_data}->{purpose4},
- $entry->{raw_data}->{purpose5},
- $entry->{raw_data}->{purpose6},
- $entry->{raw_data}->{purpose7},
- $entry->{raw_data}->{purpose8},
- $entry->{raw_data}->{purpose9},
- $entry->{raw_data}->{purpose10},
- $entry->{raw_data}->{purpose11},
- $entry->{raw_data}->{purpose12},
- $entry->{raw_data}->{purpose13} );
+ my $purpose =
+ join ' ',
+ grep { ($_ // '') !~ m{^ *$} }
+ map { $entry->{raw_data}->{"purpose$_"} }
+ ('', 1..13);
+
$object->purpose($purpose);
}