1b555d6c3b06bf7b178c166623be64427647272e
[fa-stable.git] / reporting / rep114.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_TAXREP';
13 // ----------------------------------------------------------------
14 // $ Revision:  2.0 $
15 // Creator:     Joe Hunt
16 // date_:       2005-05-19
17 // Title:       Sales Summary Report
18 // ----------------------------------------------------------------
19 $path_to_root="..";
20
21 include_once($path_to_root . "/includes/session.inc");
22 include_once($path_to_root . "/includes/date_functions.inc");
23 include_once($path_to_root . "/includes/data_checks.inc");
24 include_once($path_to_root . "/gl/includes/gl_db.inc");
25
26 //------------------------------------------------------------------
27
28
29 print_sales_summary_report();
30
31 function getTaxTransactions($from, $to, $tax_id)
32 {
33         $fromdate = date2sql($from);
34         $todate = date2sql($to);
35
36         $sql = "SELECT d.debtor_no, d.name AS cust_name, d.tax_id, dt.type, dt.trans_no,  
37                         CASE WHEN dt.type=".ST_CUSTCREDIT." THEN (ov_amount+ov_freight+ov_discount)*-1 
38                         ELSE (ov_amount+ov_freight+ov_discount) END *dt.rate AS total
39                 FROM ".TB_PREF."debtor_trans dt
40                         LEFT JOIN ".TB_PREF."debtors_master d ON d.debtor_no=dt.debtor_no
41                 WHERE (dt.type=".ST_SALESINVOICE." OR dt.type=".ST_CUSTCREDIT.") ";
42         if ($tax_id)
43                 $sql .= "AND tax_id<>'' ";
44         $sql .= "AND dt.tran_date >=".db_escape($fromdate)." AND dt.tran_date<=".db_escape($todate)."
45                 ORDER BY d.debtor_no"; 
46     return db_query($sql,"No transactions were returned");
47 }
48
49 function getTaxes($type, $trans_no)
50 {
51         $sql = "SELECT included_in_price, SUM(CASE WHEN trans_type=".ST_CUSTCREDIT." THEN -amount ELSE amount END * ex_rate) AS tax
52                 FROM ".TB_PREF."trans_tax_details WHERE trans_type=$type AND trans_no=$trans_no GROUP BY included_in_price";
53
54     $result = db_query($sql,"No transactions were returned");
55     if ($result !== false)
56         return db_fetch($result);
57     else
58         return null;
59 }       
60
61 //----------------------------------------------------------------------------------------------------
62
63 function print_sales_summary_report()
64 {
65         global $path_to_root;
66         
67         $from = $_POST['PARAM_0'];
68         $to = $_POST['PARAM_1'];
69         $tax_id = $_POST['PARAM_2'];
70         $comments = $_POST['PARAM_3'];
71         $destination = $_POST['PARAM_4'];
72         if ($tax_id == 0)
73                 $tid = _('No');
74         else
75                 $tid = _('Yes');
76
77
78         if ($destination)
79                 include_once($path_to_root . "/reporting/includes/excel_report.inc");
80         else
81                 include_once($path_to_root . "/reporting/includes/pdf_report.inc");
82
83         $dec = user_price_dec();
84
85         $rep = new FrontReport(_('Sales Summary Report'), "SalesSummaryReport", user_pagesize());
86
87         $params =   array(      0 => $comments,
88                                                 1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
89                                                 2 => array(  'text' => _('Tax Id Only'),'from' => $tid,'to' => ''));
90
91         $cols = array(0, 130, 180, 270, 350, 500);
92
93         $headers = array(_('Customer'), _('Tax Id'), _('Total ex. Tax'), _('Tax'));
94         $aligns = array('left', 'left', 'right', 'right');
95         $rep->Font();
96         $rep->Info($params, $cols, $headers, $aligns);
97         $rep->NewPage();
98         
99         $totalnet = 0.0;
100         $totaltax = 0.0;
101         $transactions = getTaxTransactions($from, $to, $tax_id);
102
103         $rep->TextCol(0, 4, _('Balances in Home Currency'));
104         $rep->NewLine(2);
105         
106         $custno = 0;
107         $tax = $total = 0;
108         $custname = $tax_id = "";
109         while ($trans=db_fetch($transactions))
110         {
111                 if ($custno != $trans['debtor_no'])
112                 {
113                         if ($custno != 0)
114                         {
115                                 $rep->TextCol(0, 1, $custname);
116                                 $rep->TextCol(1, 2,     $tax_id);
117                                 $rep->AmountCol(2, 3, $total, $dec);
118                                 $rep->AmountCol(3, 4, $tax, $dec);
119                                 $totalnet += $total;
120                                 $totaltax += $tax;
121                                 $total = $tax = 0;
122                                 $rep->NewLine();
123
124                                 if ($rep->row < $rep->bottomMargin + $rep->lineHeight)
125                                 {
126                                         $rep->Line($rep->row - 2);
127                                         $rep->NewPage();
128                                 }
129                         }
130                         $custno = $trans['debtor_no'];
131                         $custname = $trans['cust_name'];
132                         $tax_id = $trans['tax_id'];
133                 }       
134                 $taxes = getTaxes($trans['type'], $trans['trans_no']);
135                 if ($taxes != null)
136                 {
137                         if ($taxes['included_in_price'])
138                                 $trans['total'] -= $taxes['tax'];
139                         $tax += $taxes['tax'];
140                 }       
141                 $total += $trans['total']; 
142         }
143         if ($custno != 0)
144         {
145                 $rep->TextCol(0, 1, $custname);
146                 $rep->TextCol(1, 2,     $tax_id);
147                 $rep->AmountCol(2, 3, $total, $dec);
148                 $rep->AmountCol(3, 4, $tax, $dec);
149                 $totalnet += $total;
150                 $totaltax += $tax;
151                 $rep->NewLine();
152         }
153         $rep->Font('bold');
154         $rep->NewLine();
155         $rep->Line($rep->row + $rep->lineHeight);
156         $rep->TextCol(0, 2,     _("Total"));
157         $rep->AmountCol(2, 3, $totalnet, $dec);
158         $rep->AmountCol(3, 4, $totaltax, $dec);
159         $rep->Line($rep->row - 5);
160         $rep->Font();
161
162         $rep->End();
163 }
164
165 ?>