- #=====================================================================
- # LedgerSMB Small Medium Business Accounting
- # 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: Antonio Gallardo <agssa@ibw.com.ni>
- # Benjamin Lee <benjaminlee@consultant.com>
- #
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # 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.
- #======================================================================
- #
- # module for preparing Income Statement and Balance Sheet
- #
- #======================================================================
- require "$form->{path}/arap.pl";
- use LedgerSMB::PE;
- use LedgerSMB::RP;
- 1;
- # end of main
- # this is for our long dates
- # $locale->text('January')
- # $locale->text('February')
- # $locale->text('March')
- # $locale->text('April')
- # $locale->text('May ')
- # $locale->text('June')
- # $locale->text('July')
- # $locale->text('August')
- # $locale->text('September')
- # $locale->text('October')
- # $locale->text('November')
- # $locale->text('December')
- # this is for our short month
- # $locale->text('Jan')
- # $locale->text('Feb')
- # $locale->text('Mar')
- # $locale->text('Apr')
- # $locale->text('May')
- # $locale->text('Jun')
- # $locale->text('Jul')
- # $locale->text('Aug')
- # $locale->text('Sep')
- # $locale->text('Oct')
- # $locale->text('Nov')
- # $locale->text('Dec')
- # $locale->text('Balance Sheet')
- # $locale->text('Income Statement')
- # $locale->text('Trial Balance')
- # $locale->text('AR Aging')
- # $locale->text('AP Aging')
- # $locale->text('Tax collected')
- # $locale->text('Tax paid')
- # $locale->text('Receipts')
- # $locale->text('Payments')
- # $locale->text('Project Transactions')
- # $locale->text('Non-taxable Sales')
- # $locale->text('Non-taxable Purchases')
- sub report {
- %report = ( balance_sheet => { title => 'Balance Sheet' },
- income_statement => { title => 'Income Statement' },
- trial_balance => { title => 'Trial Balance' },
- ar_aging => { title => 'AR Aging', vc => 'customer' },
- ap_aging => { title => 'AP Aging', vc => 'vendor' },
- tax_collected => { title => 'Tax collected', vc => 'customer' },
- tax_paid => { title => 'Tax paid' },
- nontaxable_sales => { title => 'Non-taxable Sales', vc => 'customer' },
- nontaxable_purchases => { title => 'Non-taxable Purchases' },
- receipts => { title => 'Receipts', vc => 'customer' },
- payments => { title => 'Payments' },
- projects => { title => 'Project Transactions' },
- inv_activity => { title => 'Inventory Activity'},
- );
-
- $form->{title} = $locale->text($report{$form->{report}}->{title});
- $gifi = qq|
- <tr>
- <th align=right>|.$locale->text('Accounts').qq|</th>
- <td><input name=accounttype class=radio type=radio value=standard checked> |.$locale->text('Standard').qq|
-
- <input name=accounttype class=radio type=radio value=gifi> |.$locale->text('GIFI').qq|
- </td>
- </tr>
- |;
-
-
- # get departments
- $form->all_departments(\%myconfig, undef, $report{$form->{report}}->{vc});
- if (@{ $form->{all_department} }) {
- $form->{selectdepartment} = "<option>\n";
- for (@{ $form->{all_department} }) { $form->{selectdepartment} .= qq|<option value="$_->{description}--$_->{id}">$_->{description}\n| }
- }
-
- $department = qq|
- <tr>
- <th align=right nowrap>|.$locale->text('Department').qq|</th>
- <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
- </tr>
- | if $form->{selectdepartment};
- if (@{ $form->{all_years} }) {
- # accounting years
- $form->{selectaccountingyear} = "<option>\n";
- for (@{ $form->{all_years} }) { $form->{selectaccountingyear} .= qq|<option>$_\n| }
- $form->{selectaccountingmonth} = "<option>\n";
- for (sort keys %{ $form->{all_month} }) { $form->{selectaccountingmonth} .= qq|<option value=$_>|.$locale->text($form->{all_month}{$_}).qq|\n| }
- $selectfrom = qq|
- <tr>
- <th align=right>|.$locale->text('Period').qq|</th>
- <td colspan=3>
- <select name=month>$form->{selectaccountingmonth}</select>
- <select name=year>$form->{selectaccountingyear}</select>
- <input name=interval class=radio type=radio value=0 checked> |.$locale->text('Current').qq|
- <input name=interval class=radio type=radio value=1> |.$locale->text('Month').qq|
- <input name=interval class=radio type=radio value=3> |.$locale->text('Quarter').qq|
- <input name=interval class=radio type=radio value=12> |.$locale->text('Year').qq|
- </td>
- </tr>
- |;
- $selectto = qq|
- <tr>
- <th align=right></th>
- <td>
- <select name=month>$form->{selectaccountingmonth}</select>
- <select name=year>$form->{selectaccountingyear}</select>
- </td>
- </tr>
- |;
- }
- $summary = qq|
- <tr>
- <th></th>
- <td><input name=summary type=radio class=radio value=1 checked> |.$locale->text('Summary').qq|
- <input name=summary type=radio class=radio value=0> |.$locale->text('Detail').qq|
- </td>
- </tr>
- |;
- # get projects
- $form->all_projects(\%myconfig);
- if (@{ $form->{all_project} }) {
- $form->{selectproject} = "<option>\n";
- for (@{ $form->{all_project} }) { $form->{selectproject} .= qq|<option value="$_->{projectnumber}--$_->{id}">$_->{projectnumber}\n| }
- $project = qq|
- <tr>
- <th align=right nowrap>|.$locale->text('Project').qq|</th>
- <td colspan=3><select name=projectnumber>$form->{selectproject}</select></td>
- </tr>|;
- }
-
- $form->header;
-
- print qq|
- <body>
- <form method=post action=$form->{script}>
- <input type=hidden name=title value="$form->{title}">
- <table width=100%>
- <tr>
- <th class=listtop>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
- <tr>
- <td>
- <table>
- $department
- |;
- if ($form->{report} eq "projects") {
- print qq|
- $project
- <input type=hidden name=nextsub value=generate_projects>
- <tr>
- <th align=right>|.$locale->text('From').qq|</th>
- <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
- <th align=right>|.$locale->text('To').qq|</th>
- <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
- </tr>
- $selectfrom
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table>
- <tr>
- <th align=right nowrap>|.$locale->text('Include in Report').qq|</th>
- <td><input name=l_heading class=checkbox type=checkbox value=Y> |.$locale->text('Heading').qq|
- <input name=l_subtotal class=checkbox type=checkbox value=Y> |.$locale->text('Subtotal').qq|</td>
- </tr>
- |;
- }
- if ($form->{report} eq "inv_activity"){
- $gifi = '';
- print qq|
- <input type=hidden name=nextsub value=generate_inv_activity>
- <tr>
- <th align=right>|.$locale->text('From').qq|</th>
- <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
- <th align=right>|.$locale->text('To').qq|</th>
- <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
- </tr>
- <tr>
- <th align=right>|.$locale->text('Period').qq|</th>
- <td colspan=3>
- <select name=frommonth>$form->{selectaccountingmonth}</select>
- <select name=fromyear>$form->{selectaccountingyear}</select>
- <input name=interval class=radio type=radio value=0 checked>|.$locale->text('Current').qq|
|