X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAP.pm;h=eda1e71f41227fd0c43736038888e40b4534b0e7;hb=36da77056776b6a84470fe7a3665077943f846b9;hp=08ec7a3532a498a9fe41ccdf906907a9709ca02f;hpb=e87f4016fbce09fc32b3b7ca18b78f364ad6ee6f;p=kivitendo-erp.git diff --git a/SL/AP.pm b/SL/AP.pm index 08ec7a353..eda1e71f4 100644 --- a/SL/AP.pm +++ b/SL/AP.pm @@ -34,6 +34,7 @@ package AP; +use SL::DATEV qw(:CONSTANTS); use SL::DBUtils; use SL::IO; use SL::MoreCommon; @@ -353,6 +354,27 @@ sub post_transaction { IO->set_datepaid(table => 'ap', id => $form->{id}, dbh => $dbh); + # safety check datev export + if ($::lx_office_conf{datev_check}{check_on_ap_transaction}) { + my $transdate = $::form->{transdate} ? DateTime->from_lxoffice($::form->{transdate}) : undef; + $transdate ||= DateTime->today; + + my $datev = SL::DATEV->new( + exporttype => DATEV_ET_BUCHUNGEN, + format => DATEV_FORMAT_KNE, + dbh => $dbh, + from => $transdate, + to => $transdate, + ); + + $datev->export; + + if ($datev->errors) { + $dbh->rollback; + die join "\n", $::locale->text('DATEV check returned errors:'), $datev->errors; + } + } + if (!$provided_dbh) { $dbh->commit(); $dbh->disconnect(); @@ -591,7 +613,7 @@ sub post_payment { # Set up the content of $form in the way that AR::post_transaction() expects. - $self->setup_form($form); + $self->setup_form($form, 1); $form->{exchangerate} = $form->format_amount($myconfig, $form->{exchangerate}); $form->{defaultcurrency} = $form->get_default_currency($myconfig); @@ -625,7 +647,7 @@ sub post_payment { sub setup_form { $main::lxdebug->enter_sub(); - my ($self, $form) = @_; + my ($self, $form, $for_post_payments) = @_; my ($exchangerate, $i, $j, $k, $key, $akey, $ref, $index, $taxamount, $totalamount, $totaltax, $totalwithholding, $withholdingrate, $taxincluded, $tax, $diff); @@ -645,11 +667,16 @@ sub setup_form { $form->{$key} = $form->{"select$key"}; - # if there is a value we have an old entry $j = 0; $k = 0; + # if there is a value we have an old entry next unless $form->{acc_trans}{$key}; + + # do not use old entries for payments. They come from the form + # even if they are not changeable (then they are in hiddens) + next if $for_post_payments && $key eq "AP_paid"; + for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) { if ($key eq "AP_paid") {