Additional fix to previous commit.
[fa-stable.git] / reporting / rep108.php
index a3519221d453818e5588b3f68b8385948bf280f4..a3f76f38f9b00dbcc2b1f779a9ece7f6fd13ea52 100644 (file)
@@ -1,12 +1,12 @@
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
-       Released under the terms of the GNU General Public License, GPL, 
-       as published by the Free Software Foundation, either version 3 
+       Released under the terms of the GNU General Public License, GPL,
+       as published by the Free Software Foundation, either version 3
        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
        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.  
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_CUSTSTATREP';
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_CUSTSTATREP';
@@ -22,6 +22,7 @@ include_once($path_to_root . "/includes/session.inc");
 include_once($path_to_root . "/includes/date_functions.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
 include_once($path_to_root . "/includes/date_functions.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
+include_once($path_to_root . "/includes/db/crm_contacts_db.inc");
 
 //----------------------------------------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------------------------------------
 
@@ -29,18 +30,23 @@ print_statements();
 
 //----------------------------------------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------------------------------------
 
-function getTransactions($debtorno, $date)
+function getTransactions($debtorno, $date, $show_also_allocated)
 {
     $sql = "SELECT ".TB_PREF."debtor_trans.*,
 {
     $sql = "SELECT ".TB_PREF."debtor_trans.*,
-                               (".TB_PREF."debtor_trans.ov_amount + ".TB_PREF."debtor_trans.ov_gst + ".TB_PREF."debtor_trans.ov_freight + 
+                               (".TB_PREF."debtor_trans.ov_amount + ".TB_PREF."debtor_trans.ov_gst + ".TB_PREF."debtor_trans.ov_freight +
                                ".TB_PREF."debtor_trans.ov_freight_tax + ".TB_PREF."debtor_trans.ov_discount)
                                AS TotalAmount, ".TB_PREF."debtor_trans.alloc AS Allocated,
                                ((".TB_PREF."debtor_trans.type = ".ST_SALESINVOICE.")
                                ".TB_PREF."debtor_trans.ov_freight_tax + ".TB_PREF."debtor_trans.ov_discount)
                                AS TotalAmount, ".TB_PREF."debtor_trans.alloc AS Allocated,
                                ((".TB_PREF."debtor_trans.type = ".ST_SALESINVOICE.")
-                                       AND ".TB_PREF."debtor_trans.due_date < '$date') AS OverDue
-                       FROM ".TB_PREF."debtor_trans
-                       WHERE ".TB_PREF."debtor_trans.tran_date <= '$date' AND ".TB_PREF."debtor_trans.debtor_no = ".db_escape($debtorno)."
+                               AND ".TB_PREF."debtor_trans.due_date < '$date') AS OverDue
+                               FROM ".TB_PREF."debtor_trans
+                               WHERE ".TB_PREF."debtor_trans.tran_date <= '$date' AND ".TB_PREF."debtor_trans.debtor_no = ".db_escape($debtorno)."
                                AND ".TB_PREF."debtor_trans.type <> ".ST_CUSTDELIVERY."
                                AND ".TB_PREF."debtor_trans.type <> ".ST_CUSTDELIVERY."
-                               ORDER BY ".TB_PREF."debtor_trans.tran_date";
+                                       AND ABS(".TB_PREF."debtor_trans.ov_amount + ".TB_PREF."debtor_trans.ov_gst + ".TB_PREF."debtor_trans.ov_freight +
+                               ".TB_PREF."debtor_trans.ov_freight_tax + ".TB_PREF."debtor_trans.ov_discount) > 1e-6";
+       if (!$show_also_allocated)
+               $sql .= " AND ABS(ABS(".TB_PREF."debtor_trans.ov_amount + ".TB_PREF."debtor_trans.ov_gst + ".TB_PREF."debtor_trans.ov_freight +
+                               ".TB_PREF."debtor_trans.ov_freight_tax + ".TB_PREF."debtor_trans.ov_discount) - alloc) > 1e-6";
+       $sql .= " ORDER BY ".TB_PREF."debtor_trans.tran_date";
 
     return db_query($sql,"No transactions were returned");
 }
 
     return db_query($sql,"No transactions were returned");
 }
@@ -55,9 +61,12 @@ function print_statements()
 
        $customer = $_POST['PARAM_0'];
        $currency = $_POST['PARAM_1'];
 
        $customer = $_POST['PARAM_0'];
        $currency = $_POST['PARAM_1'];
