X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIR.pm;h=04e071e27c5c4529d2572741ee44adb832be5e27;hb=5b5dbec0272c91697acf33c4842ee9d63f041f22;hp=edf55f16a978361715f8ac839a6783558e0003b2;hpb=854a9820edf79b7fdea4890f8802039836ab94c8;p=kivitendo-erp.git diff --git a/SL/IR.pm b/SL/IR.pm index edf55f16a..04e071e27 100644 --- a/SL/IR.pm +++ b/SL/IR.pm @@ -38,11 +38,13 @@ use SL::AM; use SL::ARAP; use SL::Common; use SL::CVar; +use SL::DATEV qw(:CONSTANTS); use SL::DBUtils; use SL::DO; use SL::GenericTranslations; use SL::IO; use SL::MoreCommon; +use SL::DB::Default; use List::Util qw(min); use strict; @@ -209,7 +211,7 @@ sub post_invoice { # update parts table by setting lastcost to current price, don't allow negative values by using abs $query = qq|UPDATE parts SET lastcost = ? WHERE id = ?|; - @values = (abs($form->{"sellprice_$i"}), conv_i($form->{"id_$i"})); + @values = (abs($form->{"sellprice_$i"} / $basefactor), conv_i($form->{"id_$i"})); do_query($form, $dbh, $query, @values); # check if we sold the item already and @@ -337,7 +339,7 @@ sub post_invoice { # update lastcost $query = qq|UPDATE parts SET lastcost = ? WHERE id = ?|; - do_query($form, $dbh, $query, $form->{"sellprice_$i"}, conv_i($form->{"id_$i"})); + do_query($form, $dbh, $query, $form->{"sellprice_$i"} / $basefactor, conv_i($form->{"id_$i"})); } next if $payments_only; @@ -501,7 +503,7 @@ sub post_invoice { for my $i (1 .. $form->{paidaccounts}) { if ($form->{"acc_trans_id_$i"} && $payments_only - && ($::lx_office_conf{features}->{payments_changeable} == 0)) { + && (SL::DB::Default->get->payments_changeable == 0)) { next; } @@ -683,6 +685,27 @@ sub post_invoice { 'arap_id' => $form->{id}, 'table' => 'ap',); + # safety check datev export + if ($::instance_conf->get_datev_check_on_purchase_invoice) { + my $transdate = $::form->{invdate} ? DateTime->from_lxoffice($::form->{invdate}) : 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(); @@ -1415,7 +1438,7 @@ sub post_payment { $old_form = save_form(); # Delete all entries in acc_trans from prior payments. - if ($::lx_office_conf{features}->{payments_changeable} != 0) { + if (SL::DB::Default->get->payments_changeable != 0) { $self->_delete_payments($form, $dbh); }