A final fix for report Inventory Purchasing Report. With help from forum use chrison.
[fa-stable.git] / reporting / rep209.php
index cbdf485f2a9ddec60fd6e493e358f425a4057a1d..343f9f7dee5f35dcdbaecdde094e85e6aa31703d 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>.
 ***********************************************************************/
 
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 
@@ -23,6 +23,8 @@ $path_to_root="..";
 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 . "/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 . "/includes/db/crm_contacts_db.inc");
+include_once($path_to_root . "/taxes/tax_calc.inc");
 
 //----------------------------------------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------------------------------------
 
@@ -31,9 +33,10 @@ print_po();
 //----------------------------------------------------------------------------------------------------
 function get_po($order_no)
 {
 //----------------------------------------------------------------------------------------------------
 function get_po($order_no)
 {
-       $sql = "SELECT ".TB_PREF."purch_orders.*, ".TB_PREF."suppliers.supp_name,  ".TB_PREF."suppliers.supp_account_no,
+       $sql = "SELECT ".TB_PREF."purch_orders.*, ".TB_PREF."suppliers.supp_name,  "
+               .TB_PREF."suppliers.supp_account_no,".TB_PREF."suppliers.tax_included,".TB_PREF."suppliers.gst_no AS tax_id,
                ".TB_PREF."suppliers.curr_code, ".TB_PREF."suppliers.payment_terms, ".TB_PREF."locations.location_name,
                ".TB_PREF."suppliers.curr_code, ".TB_PREF."suppliers.payment_terms, ".TB_PREF."locations.location_name,
-               ".TB_PREF."suppliers.email, ".TB_PREF."suppliers.address, ".TB_PREF."suppliers.contact
+               ".TB_PREF."suppliers.address, ".TB_PREF."suppliers.contact, ".TB_PREF."suppliers.tax_group_id
                FROM ".TB_PREF."purch_orders, ".TB_PREF."suppliers, ".TB_PREF."locations
                WHERE ".TB_PREF."purch_orders.supplier_id = ".TB_PREF."suppliers.supplier_id
                AND ".TB_PREF."locations.loc_code = into_stock_location
                FROM ".TB_PREF."purch_orders, ".TB_PREF."suppliers, ".TB_PREF."locations
                WHERE ".TB_PREF."purch_orders.supplier_id = ".TB_PREF."suppliers.supplier_id
                AND ".TB_PREF."locations.loc_code = into_stock_location
@@ -55,7 +58,7 @@ function get_po_details($order_no)
 
 function print_po()
 {
 
 function print_po()
 {
-       global $path_to_root;
+       global $path_to_root, $show_po_item_codes;
 
        include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
 
        include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
@@ -83,6 +86,7 @@ function print_po()
        if ($email == 0)
        {
                $rep = new FrontReport(_('PURCHASE ORDER'), "PurchaseOrderBulk", user_pagesize());
        if ($email == 0)
        {
                $rep = new FrontReport(_('PURCHASE ORDER'), "PurchaseOrderBulk", user_pagesize());
+               $rep->SetHeaderType('Header2');
                $rep->currency = $cur;
                $rep->Font();
                $rep->Info($params, $cols, null, $aligns);
                $rep->currency = $cur;
                $rep->Font();
                $rep->Info($params, $cols, null, $aligns);
@@ -97,6 +101,7 @@ function print_po()
                if ($email == 1)
                {
                        $rep = new FrontReport("", "", user_pagesize());
                if ($email == 1)
                {
                        $rep = new FrontReport("", "", user_pagesize());
+                       $rep->SetHeaderType('Header2');
                        $rep->currency = $cur;
                        $rep->Font();
                        $rep->title = _('PURCHASE ORDER');
                        $rep->currency = $cur;
                        $rep->Font();
                        $rep->title = _('PURCHASE ORDER');
@@ -105,10 +110,13 @@ function print_po()
                }
                else
                        $rep->title = _('PURCHASE ORDER');
                }
                else
                        $rep->title = _('PURCHASE ORDER');
-               $rep->Header2($myrow, null, $myrow, $baccount, ST_PURCHORDER);
+               $contacts = get_supplier_contacts($myrow['supplier_id'], 'order');
+               $rep->SetCommonData($myrow, null, $myrow, $baccount, ST_PURCHORDER, $contacts);
+               $rep->NewPage();
 
                $result = get_po_details($i);
                $SubTotal = 0;
 
                $result = get_po_details($i);
                $SubTotal = 0;
+               $items = $prices = array();
                while ($myrow2=db_fetch($result))
                {
                        $data = get_purchase_data($myrow['supplier_id'], $myrow2['item_code']);
                while ($myrow2=db_fetch($result))
                {
                        $data = get_purchase_data($myrow['supplier_id'], $myrow2['item_code']);
@@ -123,15 +131,20 @@ function print_po()
                                        $myrow2['unit_price'] = round2($myrow2['unit_price'] * $data['conversion_factor'], user_price_dec());
                                        $myrow2['quantity_ordered'] = round2($myrow2['quantity_ordered'] / $data['conversion_factor'], user_qty_dec());
                                }
                                        $myrow2['unit_price'] = round2($myrow2['unit_price'] * $data['conversion_factor'], user_price_dec());
                                        $myrow2['quantity_ordered'] = round2($myrow2['quantity_ordered'] / $data['conversion_factor'], user_qty_dec());
                                }
-                       }       
+                       }
                        $Net = round2(($myrow2["unit_price"] * $myrow2["quantity_ordered"]), user_price_dec());
                        $Net = round2(($myrow2["unit_price"] * $myrow2["quantity_ordered"]), user_price_dec());
+                       $prices[] = $Net;
+                       $items[] = $myrow2['item_code'];
                        $SubTotal += $Net;
                        $dec2 = 0;
                        $DisplayPrice = price_decimal_format($myrow2["unit_price"],$dec2);
                        $DisplayQty = number_format2($myrow2["quantity_ordered"],get_qty_dec($myrow2['item_code']));
                        $DisplayNet = number_format2($Net,$dec);
                        $SubTotal += $Net;
                        $dec2 = 0;
                        $DisplayPrice = price_decimal_format($myrow2["unit_price"],$dec2);
                        $DisplayQty = number_format2($myrow2["quantity_ordered"],get_qty_dec($myrow2['item_code']));
                        $DisplayNet = number_format2($Net,$dec);
-                       //$rep->TextCol(0, 1,   $myrow2['item_code'], -2);
-                       $rep->TextCol(0, 2,     $myrow2['description'], -2);
+                       if ($show_po_item_codes) {
+                               $rep->TextCol(0, 1,     $myrow2['item_code'], -2);
+                               $rep->TextCol(1, 2,     $myrow2['description'], -2);
+                       } else
+                               $rep->TextCol(0, 2,     $myrow2['description'], -2);
                        $rep->TextCol(2, 3,     sql2date($myrow2['delivery_date']), -2);
                        $rep->TextCol(3, 4,     $DisplayQty, -2);
                        $rep->TextCol(4, 5,     $myrow2['units'], -2);
                        $rep->TextCol(2, 3,     sql2date($myrow2['delivery_date']), -2);
                        $rep->TextCol(3, 4,     $DisplayQty, -2);
                        $rep->TextCol(4, 5,     $myrow2['units'], -2);
@@ -139,7 +152,7 @@ function print_po()
                        $rep->TextCol(6, 7,     $DisplayNet, -2);
                        $rep->NewLine(1);
                        if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
                        $rep->TextCol(6, 7,     $DisplayNet, -2);
                        $rep->NewLine(1);
                        if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
-                               $rep->Header2($myrow, $branch, $myrow, $baccount, ST_PURCHORDER);
+                               $rep->NewPage();
                }
                if ($myrow['comments'] != "")
                {
                }
                if ($myrow['comments'] != "")
                {
@@ -149,38 +162,68 @@ function print_po()
                $DisplaySubTot = number_format2($SubTotal,$dec);
 
                $rep->row = $rep->bottomMargin + (15 * $rep->lineHeight);
                $DisplaySubTot = number_format2($SubTotal,$dec);
 
                $rep->row = $rep->bottomMargin + (15 * $rep->lineHeight);
-               $linetype = true;
                $doctype = ST_PURCHORDER;
                $doctype = ST_PURCHORDER;
-               if ($rep->currency != $myrow['curr_code'])
-               {
-                       include($path_to_root . "/reporting/includes/doctext2.inc");
-               }
-               else
+
+               $rep->TextCol(3, 6, _("Sub-total"), -2);
+               $rep->TextCol(6, 7,     $DisplaySubTot, -2);
+               $rep->NewLine();
+
+               $tax_items = get_tax_for_items($items, $prices, 0,
+                 $myrow['tax_group_id'], $myrow['tax_included'],  null);
+               $first = true;
+               foreach($tax_items as $tax_item)
                {
                {
-                       include($path_to_root . "/reporting/includes/doctext.inc");
+                       if ($tax_item['Value'] == 0)
+                               continue;
+                       $DisplayTax = number_format2($tax_item['Value'], $dec);
+
+                       $tax_type_name = $tax_item['tax_type_name'];
+
+                       if ($myrow['tax_included'])
+                       {
+                               if (isset($alternative_tax_include_on_docs) && $alternative_tax_include_on_docs == 1)
+                               {
+                                       if ($first)
+                                       {
+                                               $rep->TextCol(3, 6, _("Total Tax Excluded"), -2);
+                                               $rep->TextCol(6, 7,     number_format2($sign*$tax_item['net_amount'], $dec), -2);
+                                               $rep->NewLine();
+                                       }
+                                       $rep->TextCol(3, 6, $tax_type_name, -2);
+                                       $rep->TextCol(6, 7,     $DisplayTax, -2);
+                                       $first = false;
+                               }
+                               else
+                                       $rep->TextCol(3, 7, _("Included") . " " . $tax_type_name . _("Amount") . ": " . $DisplayTax, -2);
+                       }
+                       else
+                       {
+                               $SubTotal += $tax_item['Value'];
+                               $rep->TextCol(3, 6, $tax_type_name, -2);
+                               $rep->TextCol(6, 7,     $DisplayTax, -2);
+                       }
+                       $rep->NewLine();
                }
 
                }
 
-               $rep->TextCol(3, 6, $doc_Sub_total, -2);
-               $rep->TextCol(6, 7,     $DisplaySubTot, -2);
                $rep->NewLine();
                $DisplayTotal = number_format2($SubTotal, $dec);
                $rep->Font('bold');
                $rep->NewLine();
                $DisplayTotal = number_format2($SubTotal, $dec);
                $rep->Font('bold');
-               $rep->TextCol(3, 6, $doc_TOTAL_PO, - 2);
+               $rep->TextCol(3, 6, _("TOTAL PO"), - 2);
                $rep->TextCol(6, 7,     $DisplayTotal, -2);
                $rep->TextCol(6, 7,     $DisplayTotal, -2);
-               $words = price_in_words($myrow['Total'], ST_PURCHORDER);
+               $words = price_in_words($SubTotal, ST_PURCHORDER);
                if ($words != "")
                {
                        $rep->NewLine(1);
                        $rep->TextCol(1, 7, $myrow['curr_code'] . ": " . $words, - 2);
                if ($words != "")
                {
                        $rep->NewLine(1);
                        $rep->TextCol(1, 7, $myrow['curr_code'] . ": " . $words, - 2);
-               }       
+               }
                $rep->Font();
                if ($email == 1)
                {
                $rep->Font();
                if ($email == 1)
                {
-                       $myrow['contact_email'] = $myrow['email'];
                        $myrow['DebtorName'] = $myrow['supp_name'];
                        $myrow['DebtorName'] = $myrow['supp_name'];
-                       if ($myrow['contact'] != '') $myrow['DebtorName'] = $myrow['contact'];
-                       $myrow['reference'] = $myrow['order_no'];
-                       $rep->End($email, $doc_Order_no . " " . $myrow['reference'], $myrow);
+
+                       if ($myrow['reference'] == "")
+                               $myrow['reference'] = $myrow['order_no'];
+                       $rep->End($email);
                }
        }
        if ($email == 0)
                }
        }
        if ($email == 0)