Revision 25230b8c
Von Jan Büren vor etwa 5 Jahren hinzugefügt
SL/Controller/BankTransaction.pm | ||
---|---|---|
561 | 561 |
|
562 | 562 |
my $bank_transaction = $data{bank_transaction}; |
563 | 563 |
|
564 |
if ($bank_transaction->closed_period) { |
|
565 |
return { |
|
566 |
%data, |
|
567 |
result => 'error', |
|
568 |
message => $::locale->text('Cannot post payment for a closed period!'), |
|
569 |
}; |
|
570 |
} |
|
564 | 571 |
my (@warnings); |
565 | 572 |
|
566 | 573 |
my $worker = sub { |
... | ... | |
729 | 736 |
|
730 | 737 |
croak("No bank transaction ids") unless scalar @{ $::form->{ids}} > 0; |
731 | 738 |
|
732 |
my $closedto = $::locale->parse_date_to_object($::instance_conf->get_closedto); |
|
733 | 739 |
my $success_count; |
734 | 740 |
|
735 | 741 |
foreach my $bt_id (@{ $::form->{ids}} ) { |
736 | 742 |
|
737 | 743 |
my $bank_transaction = SL::DB::Manager::BankTransaction->find_by(id => $bt_id); |
738 | 744 |
croak("No valid bank transaction found") unless (ref($bank_transaction) eq 'SL::DB::BankTransaction'); |
745 |
croak t8('Cannot unlink payment for a closed period!') if $bank_transaction->closed_period; |
|
739 | 746 |
|
740 | 747 |
# everything in one transaction |
741 | 748 |
my $rez = $bank_transaction->db->with_transaction(sub { |
... | ... | |
747 | 754 |
foreach my $acc_trans_id_entry (@{ SL::DB::Manager::BankTransactionAccTrans->get_all(where => [bank_transaction_id => $bt_id ] )}) { |
748 | 755 |
|
749 | 756 |
my $acc_trans = SL::DB::Manager::AccTransaction->get_all(where => [acc_trans_id => $acc_trans_id_entry->acc_trans_id]); |
750 |
# check closedto for acc trans entries |
|
751 |
croak t8('Cannot unlink payment for a closed period!') if (ref $closedto && grep { $_->transdate < $closedto } @{ $acc_trans } ); |
|
752 | 757 |
|
753 | 758 |
# save trans_id and type |
754 | 759 |
die "no type" unless ($acc_trans_id_entry->ar_id || $acc_trans_id_entry->ap_id || $acc_trans_id_entry->gl_id); |
755 | 760 |
$trans_ids{$acc_trans_id_entry->ar_id} = 'ar' if $acc_trans_id_entry->ar_id; |
756 | 761 |
$trans_ids{$acc_trans_id_entry->ap_id} = 'ap' if $acc_trans_id_entry->ap_id; |
757 | 762 |
$trans_ids{$acc_trans_id_entry->gl_id} = 'gl' if $acc_trans_id_entry->gl_id; |
758 |
|
|
759 | 763 |
# 2. all good -> ready to delete acc_trans and bt_acc link |
760 | 764 |
$acc_trans_id_entry->delete; |
761 | 765 |
$_->delete for @{ $acc_trans }; |
Auch abrufbar als: Unified diff
BankTransaction(closed_period) Prüft Valutadatum gegen closedto
Gibt 1 (wahr) zurück falls das Valutadatum der Bankbewegung
innerhalb einer geschloßenen Periode ist. Andernfalls 0.
POD, Test und 2 Stellen im Controller geändert.
Offen: Payment-Helper, der sollte allerdings nichts über den Zustand
der Bankbewegung wissen müssen ...