my $amount = (delete $params{amount} || $record->amount) * $multiplier;
my $bank_chart;
- if ( $params{chart_id} ) {
- $bank_chart = SL::DB::Manager::Chart->find_by(chart_id => $params{chart_id}) or die "Can't find bank chart";
+ if ( $params{bank_chart_id} ) {
+ $bank_chart = SL::DB::Manager::Chart->find_by(id => delete $params{bank_chart_id}) or die "Can't find bank chart";
} elsif ( $::instance_conf->get_ar_paid_accno_id ) {
$bank_chart = SL::DB::Manager::Chart->find_by(id => $::instance_conf->get_ar_paid_accno_id);
} else {
=head2 C<create_bank_transaction %PARAMS>
+Create a bank transaction that matches an existing invoice record, e.g. to be able to
+test the point system.
+
Required params: record (an SL::DB::Invoice or SL::DB::PurchaseInvoice object)
+Optional params: bank_chart_id : the chart id of a configured bank account
+ amount : the amount of the bank transaction
-$params{amount} should always be relative to the absolute amount of the invoice, i.e. use positive
-values for sales and purchases.
+If no bank_chart_id is given, it tries to find a chart via defaults
+(ar_paid_accno_id) or by searching for the chart named "Bank". The chart must
+be connected to an existing BankAccount.
-Create a bank transaction that matches an existing invoice record, e.g. to be able to
-test the point system.
+Param amount should always be relative to the absolute amount of the invoice, i.e. use positive
+values for sales and purchases.
Example:
my $payment_terms = SL::Dev::Record::create_payment_terms;
payment_id => $payment_terms->id,
);
- my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
- amount => $ar_transaction->amount_less_skonto
+ my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
+ bank_chart_id => $bank->id,
+ amount => $ar_transaction->amount_less_skonto
) or die "Couldn't create bank_transaction";
$::form->{invoice_ids} = {
my $ar_transaction_1 = test_ar_transaction(invnumber => 'salesinv_1');
my $ar_transaction_2 = test_ar_transaction(invnumber => 'salesinv_2');
- my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction_1,
- amount => ($ar_transaction_1->amount + $ar_transaction_2->amount),
- purpose => "Rechnungen " . $ar_transaction_1->invnumber . " und " . $ar_transaction_2->invnumber,
+ my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction_1,
+ amount => ($ar_transaction_1->amount + $ar_transaction_2->amount),
+ purpose => "Rechnungen " . $ar_transaction_1->invnumber . " und " . $ar_transaction_2->invnumber,
+ bank_chart_id => $bank->id,
) or die "Couldn't create bank_transaction";
$::form->{invoice_ids} = {
$ar_transaction = test_ar_transaction(invnumber => 'salesinv overpaid');
# amount 135 > 119
- my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
- amount => 135
+ my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
+ bank_chart_id => $bank->id,
+ amount => 135
) or die "Couldn't create bank_transaction";
$::form->{invoice_ids} = {
$ar_transaction = test_ar_transaction(invnumber => 'salesinv overpaid partial');
- my $bt_1 = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
- amount => 10
+ my $bt_1 = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
+ bank_chart_id => $bank->id,
+ amount => 10
) or die "Couldn't create bank_transaction";
- my $bt_2 = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
- amount => 119,
- transdate => DateTime->today->add(days => 5),
+ my $bt_2 = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
+ amount => 119,
+ transdate => DateTime->today->add(days => 5),
+ bank_chart_id => $bank->id,
) or die "Couldn't create bank_transaction";
$::form->{invoice_ids} = {
$ar_transaction = test_ar_transaction(invnumber => 'salesinv partial payment');
# amount 100 < 119
- my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
- amount => 100
+ my $bt = SL::Dev::Payment::create_bank_transaction(record => $ar_transaction,
+ bank_chart_id => $bank->id,
+ amount => 100
) or die "Couldn't create bank_transaction";
$::form->{invoice_ids} = {