<?php
-function get_qoh_on_date($stock_id, $location=null, $date_=null)
+function get_qoh_on_date($stock_id, $location=null, $date_=null, $exclude=0)
{
if ($date_ == null)
$date_ = Today();
$result = db_query($sql, "QOH calulcation failed");
$myrow = db_fetch_row($result);
+ if ($exclude > 0)
+ {
+ $sql = "SELECT SUM(qty) FROM ".TB_PREF."stock_moves
+ WHERE stock_id='$stock_id'
+ AND type=$exclude
+ AND tran_date = '$date'";
+
+ $result = db_query($sql, "QOH calulcation failed");
+ $myrow2 = db_fetch_row($result);
+ if ($myrow2 !== false)
+ $myrow[0] -= $myrow2[0];
+ }
return $myrow[0];
}
// $price - in $person_id's currency
function add_stock_move($type, $stock_id, $trans_no, $location,
- $date_, $reference, $quantity, $std_cost, $person_id=null, $show_or_hide=1,
+ $date_, $reference, $quantity, $std_cost, $person_id=0, $show_or_hide=1,
$price=0, $discount_percent=0, $error_msg="")
{
// do not add a stock move if it's a non-inventory item
return db_insert_id();
}
+function update_stock_move_pid($type, $stock_id, $from, $to, $pid, $cost)
+{
+ $from = date2sql($from);
+ $to = date2sql($to);
+ $sql = "UPDATE ".TB_PREF."stock_moves SET standard_cost=$cost WHERE type=$type
+ AND stock_id='$stock_id' AND tran_date>='$from' AND tran_date<='$to' AND person_id = $pid";
+ db_query($sql, "The stock movement standard_cost cannot be updated");
+}
+
//--------------------------------------------------------------------------------------------------
function get_stock_moves($type, $type_no, $visible=false)
$result = db_query($sql);
$myrow = db_fetch($result);
$material_cost = $myrow['material_cost'];
- $qoh = get_qoh_on_date($stock_id, null, $date);
+ if ($adj_only)
+ $exclude = 13;
+ else
+ $exclude = 0;
+ $qoh = get_qoh_on_date($stock_id, null, $date, $exclude);
+
if ($qoh + $qty <= 0)
$material_cost = 0;
else
$order_line->standard_cost, $order_line->receive_qty, $order_line->price);
/* Update location stock records - NB a po cannot be entered for a service/kit parts */
-
add_stock_move(25, $order_line->stock_id, $grn, $location, $date_, "",
$order_line->receive_qty, $order_line->standard_cost,
$po->supplier_id, 1, $order_line->price);
{
$from = date2sql($from);
$to = date2sql($to);
- $sql = "SELECT SUM(quantity), AVG(standard_cost) FROM ".TB_PREF."debtor_trans, ".TB_PREF."debtor_trans_details
- WHERE ".TB_PREF."debtor_trans.trans_no = ".TB_PREF."debtor_trans_details.debtor_trans_no AND
- ".TB_PREF."debtor_trans.tran_date >= '$from' AND
- ".TB_PREF."debtor_trans.tran_date <= '$to' AND
- ".TB_PREF."debtor_trans_details.stock_id = '$stock_id' AND
- ".TB_PREF."debtor_trans_details.debtor_trans_type = 13";
+ $sql = "SELECT SUM(-qty), AVG(standard_cost) FROM ".TB_PREF."stock_moves
+ WHERE type=13 AND stock_id='$stock_id' AND
+ tran_date>='$from' AND tran_date<='$to' GROUP BY stock_id";
$result = db_query($sql, "The deliveries could not be updated");
return db_fetch_row($result);
}
add_supp_invoice_gl_item($trans_type, $invoice_id, $entered_gl_code->gl_code,
$entered_gl_code->amount, $memo_);
}
-
foreach ($supp_trans->grn_items as $entered_grn)
{
$old = update_supp_received_items_for_invoice($entered_grn->id, $entered_grn->po_detail_item,
$entered_grn->this_quantity_inv, $entered_grn->chg_price);
$stock_gl_code = get_stock_gl_code($entered_grn->item_code);
- $stock_entry_account = $stock_gl_code["inventory_account"];
- add_gl_trans_supplier($trans_type, $invoice_id, $date_, $stock_entry_account,
+ add_gl_trans_supplier($trans_type, $invoice_id, $date_, $stock_gl_code["inventory_account"],
$stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'],
$entered_grn->this_quantity_inv * $line_taxfree, $supp_trans->supplier_id);
// -------------- if price changed since po received. 16 Aug 2008 Joe Hunt
$diff, $entered_grn->this_quantity_inv, $old_date, true);
// function just above this
$deliveries = get_deliveries_between($entered_grn->item_code, $old_date, $date_);
- if ($deliveries[0] != 0) // have deliveries been done during the period?
+ if ($deliveries[0] != 0) // have deliveries been done during the period?
{
$amt = ($mat_cost - $deliveries[1]) * $deliveries[0]; // $amt in home currency
add_gl_trans($trans_type, $invoice_id, $date_, $stock_gl_code["inventory_account"],
0, 0, _("Cost diff."), -$amt, null, null, null,
"The general ledger transaction could not be added for the price variance of the inventory item");
+ update_stock_move_pid(13, $entered_grn->item_code, $old_date, $date_, 0, $mat_cost);
}
+ update_stock_move_pid(25, $entered_grn->item_code, $old_date, $old_date, $supp_trans->supplier_id, $mat_cost);
}
-
// ----------------------------------------------------------------------
add_supp_invoice_item($trans_type, $invoice_id, $entered_grn->item_code,
$entered_grn->item_description, 0, $line_taxfree, $line_tax,
$entered_grn->this_quantity_inv, $entered_grn->id, $entered_grn->po_detail_item, "");
} /* end of GRN postings */
-
/* Now the TAX account */
foreach ($taxes as $taxitem)
{