X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCP.pm;h=75e753e07605f309881729e2697f722ba2a13a18;hb=1b032ef45d886922f1fe347ec234c9b0c8c50efd;hp=29ac35ab0b545756f6a330e7dc88e71fd8531b89;hpb=c6b2257945060625bcb86fa7e2efd27c737480ff;p=kivitendo-erp.git diff --git a/SL/CP.pm b/SL/CP.pm index 29ac35ab0..75e753e07 100644 --- a/SL/CP.pm +++ b/SL/CP.pm @@ -25,7 +25,8 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. #====================================================================== # # Check and receipt printing payment module backend routines @@ -36,6 +37,7 @@ package CP; use SL::DBUtils; +use SL::DB; use strict; @@ -66,8 +68,7 @@ sub paymentaccounts { my ($self, $myconfig, $form) = @_; - # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my $ARAP = $form->{ARAP} eq "AR" ? "AR" : "AP"; @@ -76,7 +77,7 @@ sub paymentaccounts { qq|FROM chart | . qq|WHERE link LIKE ? |. qq|ORDER BY accno|; - my $sth = prepare_execute_query($form, $dbh, $query, '%' . $ARAP . '%'); + my $sth = prepare_execute_query($form, $dbh, $query, like($ARAP)); $form->{PR}{ $form->{ARAP} } = (); $form->{PR}{"$form->{ARAP}_paid"} = (); @@ -97,41 +98,6 @@ sub paymentaccounts { $query = qq|SELECT closedto FROM defaults|; ($form->{closedto}) = selectrow_query($form, $dbh, $query); - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - -sub get_openvc { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - my $dbh = $form->dbconnect($myconfig); - - my $arap = ($form->{vc} eq 'customer') ? 'ar' : 'ap'; - my $vc = $form->{vc} eq "customer" ? "customer" : "vendor"; - my $query = - qq|SELECT count(*) | . - qq|FROM $vc ct, $arap a | . - qq|WHERE (a.${vc}_id = ct.id) AND (a.amount != a.paid)|; - my ($count) = selectrow_query($form, $dbh, $query); - - # build selection list - if ($count < $myconfig->{vclimit}) { - $query = - qq|SELECT DISTINCT ct.id, ct.name | . - qq|FROM $vc ct, $arap a | . - qq|WHERE (a.${vc}_id = ct.id) AND (a.amount != a.paid) | . - qq|ORDER BY ct.name|; - $form->{"all_$form->{vc}"} = 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(); } @@ -141,22 +107,29 @@ sub get_openinvoices { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my $vc = $form->{vc} eq "customer" ? "customer" : "vendor"; my $buysell = $form->{vc} eq 'customer' ? "buy" : "sell"; my $arap = $form->{arap} eq "ar" ? "ar" : "ap"; + my @values = (conv_i($form->{"${vc}_id"}), "$form->{currency}"); + my $whereinvoice = ''; + if ($::form->{invnumber}) { + $whereinvoice = ' AND a.invnumber LIKE ? '; + push @values, $::form->{invnumber}; + } + my $query = qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, cu.name AS curr | . qq|FROM $arap a | . qq|LEFT JOIN currencies cu ON (cu.id=a.currency_id)| . qq|WHERE (a.${vc}_id = ?) AND cu.name = ? AND NOT (a.amount = a.paid)| . + $whereinvoice . qq|ORDER BY a.id|; - my $sth = prepare_execute_query($form, $dbh, $query, - conv_i($form->{"${vc}_id"}), - "$form->{currency}"); + + my $sth = prepare_execute_query($form, $dbh, $query, @values); $form->{PR} = []; while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { @@ -179,19 +152,24 @@ sub get_openinvoices { SQL ($form->{openinvoices_other_currencies}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), "$form->{currency}"); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } sub process_payment { + my ($self, $myconfig, $form) = @_; $main::lxdebug->enter_sub(); + my $rc = SL::DB->client->with_transaction(\&_process_payment, $self, $myconfig, $form); + + $::lxdebug->leave_sub; + return $rc; +} + +sub _process_payment { my ($self, $myconfig, $form) = @_; my $amount; - # connect to database, turn AutoCommit off - my $dbh = $form->dbconnect_noauto($myconfig); + my $dbh = SL::DB->client->dbh; my ($paymentaccno) = split /--/, $form->{account}; @@ -341,25 +319,16 @@ sub process_payment { # saving the history $form->{id} = $form->{"id_$i"}; if(!exists $form->{addition}) { - $form->{snumbers} = qq|invnumber_| . $form->{"invnumber_$i"}; - $form->{addition} = "POSTED"; + $form->{snumbers} = qq|invnumber_| . $form->{"invnumber_$i"}; + $form->{what_done} = "invoice"; + $form->{addition} = "PAYMENT POSTED"; $form->save_history; } # /saving the history } } - my $rc; - # 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; - - $main::lxdebug->leave_sub(); - - return $rc; + return 1; } 1; -