-       $email = $_POST['PARAM_2'];
-       $comments = $_POST['PARAM_3'];
+       $show_also_allocated = $_POST['PARAM_2'];
+       $email = $_POST['PARAM_3'];
+       $comments = $_POST['PARAM_4'];
+       $orientation = $_POST['PARAM_5'];
 
 
+       $orientation = ($orientation ? 'L' : 'P');
        $dec = user_price_dec();
 
        $cols = array(4, 100, 130, 190, 250, 320, 385, 450, 515);
        $dec = user_price_dec();
 
        $cols = array(4, 100, 130, 190, 250, 320, 385, 450, 515);
@@ -73,15 +82,12 @@ function print_statements()
        $PastDueDays2 = 2 * $PastDueDays1;
 
        if ($email == 0)
        $PastDueDays2 = 2 * $PastDueDays1;
 
        if ($email == 0)
-       {
-               $rep = new FrontReport(_('STATEMENT'), "StatementBulk", user_pagesize());
-               $rep->currency = $cur;
-               $rep->Font();
-               $rep->Info($params, $cols, null, $aligns);
-       }
-
-       $sql = "SELECT debtor_no, name AS DebtorName, address, tax_id, email, curr_code, curdate() AS tran_date, payment_terms FROM ".TB_PREF."debtors_master";
-       if ($customer != ALL_NUMERIC)
+               $rep = new FrontReport(_('STATEMENT'), "StatementBulk", user_pagesize(), 9, $orientation);
+   if ($orientation == 'L')
+       recalculate_cols($cols);
+       $sql = "SELECT debtor_no, name AS DebtorName, address, tax_id, curr_code, curdate() AS tran_date FROM ".TB_PREF."debtors_master";
+       if ($customer != ALL_TEXT)
                $sql .= " WHERE debtor_no = ".db_escape($customer);
        else
                $sql .= " ORDER by name";
                $sql .= " WHERE debtor_no = ".db_escape($customer);
        else
                $sql .= " ORDER by name";
@@ -89,38 +95,39 @@ function print_statements()
 
        while ($myrow=db_fetch($result))
        {
 
        while ($myrow=db_fetch($result))
        {
+               if ($currency != ALL_TEXT && $myrow['curr_code'] != $currency) {
+                       continue;
+               }       
                $date = date('Y-m-d');
 
                $myrow['order_'] = "";
 
                $date = date('Y-m-d');
 
                $myrow['order_'] = "";
 
-               $TransResult = getTransactions($myrow['debtor_no'], $date);
+               $TransResult = getTransactions($myrow['debtor_no'], $date, $show_also_allocated);
                $baccount = get_default_bank_account($myrow['curr_code']);
                $params['bankaccount'] = $baccount['id'];
                if (db_num_rows($TransResult) == 0)
                        continue;
                if ($email == 1)
                {
                $baccount = get_default_bank_account($myrow['curr_code']);
                $params['bankaccount'] = $baccount['id'];
                if (db_num_rows($TransResult) == 0)
                        continue;
                if ($email == 1)
                {
-                       $rep = new FrontReport("", "", user_pagesize());
-                       $rep->currency = $cur;
-                       $rep->Font();
+                       $rep = new FrontReport("", "", user_pagesize(), 9, $orientation);
                        $rep->title = _('STATEMENT');
                        $rep->filename = "Statement" . $myrow['debtor_no'] . ".pdf";
                        $rep->Info($params, $cols, null, $aligns);
                }
                        $rep->title = _('STATEMENT');
                        $rep->filename = "Statement" . $myrow['debtor_no'] . ".pdf";
                        $rep->Info($params, $cols, null, $aligns);
                }
-               $rep->Header2($myrow, null, null, $baccount, 12);
+
+               $contacts = get_customer_contacts($myrow['debtor_no'], 'invoice');
+               $rep->SetHeaderType('Header2');
+               $rep->currency = $cur;
+               $rep->Font();
+               $rep->Info($params, $cols, null, $aligns);
+
+               //= get_branch_contacts($branch['branch_code'], 'invoice', $branch['debtor_no']);
+               $rep->SetCommonData($myrow, null, null, $baccount, ST_STATEMENT, $contacts);
+               $rep->NewPage();
                $rep->NewLine();
                $rep->NewLine();
-               $linetype = true;
-               $doctype = 12;
-               if ($rep->currency != $myrow['curr_code'])
-               {
-                       include($path_to_root . "/reporting/includes/doctext2.inc");
-               }
-               else
-               {
-                       include($path_to_root . "/reporting/includes/doctext.inc");
-               }
+               $doctype = ST_STATEMENT;
                $rep->fontSize += 2;
                $rep->fontSize += 2;
-               $rep->TextCol(0, 8, $doc_Outstanding);
+               $rep->TextCol(0, 8, _("Outstanding Transactions"));
                $rep->fontSize -= 2;
                $rep->NewLine(2);
                while ($myrow2=db_fetch($TransResult))
                $rep->fontSize -= 2;
                $rep->NewLine(2);
                while ($myrow2=db_fetch($TransResult))
@@ -134,7 +141,7 @@ function print_statements()
                        $rep->TextCol(2, 3,     sql2date($myrow2['tran_date']), -2);
                        if ($myrow2['type'] == ST_SALESINVOICE)
                                $rep->TextCol(3, 4,     sql2date($myrow2['due_date']), -2);
                        $rep->TextCol(2, 3,     sql2date($myrow2['tran_date']), -2);
                        if ($myrow2['type'] == ST_SALESINVOICE)
                                $rep->TextCol(3, 4,     sql2date($myrow2['due_date']), -2);
-                       if ($myrow2['type'] == ST_SALESINVOICE)
+                       if ($myrow2['type'] == ST_SALESINVOICE || $myrow2['type'] == ST_BANKPAYMENT)
                                $rep->TextCol(4, 5,     $DisplayTotal, -2);
                        else
                                $rep->TextCol(5, 6,     $DisplayTotal, -2);
                                $rep->TextCol(4, 5,     $DisplayTotal, -2);
                        else
                                $rep->TextCol(5, 6,     $DisplayTotal, -2);
@@ -142,13 +149,13 @@ function print_statements()
                        $rep->TextCol(7, 8,     $DisplayNet, -2);
                        $rep->NewLine();
                        if ($rep->row < $rep->bottomMargin + (10 * $rep->lineHeight))
                        $rep->TextCol(7, 8,     $DisplayNet, -2);
                        $rep->NewLine();
                        if ($rep->row < $rep->bottomMargin + (10 * $rep->lineHeight))
-                               $rep->Header2($myrow, null, null, $baccount, 12);
+                               $rep->NewPage();
                }
                }
