- #=====================================================================
- # LedgerSMB
- # Small Medium Business Accounting software
- # http://www.ledgersmb.org/
- #
- # Copyright (C) 2006
- # This work contains copyrighted information from a number of sources all used
- # with permission.
- #
- # This file contains source code included with or based on SQL-Ledger which
- # is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed
- # under the GNU General Public License version 2 or, at your option, any later
- # version. For a full list including contact information of contributors,
- # maintainers, and copyright holders, see the CONTRIBUTORS file.
- #
- # Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
- # Copyright (C) 2001
- #
- # Author: DWS Systems Inc.
- # Web: http://www.sql-ledger.org
- #
- # Contributors:
- #
- #======================================================================
- #
- # This file has undergone whitespace cleanup.
- #
- #======================================================================
- #
- # chart of accounts
- #
- #======================================================================
- package CA;
- sub all_accounts {
- my ( $self, $myconfig, $form ) = @_;
- my $amount = ();
- # connect to database
- my $dbh = $form->{dbh};
- my $approved = ($form->{approved})? 'TRUE' : 'FALSE';
- my $query = qq|
- SELECT accno, SUM(acc_trans.amount) AS amount
- FROM chart
- JOIN acc_trans ON (chart.id = acc_trans.chart_id)
- JOIN transactions ON (acc_trans.trans_id = transactions.id)
- JOIN (SELECT id, approved, 'ap' AS tablename FROM ap
- UNION
- SELECT id, approved, 'ar' as tablename FROM ar
- UNION
- SELECT id, approved, 'gl' as tablename FROM gl
- ) g ON (g.id = acc_trans.trans_id
- AND transactions.table_name = g.tablename)
- WHERE ($approved OR acc_trans.approved)
- AND (g.approved OR $approved)
- GROUP BY accno|;
- my $sth = $dbh->prepare($query);
- $sth->execute || $form->dberror($query);
- while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
- $form->db_parse_numeric(sth=>$sth, hashref=>$ref);
- $amount{ $ref->{accno} } = $ref->{amount};
- }
- $sth->finish;
- $query = qq|
- SELECT accno, description
- FROM gifi|;
- $sth = $dbh->prepare($query);
- $sth->execute || $form->dberror($query);
- my $gifi = ();
- while ( my ( $accno, $description ) = $sth->fetchrow_array ) {
- $gifi{$accno} = $description;
- }
- $sth->finish;
- $query = qq|
- SELECT c.id, c.accno, c.description, c.charttype,
- c.gifi_accno, c.category, c.link
- FROM chart c
- ORDER BY accno|;
- $sth = $dbh->prepare($query);
- $sth->execute || $form->dberror($query);
- while ( my $ca = $sth->fetchrow_hashref(NAME_lc) ) {
- $ca->{amount} = $amount{ $ca->{accno} };
- $ca->{gifi_description} = $gifi{ $ca->{gifi_accno} };
- if ( $ca->{amount} < 0 ) {
- $ca->{debit} = $ca->{amount} * -1;
- }
- else {
- $ca->{credit} = $ca->{amount};
- }
- push @{ $form->{CA} }, $ca;
- }
- $sth->finish;
- $dbh->commit;
- }
- 1;
|