1 #=====================================================================
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
7 #=====================================================================
8 # SQL-Ledger Accounting
11 # Author: Dieter Simader
12 # Email: dsimader@sql-ledger.org
13 # Web: http://www.sql-ledger.org
17 # This program is free software; you can redistribute it and/or modify
18 # it under the terms of the GNU General Public License as published by
19 # the Free Software Foundation; either version 2 of the License, or
20 # (at your option) any later version.
22 # This program is distributed in the hope that it will be useful,
23 # but WITHOUT ANY WARRANTY; without even the implied warranty of
24 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 # GNU General Public License for more details.
26 # You should have received a copy of the GNU General Public License
27 # along with this program; if not, write to the Free Software
28 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
30 #======================================================================
32 # Account reconciliation routines
34 #======================================================================
44 $main::lxdebug->enter_sub();
46 my ($self, $myconfig, $form) = @_;
48 my $dbh = SL::DB->client->dbh;
51 qq|SELECT accno, description | .
53 qq|WHERE link LIKE '%_paid%' AND category IN ('A', 'L') | .
56 $form->{PR} = selectall_hashref_query($form, $dbh, $query);
58 $main::lxdebug->leave_sub();
61 sub payment_transactions {
62 $main::lxdebug->enter_sub();
64 my ($self, $myconfig, $form) = @_;
66 # connect to database, turn AutoCommit off
67 my $dbh = SL::DB->client->dbh;
72 if ($form->{fromdate}) {
74 qq|SELECT sum(a.amount), | .
75 qq| (SELECT DISTINCT c2.category FROM chart c2 | .
76 qq| WHERE c2.accno = ?) AS category | .
77 qq|FROM acc_trans a | .
78 qq|JOIN chart c ON (c.id = a.chart_id) | .
79 qq|WHERE a.transdate < ? AND a.cleared = '1' AND c.accno = ?|;
80 @values = ($form->{accno}, conv_date($form->{fromdate}), $form->{accno});
84 qq|SELECT sum(a.amount), | .
85 qq| (SELECT DISTINCT c2.category FROM chart c2 | .
86 qq| WHERE c2.accno = ?) AS category | .
87 qq|FROM acc_trans a | .
88 qq|JOIN chart c ON (c.id = a.chart_id) | .
89 qq|WHERE a.cleared = '1' AND c.accno = ?|;
90 @values = ($form->{accno}, $form->{accno});
93 ($form->{beginningbalance}, $form->{category}) =
94 selectrow_query($form, $dbh, $query, @values);
98 qq|SELECT c.name, ac.source, ac.transdate, ac.cleared, | .
99 qq| ac.fx_transaction, ac.amount, a.id, | .
100 qq| ac.acc_trans_id AS oid | .
101 qq|FROM customer c, acc_trans ac, ar a, chart ch | .
102 qq|WHERE c.id = a.customer_id | .
103 qq| AND ac.cleared = '0' | .
104 qq| AND ac.trans_id = a.id | .
105 qq| AND ac.chart_id = ch.id | .
106 qq| AND ch.accno = ? |;
107 push(@values, $form->{accno});
109 if($form->{fromdate}) {
110 $query .= qq| AND ac.transdate >= ? |;
111 push(@values, conv_date($form->{fromdate}));
115 $query .= qq| AND ac.transdate <= ? |;
116 push(@values, conv_date($form->{todate}));
119 if($form->{additional_fromdate}) {
120 $query .= qq| AND ac.transdate >= ? |;
121 push(@values, conv_date($form->{additional_fromdate}));
124 if($form->{additional_todate}){
125 $query .= qq| AND ac.transdate <= ? |;
126 push(@values, conv_date($form->{additional_todate}));
129 if($form->{filter_amount}){
130 $query .= qq| AND ac.amount = ? |;
131 push(@values, conv_i($form->{filter_amount}));
137 qq|SELECT v.name, ac.source, ac.transdate, ac.cleared, | .
138 qq| ac.fx_transaction, ac.amount, a.id, | .
139 qq| ac.acc_trans_id AS oid | .
140 qq|FROM vendor v, acc_trans ac, ap a, chart ch | .
141 qq|WHERE v.id = a.vendor_id | .
142 qq| AND ac.cleared = '0' | .
143 qq| AND ac.trans_id = a.id | .
144 qq| AND ac.chart_id = ch.id | .
145 qq| AND ch.accno = ? |;
147 push(@values, $form->{accno});
149 if($form->{fromdate}) {
150 $query .= qq| AND ac.transdate >= ? |;
151 push(@values, conv_date($form->{fromdate}));
155 $query .= qq| AND ac.transdate <= ? |;
156 push(@values, conv_date($form->{todate}));
159 if($form->{additional_fromdate}) {
160 $query .= qq| AND ac.transdate >= ? |;
161 push(@values, conv_date($form->{additional_fromdate}));
164 if($form->{additional_todate}){
165 $query .= qq| AND ac.transdate <= ? |;
166 push(@values, conv_date($form->{additional_todate}));
169 if($form->{filter_amount}){
170 $query .= qq| AND ac.amount = ? |;
171 push(@values, conv_i($form->{filter_amount}));
177 qq|SELECT g.description, ac.source, ac.transdate, ac.cleared, | .
178 qq| ac.fx_transaction, ac.amount, g.id, | .
179 qq| ac.acc_trans_id AS oid | .
180 qq|FROM gl g, acc_trans ac, chart ch | .
181 qq|WHERE g.id = ac.trans_id | .
182 qq| AND ac.cleared = '0' | .
183 qq| AND ac.trans_id = g.id | .
184 qq| AND ac.chart_id = ch.id | .
185 qq| AND ch.accno = ? |;
187 push(@values, $form->{accno});
189 if($form->{fromdate}) {
190 $query .= qq| AND ac.transdate >= ? |;
191 push(@values, conv_date($form->{fromdate}));
195 $query .= qq| AND ac.transdate <= ? |;
196 push(@values, conv_date($form->{todate}));
199 if($form->{additional_fromdate}) {
200 $query .= qq| AND ac.transdate >= ? |;
201 push(@values, conv_date($form->{additional_fromdate}));
204 if($form->{additional_todate}){
205 $query .= qq| AND ac.transdate <= ? |;
206 push(@values, conv_date($form->{additional_todate}));
209 if($form->{filter_amount}){
210 $query .= qq| AND ac.amount = ? |;
211 push(@values, conv_i($form->{filter_amount}));
214 $query .= " ORDER BY 3,7,8";
216 $form->{PR} = selectall_hashref_query($form, $dbh, $query, @values);
218 $main::lxdebug->leave_sub();
222 $main::lxdebug->enter_sub();
224 my ($self, $myconfig, $form) = @_;
226 SL::DB->client->with_transaction(sub {
227 my $dbh = SL::DB->client->dbh;
232 for $i (1 .. $form->{rowcount}) {
233 if ($form->{"cleared_$i"}) {
235 qq|UPDATE acc_trans SET cleared = '1' | .
236 qq|WHERE acc_trans_id = ?|;
237 do_query($form, $dbh, $query, $form->{"oid_$i"});
239 # clear fx_transaction
240 if ($form->{"fxoid_$i"}) {
242 qq|UPDATE acc_trans SET cleared = '1' | .
243 qq|WHERE acc_trans_id = ?|;
244 do_query($form, $dbh, $query, $form->{"fxoid_$i"});
249 }) or do { die SL::DB->client->error };
251 $main::lxdebug->leave_sub();
254 sub get_statement_balance {
255 $main::lxdebug->enter_sub();
257 my ($self, $myconfig, $form) = @_;
259 # connect to database, turn AutoCommit off
260 my $dbh = SL::DB->client->dbh;
262 my ($query, @values);
264 $query = qq|SELECT sum(amount) FROM acc_trans where chart_id=45 AND cleared='1'|;
266 if($form->{fromdate}) {
267 $query .= qq| AND transdate >= ? |;
268 push(@values, conv_date($form->{fromdate}));
272 $query .= qq| AND transdate <= ? |;
273 push(@values, conv_date($form->{todate}));
276 ($form->{statement_balance}) = selectrow_query($form, $dbh, $query, @values);
278 $main::lxdebug->leave_sub();