X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FRC.pm;h=d7d71a3a89a759446b1609d0d1b1db891c233a38;hb=713de5ed35a8a1faea940354254c4e781631c495;hp=9493f0f6a81f34aa413e8e68297a9b61c07ec601;hpb=76c486e3bf157e844b0cf11828d55dae2cb7e439;p=kivitendo-erp.git diff --git a/SL/RC.pm b/SL/RC.pm index 9493f0f6a..d7d71a3a8 100644 --- a/SL/RC.pm +++ b/SL/RC.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. #====================================================================== # # Account reconciliation routines @@ -35,6 +36,7 @@ package RC; use SL::DBUtils; +use SL::DB; use strict; @@ -43,8 +45,7 @@ sub paymentaccounts { my ($self, $myconfig, $form) = @_; - # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my $query = qq|SELECT accno, description | . @@ -53,7 +54,6 @@ sub paymentaccounts { qq|ORDER BY accno|; $form->{PR} = selectall_hashref_query($form, $dbh, $query); - $dbh->disconnect; $main::lxdebug->leave_sub(); } @@ -64,7 +64,7 @@ sub payment_transactions { my ($self, $myconfig, $form) = @_; # connect to database, turn AutoCommit off - my $dbh = $form->dbconnect_noauto($myconfig); + my $dbh = SL::DB->client->dbh; my ($query, @values); @@ -93,13 +93,11 @@ sub payment_transactions { ($form->{beginningbalance}, $form->{category}) = selectrow_query($form, $dbh, $query, @values); - my %oid = ('Pg' => 'ac.acc_trans_id', - 'Oracle' => 'ac.rowid'); @values = (); $query = qq|SELECT c.name, ac.source, ac.transdate, ac.cleared, | . qq| ac.fx_transaction, ac.amount, a.id, | . - qq| $oid{$myconfig->{dbdriver}} AS oid | . + qq| ac.acc_trans_id AS oid | . qq|FROM customer c, acc_trans ac, ar a, chart ch | . qq|WHERE c.id = a.customer_id | . qq| AND ac.cleared = '0' | . @@ -118,12 +116,27 @@ sub payment_transactions { push(@values, conv_date($form->{todate})); } + if($form->{additional_fromdate}) { + $query .= qq| AND ac.transdate >= ? |; + push(@values, conv_date($form->{additional_fromdate})); + } + + if($form->{additional_todate}){ + $query .= qq| AND ac.transdate <= ? |; + push(@values, conv_date($form->{additional_todate})); + } + + if($form->{filter_amount}){ + $query .= qq| AND ac.amount = ? |; + push(@values, conv_i($form->{filter_amount})); + } + $query .= qq|UNION | . qq|SELECT v.name, ac.source, ac.transdate, ac.cleared, | . qq| ac.fx_transaction, ac.amount, a.id, | . - qq| $oid{$myconfig->{dbdriver}} AS oid | . + qq| ac.acc_trans_id AS oid | . qq|FROM vendor v, acc_trans ac, ap a, chart ch | . qq|WHERE v.id = a.vendor_id | . qq| AND ac.cleared = '0' | . @@ -143,12 +156,27 @@ sub payment_transactions { push(@values, conv_date($form->{todate})); } + if($form->{additional_fromdate}) { + $query .= qq| AND ac.transdate >= ? |; + push(@values, conv_date($form->{additional_fromdate})); + } + + if($form->{additional_todate}){ + $query .= qq| AND ac.transdate <= ? |; + push(@values, conv_date($form->{additional_todate})); + } + + if($form->{filter_amount}){ + $query .= qq| AND ac.amount = ? |; + push(@values, conv_i($form->{filter_amount})); + } + $query .= qq|UNION | . qq|SELECT g.description, ac.source, ac.transdate, ac.cleared, | . qq| ac.fx_transaction, ac.amount, g.id, | . - qq| $oid{$myconfig->{dbdriver}} AS oid | . + qq| ac.acc_trans_id AS oid | . qq|FROM gl g, acc_trans ac, chart ch | . qq|WHERE g.id = ac.trans_id | . qq| AND ac.cleared = '0' | . @@ -168,12 +196,25 @@ sub payment_transactions { push(@values, conv_date($form->{todate})); } + if($form->{additional_fromdate}) { + $query .= qq| AND ac.transdate >= ? |; + push(@values, conv_date($form->{additional_fromdate})); + } + + if($form->{additional_todate}){ + $query .= qq| AND ac.transdate <= ? |; + push(@values, conv_date($form->{additional_todate})); + } + + if($form->{filter_amount}){ + $query .= qq| AND ac.amount = ? |; + push(@values, conv_i($form->{filter_amount})); + } + $query .= " ORDER BY 3,7,8"; $form->{PR} = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -182,32 +223,57 @@ sub reconcile { my ($self, $myconfig, $form) = @_; - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my ($query, $i); - my %oid = ('Pg' => 'acc_trans_id', - 'Oracle' => 'rowid'); + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - # clear flags - for $i (1 .. $form->{rowcount}) { - if ($form->{"cleared_$i"}) { - $query = - qq|UPDATE acc_trans SET cleared = '1' | . - qq|WHERE $oid{$myconfig->{dbdriver}} = ?|; - do_query($form, $dbh, $query, $form->{"oid_$i"}); + my ($query, $i); - # clear fx_transaction - if ($form->{"fxoid_$i"}) { + # clear flags + for $i (1 .. $form->{rowcount}) { + if ($form->{"cleared_$i"}) { $query = qq|UPDATE acc_trans SET cleared = '1' | . - qq|WHERE $oid{$myconfig->{dbdriver}} = ?|; - do_query($form, $dbh, $query, $form->{"fxoid_$i"}); + qq|WHERE acc_trans_id = ?|; + do_query($form, $dbh, $query, $form->{"oid_$i"}); + + # clear fx_transaction + if ($form->{"fxoid_$i"}) { + $query = + qq|UPDATE acc_trans SET cleared = '1' | . + qq|WHERE acc_trans_id = ?|; + do_query($form, $dbh, $query, $form->{"fxoid_$i"}); + } } } + 1; + }) or do { die SL::DB->client->error }; + + $main::lxdebug->leave_sub(); +} + +sub get_statement_balance { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + + # connect to database, turn AutoCommit off + my $dbh = SL::DB->client->dbh; + + my ($query, @values); + + $query = qq|SELECT sum(amount) FROM acc_trans where chart_id=45 AND cleared='1'|; + + if($form->{fromdate}) { + $query .= qq| AND transdate >= ? |; + push(@values, conv_date($form->{fromdate})); + } + + if($form->{todate}){ + $query .= qq| AND transdate <= ? |; + push(@values, conv_date($form->{todate})); } - $dbh->disconnect; + ($form->{statement_balance}) = selectrow_query($form, $dbh, $query, @values); $main::lxdebug->leave_sub(); }