X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fgl.pl;h=8f512329a5fc17fb9c9f708b8958af901cec3ed2;hb=32753c88522343230971699624b80a27f6ea1746;hp=7ce3a300db882c7298da4766fa358a6224157b78;hpb=10d9b17f7a9c45d07f278ed6031851af5b9c97e5;p=kivitendo-erp.git diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index 7ce3a300d..8f512329a 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,13 +987,17 @@ 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 => [ action => [ t8('Storno'), submit => [ '#form', { action => 'storno' } ], confirm => t8('Do you really want to cancel this general ledger transaction?'), - disabled => !$form->{id} ? t8('This general ledger transaction has not been posted yet.') : undef, + disabled => !$form->{id} ? t8('This general ledger transaction has not been posted yet.') + : $form->{storno} ? t8('A canceled general ledger transaction cannot be canceled again.') + : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.') + : undef, ], action => [ t8('Delete'), submit => [ '#form', { action => 'delete' } ], @@ -990,6 +1006,8 @@ 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.') + : $form->{storno} ? t8('A canceled general ledger transaction cannot be deleted.') : undef, ], ], # end of combobox "Storno" @@ -1346,21 +1364,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 (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;