EOL cleanup.
[fa-stable.git] / inventory / includes / db / items_adjust_db.inc
index 57f74bb53b8f8376db783ae2f5dd20fd5f83755d..7be0f9bbb05a1b759b9cb816f8a14af19592008d 100644 (file)
 
 function add_stock_adjustment($items, $location, $date_, $type, $increase, $reference, $memo_)
 {
+       global $Refs;
+
        begin_transaction();
+       $args = func_get_args();
+       $args = (object)array_combine(array('items', 'location', 'date_', 'type', 'increase',
+               'reference', 'memo_'), $args);
+       $args->trans_no = 0;
+       hook_db_prewrite($args, ST_INVADJUST);
 
-       $adj_id = get_next_trans_no(systypes::inventory_adjustment());
+       $adj_id = get_next_trans_no(ST_INVADJUST);
 
        foreach ($items as $line_item)
        {
@@ -27,10 +34,13 @@ function add_stock_adjustment($items, $location, $date_, $type, $increase, $refe
                        $line_item->quantity, $line_item->standard_cost, $memo_);
        }
 
-       add_comments(systypes::inventory_adjustment(), $adj_id, $date_, $memo_);
+       add_comments(ST_INVADJUST, $adj_id, $date_, $memo_);
 
-       references::save_last($reference, systypes::inventory_adjustment());
+       $Refs->save(ST_INVADJUST, $adj_id, $reference);
+       add_audit_trail(ST_INVADJUST, $adj_id, $date_);
 
+       $args->trans_no = $adj_id;
+       hook_db_postwrite($args, ST_INVADJUST);
        commit_transaction();
 
        return $adj_id;
@@ -40,15 +50,16 @@ function add_stock_adjustment($items, $location, $date_, $type, $increase, $refe
 
 function void_stock_adjustment($type_no)
 {
-       void_gl_trans(systypes::inventory_adjustment(), $type_no);
-       void_stock_move(systypes::inventory_adjustment(), $type_no);
+       hook_db_prevoid(ST_INVADJUST, $type_no);
+       void_gl_trans(ST_INVADJUST, $type_no);
+       void_stock_move(ST_INVADJUST, $type_no);
 }
 
 //-------------------------------------------------------------------------------------------------------------
 
 function get_stock_adjustment_items($trans_no)
 {
-       $result = get_stock_moves(systypes::inventory_adjustment(), $trans_no);
+       $result = get_stock_moves(ST_INVADJUST, $trans_no);
 
        if (db_num_rows($result) == 0)
        {
@@ -70,9 +81,42 @@ function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $type,
        display_db_error("Cannot do inventory adjustment for Service item : $stock_id", "");
     }
 
+       /* Logic shifted to function update_average_material_cost
+       //Chaitanya : If negative adjustment result in negative or zero inventory 
+       //then difference should be adjusted
+       $qoh = get_qoh_on_date($stock_id);
+       if ($qoh + $quantity <= 0 && $qoh > 0) //Positive inventory turning zero/negative
+       {
+               global $Refs;
+
+               $id = get_next_trans_no(ST_JOURNAL);
+               $ref = $Refs->get_next(ST_JOURNAL);
+               $diff = get_standard_cost($stock_id) - $standard_cost;
+               
+               if ($diff !=0)
+               {
+                       $stock_gl_code = get_stock_gl_code($stock_id);
+                       $memo = _("For zero inventory of ").$stock_id." INVADJ REF: ".$reference;
+                       //Reverse the inventory effect if $qoh <=0
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["inventory_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
+                               -$qoh * $diff);
+                       //GL Posting to inventory adjustment account
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["adjustment_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
+                               $qoh * $diff);
+                               
+                       add_audit_trail(ST_JOURNAL, $id, $date_);
+                       add_comments(ST_JOURNAL, $id, $date_, $memo);
+                       $Refs->save(ST_JOURNAL, $id, $ref);     
+               }               
+       }*/
+
        update_average_material_cost(null, $stock_id, $standard_cost, $quantity, $date_);
 
-       add_stock_move(systypes::inventory_adjustment(), $stock_id, $adj_id, $location,
+       add_stock_move(ST_INVADJUST, $stock_id, $adj_id, $location,
         $date_, $reference, $quantity, $standard_cost, $type);
 
        if ($standard_cost > 0)
@@ -80,10 +124,10 @@ function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $type,
 
                $stock_gl_codes = get_stock_gl_code($stock_id);
 
-               add_gl_trans_std_cost(systypes::inventory_adjustment(), $adj_id, $date_,
+               add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_,
                        $stock_gl_codes['adjustment_account'], $stock_gl_codes['dimension_id'], $stock_gl_codes['dimension2_id'], $memo_, ($standard_cost * -($quantity)));
 
-               add_gl_trans_std_cost(systypes::inventory_adjustment(), $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, ($standard_cost * $quantity));
+               add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, ($standard_cost * $quantity));
        }
 }