Material cost updated when buying service items. Resulted in double COGS booking.
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 8 Sep 2010 11:14:44 +0000 (11:14 +0000)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 8 Sep 2010 11:14:44 +0000 (11:14 +0000)
CHANGELOG.txt
purchasing/includes/db/grn_db.inc
purchasing/includes/db/invoice_db.inc
sales/includes/db/sales_delivery_db.inc

index 953caac55088972061f540d149d25efbb5ae2c85..342573119d49d79e65040acfd314bae7f8758256 100644 (file)
@@ -19,6 +19,12 @@ Legend:
 ! -> Note
 $ -> Affected files
 
+08-Sep-2010 Joe Hunt
+# Material cost updated when buying service items. Resulted in double COGS booking.
+$ /purchasing/includes/db/grn_db.inc
+  /purchasing/includes/db/invoice_db.inc
+  /sales/includes/db/sales_delivery_db.inc
+  
 ------------------------------- Release 2.3 RC1 --------------------------------
 07-Sep-2010 Janusz Dobrowolski
 ! Release 2.3 RC1
index 344677eadb145cd0708f2a37c381b7a1a3a94983..b1ce52ae93fb2674f5b76644ab35903512218ef0 100644 (file)
@@ -96,8 +96,9 @@ function add_grn(&$po)
 
                        /*Update sales_order_details for the new quantity received and the standard cost used for postings to GL and recorded in the stock movements for FIFO/LIFO stocks valuations*/
                        //------------------- update average material cost ------------------------------------------ Joe Hunt Mar-03-2008
-                       update_average_material_cost($po->supplier_id, $order_line->stock_id, $order_line->price,
-                               $order_line->receive_qty, $date_);
+                       if (is_inventory_item($order_line->stock_id))
+                               update_average_material_cost($po->supplier_id, $order_line->stock_id, $order_line->price,
+                                       $order_line->receive_qty, $date_);
                        //----------------------------------------------------------------------------------------------------------------
                        if ($order_line->qty_received == 0)
                        {
@@ -116,10 +117,10 @@ function add_grn(&$po)
                                $order_line->standard_cost,     $order_line->receive_qty, $order_line->price);
 
                        $po->line_items[$line_no]->grn_item_id = $grn_item;
-                       /* Update location stock records - NB  a po cannot be entered for a service/kit parts */
-            add_stock_move(ST_SUPPRECEIVE, $order_line->stock_id, $grn, $po->Location, $date_, "",
-               $order_line->receive_qty, $order_line->standard_cost,
-               $po->supplier_id, 1, $order_line->price);
+                       /* Update location stock records - NB  a po cannot be entered for a service/kit parts done automatically */
+                       add_stock_move(ST_SUPPRECEIVE, $order_line->stock_id, $grn, $po->Location, $date_, "",
+                               $order_line->receive_qty, $order_line->standard_cost,
+                       $po->supplier_id, 1, $order_line->price);
 
                } /*quantity received is != 0 */
        } /*end of order_line loop */
index 860820a160fca7b3783baedc011a036b0b63a230..308c2c25440ef5129b88262448d32ac910d024bd 100644 (file)
@@ -229,29 +229,31 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                        //{
                        //$diff = $entered_grn->chg_price - $old_price;
                        $old_date = sql2date($old[1]);
-                       $diff = get_diff_in_home_currency($supp_trans->supplier_id, $old_date, $date_, $old_price, 
-                               $entered_grn->chg_price);       
+                       if (is_inventory_item($entered_grn->item_code))
+                       {
+                               $diff = get_diff_in_home_currency($supp_trans->supplier_id, $old_date, $date_, $old_price, 
+                                       $entered_grn->chg_price);       
                        
-                       // always return due to change in currency.
-                       /*$mat_cost = update_average_material_cost(null, $entered_grn->item_code,
-                               $diff, $entered_grn->this_quantity_inv, $old_date, true); */
-                       $mat_cost = update_average_material_cost(null, $entered_grn->item_code,
-                               $diff, $entered_grn->this_quantity_inv, null, true);
+                               // always return due to change in currency.
+                               /*$mat_cost = update_average_material_cost(null, $entered_grn->item_code,
+                                       $diff, $entered_grn->this_quantity_inv, $old_date, true); */
+                               $mat_cost = update_average_material_cost(null, $entered_grn->item_code,
+                                       $diff, $entered_grn->this_quantity_inv, null, true);
                                
-                       //Add GL transaction for GRN Provision in case of difference
-                       if (($diff * $entered_grn->this_quantity_inv) != 0 )
-                       {
-                               $diff_amt = $diff * $entered_grn->this_quantity_inv;
-                               add_gl_trans($trans_type, $invoice_id, $date_,  $iv_act,
-                                       $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], 'GRN Provision',
-                                       $diff_amt, null, null, null,
-                                       "The general ledger transaction could not be added for the GRN of the inventory item"); 
+                               //Add GL transaction for GRN Provision in case of difference
+                               if (($diff * $entered_grn->this_quantity_inv) != 0 )
+                               {
+                                       $diff_amt = $diff * $entered_grn->this_quantity_inv;
+                                       add_gl_trans($trans_type, $invoice_id, $date_,  $iv_act,
+                                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], 'GRN Provision',
+                                               $diff_amt, null, null, null,
+                                               "The general ledger transaction could not be added for the GRN of the inventory item"); 
                                        
-                               add_gl_trans($trans_type, $invoice_id, $date_,  $stock_gl_code["cogs_account"],
-                                       0, 0, 'GRN Provision', -$diff_amt, null, null, null,
-                                       "The general ledger transaction could not be added for the GRN of the inventory item");                         
-                       }
-                       
+                                       add_gl_trans($trans_type, $invoice_id, $date_,  $stock_gl_code["cogs_account"],
+                                               0, 0, 'GRN Provision', -$diff_amt, null, null, null,
+                                               "The general ledger transaction could not be added for the GRN of the inventory item");                         
+                               }
+                       }       
                        // added 2008-12-08 Joe Hunt. Update the purchase data table
                        add_or_update_purchase_data($supp_trans->supplier_id, $entered_grn->item_code, $entered_grn->chg_price); 
                        /*$deliveries = get_deliveries_between($entered_grn->item_code, $old_date, Today()); // extend the period, if invoice is before any deliveries.
@@ -276,7 +278,8 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                                }               
                                update_stock_move_pid(ST_CUSTDELIVERY, $entered_grn->item_code, $old_date, $date_, 0, $mat_cost);
                        } */
-                       update_stock_move_pid(ST_SUPPRECEIVE, $entered_grn->item_code, $old_date, $old_date, $supp_trans->supplier_id, $mat_cost);
+                       if (is_inventory_item($entered_grn->item_code))
+                               update_stock_move_pid(ST_SUPPRECEIVE, $entered_grn->item_code, $old_date, $old_date, $supp_trans->supplier_id, $mat_cost);
                //}
                }
        // ----------------------------------------------------------------------
index 8678aae84e9ed510f11dfd2827818588a1bbf122..f5e455edd9b0e894653579812859c2475ae6754d 100644 (file)
@@ -90,7 +90,7 @@ function write_sales_delivery(&$delivery,$bo_policy)
                        $stock_gl_code = get_stock_gl_code($delivery_line->stock_id);
 
                        /* insert gl_trans to credit stock and debit cost of sales at standard cost*/
-                       if ($delivery_line->standard_cost != 0) {
+                       if (is_inventory_item($delivery_line->stock_id) && $delivery_line->standard_cost != 0) {
 
                                /*first the cost of sales entry*/
                                // 2008-08-01. If there is a Customer Dimension, then override with this,