X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fgl.pl;h=8f512329a5fc17fb9c9f708b8958af901cec3ed2;hb=529750ee9087ac159f07708ccd75d5403e694ce6;hp=f816dcd56868ee07a49d8bd8276a51fa9d9a4912;hpb=2c33e93fb5caf10f96cfa462781830f28efa285c;p=kivitendo-erp.git diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index f816dcd56..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; @@ -965,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( @@ -981,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' } ], @@ -996,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" @@ -1352,22 +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 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;