i removed all conditions relating 'remain' (columns, where clause) and i got the same result. i think i dont need this extra remain column. here is the code i changed--
<?phprequire_once('functions.php');if(!$connect){ $error = mysqli_connect_error(); $errno = mysqli_connect_errno(); echo "$errno: $errorn";exit();}$sid =1;// this is the stock identifier$cqty = 5; // this is the qty sold$totqty = 0;$totamt = 0;$sql = "select qty, amt from fifo where sid=? order by date desc";$stmt = mysqli_prepare($connect, $sql);if (mysqli_stmt_bind_param($stmt, 'i', $sid)){ mysqli_stmt_execute($stmt) or die("Error: " . mysqli_error($connect)); $result = mysqli_stmt_get_result($stmt); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { if ( !is_null($row['qty']) ){ if ($row['qty']>0 && $row['qty']+$totqty > $cqty){ $diff = $cqty - $totqty; $totqty = $cqty; $totamt += $diff*$row['amt']/$row['qty']; // now you must record the remain count = $row->remain-$diff } else { $totqty += $row['qty']; $totamt += $row['qty']*$row['amt']/$row['qty']; // now you must record the remain=0 } } else if ($row['qty']+$totqty > $cqty){ $diff = $cqty-$totqty; $totqty = $cqty; $totamt += $diff*$row['amt']/$row['qty']; // now you must record the remain count = $row->qty-$diff } else { $totqty += $row['qty']; $totamt += $row['amt']; // now you must record the remain=0 } echo "qty={$row['qty']} amt={$row['amt']} cqty={$cqty} totqty={$totqty} totamt={$totamt} <br/>"; } if ($cqty != $totqty) { echo "error: recorded totqty={$totqty} purchased is insufficient to match cqty={$cqty}"; } else { echo $totamt; }} else { echo 'error: could not bind';}mysqli_stmt_close($stmt);mysqli_close($connect);?>
it returned the same
and after this i'll need another guidance about summing all the $totamt for all the $sid from one category
I am no understanding where this functions.php came from what it actually doing
FIFO method for stock valuation
in PHP
Posted
I am no understanding where this functions.php came from what it actually doing