X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCP.pm;h=5786bf86257e0a2dd6cfe1c3ddf89b3298b40574;hb=e5f571cf1b7b61910b5f1b6f50188a9568a274e9;hp=64fd988c5de903d445fddb449e6539c8667085c2;hpb=c09536f461b4933a1813b2af5e17eb6214f7bf38;p=kivitendo-erp.git diff --git a/SL/CP.pm b/SL/CP.pm index 64fd988c5..5786bf862 100644 --- a/SL/CP.pm +++ b/SL/CP.pm @@ -128,20 +128,9 @@ sub get_openvc { $form->{"all_$form->{vc}"} = selectall_hashref_query($form, $dbh, $query); } - if ($form->{ARAP} eq 'AR') { - $query = - qq|SELECT d.id, d.description | . - qq|FROM department d | . - qq|WHERE d.role = 'P' | . - qq|ORDER BY 2|; - } else { - $query = - qq|SELECT d.id, d.description | . - qq|FROM department d | . - qq|ORDER BY 2|; - } - $form->{all_departments} = selectall_hashref_query($form, $dbh, $query); - + # aufruf für all_deparments rausgenommen, da die abteilungen nur + # beim buchen der belege (rechnung, fibu) geändert werden und danach + # NICHT mehr überschrieben werden $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -160,16 +149,14 @@ sub get_openinvoices { my $buysell = $form->{vc} eq 'customer' ? "buy" : "sell"; my $arap = $form->{arap} eq "ar" ? "ar" : "ap"; - my $curr_null = $form->{curreny} ? '' : ' OR a.curr IS NULL'; # fix: after sql-injection fix, curr is inserted as NULL, before that as '' - my $query = qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, a.curr | . qq|FROM $arap a | . - qq|WHERE (a.${vc}_id = ?) AND (a.curr = ? $curr_null) AND NOT (a.amount = paid)| . + qq|WHERE (a.${vc}_id = ?) AND (COALESCE(a.curr, '') = ?) AND NOT (a.amount = a.paid)| . qq|ORDER BY a.id|; my $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), - $form->{currency}); + "$form->{currency}"); $form->{PR} = []; while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { @@ -182,6 +169,16 @@ sub get_openinvoices { } $sth->finish; + + $query = < ?) + AND (amount <> paid) +SQL + ($form->{openinvoices_other_currencies}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), "$form->{currency}"); + $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -232,11 +229,6 @@ sub process_payment { qq| (c.link LIKE '%:AP:%')) |; } - my $paymentamount = $form->{amount}; - - my $null; - ($null, $form->{department_id}) = split(/--/, $form->{department}); - $form->{department_id} *= 1; # query to retrieve paid amount $query = @@ -252,7 +244,6 @@ sub process_payment { $form->{"due_$i"} = $form->parse_amount($myconfig, $form->{"due_$i"}); if ($form->{"checked_$i"} && $form->{"paid_$i"}) { - $paymentamount = (($paymentamount * 1000) - ($form->{"paid_$i"} * 1000)) / 1000; # get exchangerate for original $query = @@ -352,26 +343,16 @@ sub process_payment { if(!exists $form->{addition}) { $form->{snumbers} = qq|invnumber_| . $form->{"invnumber_$i"}; $form->{addition} = "POSTED"; - $form->save_history($form->dbconnect($myconfig)); + $form->save_history; } # /saving the history } } - - # record a AR/AP with a payment - if ($form->round_amount($paymentamount, 2) > 0) { - $form->{invnumber} = ""; - OP::overpayment("", $myconfig, $form, $dbh, $paymentamount, $ml, 1); - } - my $rc; - if ($form->round_amount($paymentamount, 2) < 0) { - $dbh->rollback; - $rc = 0; - } - if ($form->round_amount($paymentamount, 2) == 0) { + # Hier wurden negativen Zahlungseingänge abgefangen + # da Zahlungsein- und ausgänge immer positiv sind + # Besser: in Oberfläche schon prüfen erledigt jb 10.2010 $rc = $dbh->commit; - } $dbh->disconnect;