X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAR.pm;h=57739188a485cde1c845117524f0f36f3570775f;hb=25ad1535122a8cd3bab24b0b71bd9bf887c40641;hp=a39481b828c3c9ce7072091ab9c8381a7dedca76;hpb=b1b4e6878345cc1a8b590dd7362e4a50048f2417;p=kivitendo-erp.git diff --git a/SL/AR.pm b/SL/AR.pm index a39481b82..57739188a 100644 --- a/SL/AR.pm +++ b/SL/AR.pm @@ -35,9 +35,11 @@ package AR; use Data::Dumper; +use SL::DATEV qw(:CONSTANTS); use SL::DBUtils; use SL::IO; use SL::MoreCommon; +use SL::DB::Default; use strict; @@ -156,12 +158,13 @@ sub post_transaction { invnumber = ?, ordnumber = ?, transdate = ?, customer_id = ?, taxincluded = ?, amount = ?, duedate = ?, paid = ?, netamount = ?, curr = ?, notes = ?, department_id = ?, - employee_id = ?, storno = ?, storno_id = ?, globalproject_id = ? + employee_id = ?, storno = ?, storno_id = ?, globalproject_id = ?, + direct_debit = ? WHERE id = ?|; my @values = ($form->{invnumber}, $form->{ordnumber}, conv_date($form->{transdate}), conv_i($form->{customer_id}), $form->{taxincluded} ? 't' : 'f', $form->{amount}, conv_date($form->{duedate}), $form->{paid}, $form->{netamount}, $form->{currency}, $form->{notes}, conv_i($form->{department_id}), conv_i($form->{employee_id}), $form->{storno} ? 't' : 'f', $form->{storno_id}, - conv_i($form->{globalproject_id}), conv_i($form->{id})); + conv_i($form->{globalproject_id}), $form->{direct_debit} ? 't' : 'f', conv_i($form->{id})); do_query($form, $dbh, $query, @values); # add individual transactions for AR, amount and taxes @@ -202,7 +205,7 @@ sub post_transaction { # add paid transactions for my $i (1 .. $form->{paidaccounts}) { - if ($form->{"acc_trans_id_$i"} && $payments_only && ($::lx_office_conf{features}->{payments_changeable} == 0)) { + if ($form->{"acc_trans_id_$i"} && $payments_only && (SL::DB::Default->get->payments_changeable == 0)) { next; } @@ -273,6 +276,27 @@ sub post_transaction { IO->set_datepaid(table => 'ar', id => $form->{id}, dbh => $dbh); + # safety check datev export + if ($::instance_conf->get_datev_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(); @@ -334,7 +358,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); } @@ -427,6 +451,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, | . @@ -449,6 +474,10 @@ sub ar_transactions { qq|LEFT JOIN department d ON (d.id = a.department_id)|; my $where = "1 = 1"; + if ($form->{customernumber}) { + $where .= " AND c.customernumber = ?"; + push(@values, $form->{customernumber}); + } if ($form->{customer_id}) { $where .= " AND a.customer_id = ?"; push(@values, $form->{customer_id});