X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAR.pm;h=002041ecf8fb47419044913a2c7e2ad9b11f7d06;hb=706d20f46c3e638de6ffca27e0fbdd48394b24ab;hp=7aa709df47d0986b4339489365b8443912b3fa94;hpb=e87f4016fbce09fc32b3b7ca18b78f364ad6ee6f;p=kivitendo-erp.git diff --git a/SL/AR.pm b/SL/AR.pm index 7aa709df4..002041ecf 100644 --- a/SL/AR.pm +++ b/SL/AR.pm @@ -35,6 +35,7 @@ package AR; use Data::Dumper; +use SL::DATEV qw(:CONSTANTS); use SL::DBUtils; use SL::IO; use SL::MoreCommon; @@ -273,6 +274,27 @@ sub post_transaction { IO->set_datepaid(table => 'ar', id => $form->{id}, dbh => $dbh); + # safety check datev export + if ($::lx_office_conf{datev_check}{check_on_ar_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; + } + } + my $rc = 1; if (!$provided_dbh) { $rc = $dbh->commit(); @@ -354,7 +376,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); @@ -427,6 +449,7 @@ sub ar_transactions { qq| a.transaction_description, | . qq| pr.projectnumber AS globalprojectnumber, | . qq| c.name, c.customernumber, c.country, c.ustid, b.description as customertype, | . + qq| c.id as customer_id, | . qq| e.name AS employee, | . qq| e2.name AS salesman, | . qq| tz.description AS taxzone, | . @@ -560,7 +583,7 @@ sub get_transdate { sub setup_form { $main::lxdebug->enter_sub(); - my ($self, $form) = @_; + my ($self, $form, $for_post_payments) = @_; my ($exchangerate, $akey, $j, $k, $index, $taxamount, $totaltax, $taxrate, $diff, $totalwithholding, $withholdingrate, $totalamount, $taxincluded, $tax); @@ -570,12 +593,16 @@ sub setup_form { $exchangerate = $form->{exchangerate} ? $form->{exchangerate} : 1; foreach my $key (keys %{ $form->{AR_links} }) { - # 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 "AR_paid"; + for my $i (1 .. scalar @{ $form->{acc_trans}{$key} }) { if ($key eq "AR_paid") { $j++;