X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/b15aafa91c0c6cd217935dadaa86866f45e2148a..6ecf138db5fceea08d68dbcd539344797cd43939:/bin/mozilla/gl.pl diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index f351a9dfc..5f65720b9 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -39,6 +39,7 @@ use POSIX qw(strftime); use List::Util qw(first sum); use SL::DB::RecordTemplate; +use SL::DB::BankTransactionAccTrans; use SL::DB::Tax; use SL::FU; use SL::GL; @@ -917,6 +918,12 @@ sub display_rows { my $copy2credit = $i == 1 ? 'onkeyup="copy_debit_to_credit()"' : ''; my $balance = $form->format_amount(\%::myconfig, $balances{$accno_id} // 0, 2, 'DRCR'); + # if we have a bt_chart_id we disallow changing the amount of the bank account + if ($form->{bt_chart_id}) { + $debitreadonly = $creditreadonly = "readonly" if ($form->{"accno_id_$i"} eq $form->{bt_chart_id}); + $copy2credit = '' if $i == 1; # and disallow copy2credit + } + print qq| $accno ${balance} @@ -959,6 +966,11 @@ sub setup_gl_action_bar { my $form = $::form; my $change_never = $::instance_conf->get_gl_changeable == 0; my $change_on_same_day_only = $::instance_conf->get_gl_changeable == 2 && ($form->current_date(\%::myconfig) ne $form->{gldate}); + my $is_linked_bank_transaction; + + if ($form->{id} && SL::DB::Manager::BankTransactionAccTrans->find_by(gl_id => $form->{id})) { + $is_linked_bank_transaction = 1; + } for my $bar ($::request->layout->get('actionbar')) { $bar->add( @@ -975,6 +987,7 @@ sub setup_gl_action_bar { : $form->{storno} ? t8('A canceled general ledger transaction cannot be posted.') : ($form->{id} && $change_never) ? t8('Changing general ledger transaction has been disabled in the configuration.') : ($form->{id} && $change_on_same_day_only) ? t8('General ledger transactions can only be changed on the day they are posted.') + : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.') : undef, ], combobox => [ @@ -990,6 +1003,7 @@ sub setup_gl_action_bar { : $form->{locked} ? t8('The billing period has already been locked.') : $change_never ? t8('Changing invoices has been disabled in the configuration.') : $change_on_same_day_only ? t8('Invoices can only be changed on the day they are posted.') + : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.') : undef, ], ], # end of combobox "Storno" @@ -1346,22 +1360,32 @@ sub post_transaction { die "no chart id:" unless $chart_id; $payment = SL::DB::Manager::AccTransaction->get_all(where => [ trans_id => $::form->{id}, - chart_link => { like => '%AR_paid%' }, + chart_link => { like => '%_paid%' }, chart_id => $chart_id ]); die "guru meditation error: Can only assign amount to one bank account booking" if scalar @{ $payment } > 1; # credit/debit * -1 matches the sign for bt.amount and bt.invoice_amount - die "Can only assign the full bank amount to a single general ledger booking" unless $bt->amount == $payment->[0]->amount * -1; + die "Can only assign the full (partial) bank amount to a single general ledger booking" + unless $bt->not_assigned_amount == $payment->[0]->amount * -1; + $bt->update_attributes(invoice_amount => $bt->invoice_amount + ($payment->[0]->amount * -1)); # create record_link - my @props = ( + my %props = ( from_table => 'bank_transactions', from_id => $::form->{bt_id}, to_table => 'gl', to_id => $::form->{id}, ); - SL::DB::RecordLink->new(@props)->save; + SL::DB::RecordLink->new(%props)->save; + # and tighten holy acc_trans_id for this bank_transaction + my %props_acc = ( + acc_trans_id => $payment->[0]->acc_trans_id, + bank_transaction_id => $bt->id, + gl_id => $payment->[0]->trans_id, + ); + my $bta = SL::DB::BankTransactionAccTrans->new(%props_acc); + $bta->save; } 1;