-               $nowdue = "1-" . $PastDueDays1 . " " . $doc_Days;
-               $pastdue1 = $PastDueDays1 + 1 . "-" . $PastDueDays2 . " " . $doc_Days;
-               $pastdue2 = $doc_Over . " " . $PastDueDays2 . " " . $doc_Days;
-               $CustomerRecord = get_customer_details($myrow['debtor_no']);
-               $str = array($doc_Current, $nowdue, $pastdue1, $pastdue2, $doc_Total_Balance);
+               $nowdue = "1-" . $PastDueDays1 . " " . _("Days");
+               $pastdue1 = $PastDueDays1 + 1 . "-" . $PastDueDays2 . " " . _("Days");
+               $pastdue2 = _("Over") . " " . $PastDueDays2 . " " . _("Days");
+               $CustomerRecord = get_customer_details($myrow['debtor_no'], null, $show_also_allocated);
+               $str = array(_("Current"), $nowdue, $pastdue1, $pastdue2, _("Total Balance"));
                $str2 = array(number_format2(($CustomerRecord["Balance"] - $CustomerRecord["Due"]),$dec),
                        number_format2(($CustomerRecord["Due"]-$CustomerRecord["Overdue1"]),$dec),
                        number_format2(($CustomerRecord["Overdue1"]-$CustomerRecord["Overdue2"]) ,$dec),
                $str2 = array(number_format2(($CustomerRecord["Balance"] - $CustomerRecord["Due"]),$dec),
                        number_format2(($CustomerRecord["Due"]-$CustomerRecord["Overdue1"]),$dec),
                        number_format2(($CustomerRecord["Overdue1"]-$CustomerRecord["Overdue2"]) ,$dec),
@@ -163,11 +170,11 @@ function print_statements()
                for ($i = 0; $i < 5; $i++)
                        $rep->TextWrap($col[$i], $rep->row, $col[$i + 1] - $col[$i], $str2[$i], 'right');
                if ($email == 1)
                for ($i = 0; $i < 5; $i++)
                        $rep->TextWrap($col[$i], $rep->row, $col[$i + 1] - $col[$i], $str2[$i], 'right');
                if ($email == 1)
-                       $rep->End($email, $doc_Statement . " " . $doc_as_of . " " . sql2date($date), $myrow, 12);
+                       $rep->End($email, _("Statement") . " " . _("as of") . " " . sql2date($date));
 
        }
        if ($email == 0)
                $rep->End();
 }
 
 
        }
        if ($email == 0)
                $rep->End();
 }
 
-?>
\ No newline at end of file
+?>