Merged last changes from stable.
[fa-stable.git] / purchasing / includes / supp_trans_class.inc
index 8178d30d1094affee1bf159c88b1058ebdbe7f8f..547d833e3012f0031f8b394649019cdfe9e36667 100644 (file)
@@ -22,6 +22,7 @@ class supp_trans
        var $supplier_id;
        var $supplier_name;
        var $terms;
+       var $ex_rate;
        
        var $tax_description;
        var $tax_group_id;
@@ -45,6 +46,7 @@ class supp_trans
        var $tax_algorithm;
        var $stored_algorithm;
        var $currency;
+       var $tax_overrides = array();           // array of taxes manually inserted during sales invoice entry
 
        function supp_trans($trans_type, $trans_no=0)
        {
@@ -76,7 +78,10 @@ class supp_trans
                $this->grn_items[$grn_item_id] = new grn_item($grn_item_id, $po_detail_item, 
                        $item_code, $item_description, $qty_recd, $prev_quantity_inv, $this_quantity_inv, 
                        $order_price, $chg_price, $std_cost_unit, $gl_code, $this->tax_included);
+
                $this->src_docs = find_src_invoices($this);
+
+               unset($this->tax_overrides); // cancel tax overrides after cart change
                return 1;
        }
 
@@ -85,51 +90,53 @@ class supp_trans
                $this->gl_codes[$this->gl_codes_counter] = new gl_codes($this->gl_codes_counter, 
                        $gl_code, $gl_act_name, $gl_dim, $gl_dim2, $amount, $memo_);
                $this->gl_codes_counter++;
+               unset($this->tax_overrides); // cancel tax overrides after cart change
                return 1;
        }
 
        function remove_grn_from_trans($grn_item_id)
        {
+               unset($this->tax_overrides); // cancel tax overrides after cart change
            unset($this->grn_items[$grn_item_id]);
        }
        function remove_gl_codes_from_trans($gl_code_counter)
        {
-            unset($this->gl_codes[$gl_code_counter]);
+               unset($this->tax_overrides); // cancel tax overrides after cart change
+               unset($this->gl_codes[$gl_code_counter]);
        }
-       
+
        function is_valid_trans_to_post()
        {
                return (count($this->grn_items) > 0 || count($this->gl_codes) > 0 || 
                        ($this->ov_amount != 0) || ($this->ov_discount > 0));
        }
-       
+
        function clear_items()
        {
                unset($this->grn_items);
                unset($this->gl_codes);
                $this->ov_amount = $this->ov_discount = $this->supplier_id = 0;
-               
+
                $this->grn_items = array();
                $this->gl_codes = array();
        }
-       
+
     function get_taxes($tax_group_id=null, $shipping_cost=0, $gl_codes=true)
     {
        $items = array();
        $prices = array();
-       
+
         if ($tax_group_id == null)
                $tax_group_id = $this->tax_group_id;
-               
-               // preload the taxgroup !
-               $tax_group = get_tax_group_items_as_array($tax_group_id);       
-        
+
+               // preload the taxgroup
+               $tax_group = get_tax_group_items_as_array($tax_group_id);
+
         foreach ($this->grn_items as $ln_itm) 
         {
                $items[] = $ln_itm->item_code;
-//             $prices[] =round( ($ln_itm->this_quantity_inv * $ln_itm->taxfree_charge_price($tax_group_id, $tax_group)),
                $prices[] =round( ($ln_itm->this_quantity_inv * $ln_itm->chg_price),
-                        user_price_dec());
+                               user_price_dec());
         }
 
         if ($tax_group_id == null)
@@ -137,8 +144,6 @@ class supp_trans
         $taxes = get_tax_for_items($items, $prices, $shipping_cost, $tax_group_id, 
                $this->tax_included, null, $this->tax_algorithm);
 
-///////////////// Joe Hunt 2009.08.18
-
                if ($gl_codes)
                {
                        foreach ($this->gl_codes as $gl_code)
@@ -147,34 +152,39 @@ class supp_trans
                                if ($index !== false)
                                {
                                        $taxes[$index]['Value'] += $gl_code->amount;
-                               }       
+                               }
+                       }
+               }
+
+               if(isset($this->tax_overrides))
+                       foreach($this->tax_overrides as $id => $value) // add values entered manually
+                       {
+                               $taxes[$id]['Override'] = $value;
                        }
-               }       
-////////////////               
         return $taxes;
-    }          
+    }
        //
        //      Returns total invoice amount without taxes.
        //
     function get_total_taxfree($tax_group_id=null)
     {
        $total = 0;
-       
+
                // preload the taxgroup !
                if ($tax_group_id != null)
                        $tax_group = get_tax_group_items_as_array($tax_group_id);
-               else            
-                       $tax_group = null;      
-       
+               else
+                       $tax_group = null;
+
                foreach ($this->grn_items as $ln_itm)
                $total += round(($ln_itm->this_quantity_inv * $ln_itm->taxfree_charge_price($tax_group_id, $tax_group)),
                         user_price_dec());
 
                foreach ($this->gl_codes as $gl_line)
-               {       //////// 2009-08-18 Joe Hunt
+               {
                        if (!is_tax_account($gl_line->gl_code))
                                $total += $gl_line->amount;
-               }       
+               }
                return $total;
     }
        //
@@ -188,7 +198,7 @@ class supp_trans
                        $total += round($ln_itm->this_quantity_inv * $ln_itm->chg_price, user_price_dec());
 
                foreach ($this->gl_codes as $gl_line)
-               {   //////// 2010-10-10 Joe Hunt
+               {
                        if (!is_tax_account($gl_line->gl_code) || $this->tax_included)
                                $total += $gl_line->amount;
                }
@@ -233,17 +243,15 @@ all the info to do the necessary entries without looking up ie additional querie
                $this->gl_code = $gl_code;
                $this->tax_included = $tax_included;
        }
-       
+
        function full_charge_price($tax_group_id, $tax_group=null)
        {
                return get_full_price_for_item($this->item_code, 
                  $this->chg_price, $tax_group_id, $this->tax_included, $tax_group);
        }
-       
+
        function taxfree_charge_price($tax_group_id, $tax_group=null)
        {
-//             if ($tax_group_id==null)
-//                     return $this->chg_price;
                return get_tax_free_price_for_item($this->item_code, $this->chg_price, 
                  $tax_group_id, $this->tax_included, $tax_group);
        }