Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > จะตัดสต็อกสินค้าแบบ First In First Out อย่างไรครับ



 

จะตัดสต็อกสินค้าแบบ First In First Out อย่างไรครับ

 



Topic : 121612



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์




นี่คือฐานข้อมูล
lot

นี่คือตัวอย่างข้อมูล
drugLot

จากทั้งสองล็อตนี้ ถ้าลูกค้าสั่งซื้อสินค้ารหัส 00007 จำนวน 60 ชิ้น แล้วสินค้าในล็อต 00008 ไม่พอ อยากให้มาดึงสินค้าไปจากล็อต 00012 อีก 10 ชิ้น จะมีวิธีตัดสต็อกแบบนี้อย่างไรครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-02-25 20:31:33 By : kopkap_sitisak View : 7710 Reply : 20
 

 

No. 1



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

ถ้าเป็นผม จะวนลูปตัดตามหมายเลขล็อต หรือวันที่ของล็อต อันไหนมาก่อนก็อัพเดตก่อน
ขาดอีกเท่าไหร่ก็ตัดไปเรื่อยๆ ถ้าครบตั้งแต่รอบแรกก็ออกจากลูป ^^






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 09:17:51 By : {Cyberman}
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

กรณีที่ Update แบบ JOIN ครับ

Code (SQL)
UPDATE lot
	SET lot.Amount_drug = lot.Amount_drug - b.Sum_Amount_drug
FROM lot
	INNER JOIN
	(SELECT LotNo, SUM(Amount_drug) AS Sum_Amount_drug FROM tb_order WHERE OrderID='xxx' GROUP BY LotNo) AS b
	ON lot.LotNo = b.LotNo

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 09:56:40 By : mr.win
 

 

No. 3

Guest


Code (PHP)
function order($drug_id, $amount) {
   $drugs = DB::table('lot')
      ->where('DrugID', '=', $drug_id)
      ->where('Amount_drug', '>', 0)
      ->orderBy('LotNo', 'asc')
      ->select('LotNo', 'Amount_drug')
      ->get();

   $index = 0;
   $total = 0;

   while ($amount > $total) {
      $stock = $drugs[$index]->Amount_drug;
      $draw = ($total + $stock > $amount) ? $amount - $total : $stock;

      DB::table('lot')
         ->where('LotNo', '=', $drugs[$index]->LotNo)
         ->update(['Amount_drug' => $stock - $draw]);

      $total += $draw; 
   }
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 10:07:09 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 4

Guest


ลืม $index++;
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 10:08:49 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 5



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-02-26 10:08:49
รายละเอียดของการตอบ ::
$index++; บรรทัดไหนครับ

แล้วก็ไม่รู้จะเอาโค้ดไปว่างตรงส่วนไหน

นี่เป็นหน้าโค้ดครับ Code (PHP)
<?ob_start();?>
<?
session_start();

include("db_connect.php");

$Total = 0;
$SumTotal = 0;
  
$strSQL = "SELECT * FROM member WHERE MemberID = '".$_POST["MemberID"]."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);

if($objResult)
{
	$strSQL = "UPDATE member SET Username = '".$_POST["Username"]."', Password = '".$_POST["Password"]."', Name_member = '".$_POST["Name_member"]."', Addr_member = '".$_POST["Addr_member"]."'
				,Tel_member = '".$_POST["Tel_member"]."', Email_member = '".$_POST["Email_member"]."' WHERE MemberID = '".$_GET["MemberID"]."' ";
	$objQuery = mysql_query($strSQL) or die(mysql_error());
}
else
{
	$strSQL = "INSERT INTO member ";
	$strSQL .="(MemberID,Name_member,Addr_member,Tel_member,Email_member,Status_member) "; 
	$strSQL .="VALUES ";
	$strSQL .="('".$_POST["MemberID"]."','".$_POST["Name_member"]."' ";
	$strSQL .=",'".$_POST["Addr_member"]."','".$_POST["Tel_member"]."','".$_POST["Email_member"]."','CUSTOMER')";
	$objQuery = mysql_query($strSQL);
}

	$strSQL = "INSERT INTO orders (OrderDate,MemberID,Status_order) VALUES 
	('".date("Y-m-d")."','".$_POST["MemberID"]."','0')";
	  mysql_query($strSQL) or die(mysql_error());

	$strOrderID = mysql_insert_id();

  for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
  {
	  if($_SESSION["strID_drug"][$i] != "")
	  {
			$strSQL = "INSERT INTO orders_detail (OrderID,OrderDate,ID_drug,Qty) VALUES ('".$strOrderID."','".date("Y-m-d")."','".$_SESSION["strID_drug"][$i]."','".$_SESSION["strQty"][$i]."')";
			mysql_query($strSQL) or die(mysql_error());
			
			$strSQL2 = "SELECT g.*, dg.*, l.* FROM drug g, drug_group dg, lot l WHERE ID_drug = '".$_SESSION["strID_drug"][$i]."' AND  g.ID_group = dg.ID_group AND g.ID_drug = l.DrugID ";
			$objQuery2 = mysql_query($strSQL2)  or die(mysql_error());
			$objResult2 = mysql_fetch_array($objQuery2);
			
			$strSQL3 = "SELECT * FROM shipping ";
			$objQuery3 = mysql_query($strSQL3)  or die(mysql_error());
			$objResult3 = mysql_fetch_array($objQuery3);
			
			$AllPrice = $_SESSION["strQty"][$i] * $objResult["Price_drug2"];
			$Total = $Total + $AllPrice;
			$ShippingCost = $objResult3["ShippingCost"];
			$ShippingCost = '0';
			$SumTotal = $Total + $ShippingCost;	
			
			
		} 
	}
	
	$strSQL4 = "INSERT INTO payment_inform (OrderID,Status_inform) "; 
	$strSQL4 .="VALUES ";
	$strSQL4 .="('".$strOrderID."','0')";			
	$objQuery = mysql_query($strSQL4) or die(mysql_error());
	
	$Cost = $_POST["Cost"];
	$strInformID = mysql_insert_id();
	
	$strSQL5 = "INSERT INTO payment (PayDate,InformID,Cost,OrderID,Status_pay) "; 
	$strSQL5 .="VALUES ";
	$strSQL5 .="('".date("Y-m-d")."','".$strInformID."','$Cost','".$strOrderID."','1')";			
	$objQuery = mysql_query($strSQL5) or die(mysql_error());
	
			
mysql_close();

	unset($_SESSION["strID_drug"]); 
	unset($_SESSION["img_drug"]); 
	unset($_SESSION["Na1_drug"]); 
	unset($_SESSION["Price_drug"]);
	unset($_SESSION["strQty"]);
	unset($_SESSION["$Total,2"]); 	
	
echo "<script>alert('ทำรายการสั่งซื้อเสร็จเรียบร้อยเเล้ว')</script>";?>
	<script type="text/javascript">
	window.location="order.php";
</script>








ประวัติการแก้ไข
2016-02-26 10:29:27
2016-02-26 10:31:37
2016-02-26 10:51:02
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 10:25:33 By : kopkap_sitisak
 


 

No. 6

Guest


Code (PHP)
function order($drug_id, $amount) {
   $drugs = DB::table('lot')
      ->where('DrugID', '=', $drug_id)
      ->where('Amount_drug', '>', 0)
      ->orderBy('LotNo', 'asc')
      ->select('LotNo', 'Amount_drug')
      ->get();

   $index = 0;
   $total = 0;

   while ($amount > $total) {
      $stock = $drugs[$index]->Amount_drug;
      $draw = ($total + $stock > $amount) ? $amount - $total : $stock;

      DB::table('lot')
         ->where('LotNo', '=', $drugs[$index]->LotNo)
         ->update(['Amount_drug' => $stock - $draw]);

      $total += $draw; 
      $index++;
   }
}


เราเขียนเล่นๆ อ่านให้เข้าใจวิธีการแล้วแปลงเป็นโค้ดของนายดีกว่า

ดูที่เงื่อนไขการ update นะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-26 11:11:39 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 7



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.win เมื่อวันที่ 2016-02-26 09:56:40
รายละเอียดของการตอบ ::
ขอบคุณมากๆครับ กำลังลองศึกษาอยู่ครับ ตอนนี้ยังไม่ได้เลย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-20 11:30:51 By : kopkap_sitisak
 


 

No. 8



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


เอาทีละเสต็ป เขียนเป็น flow control ด้วยภาษาที่เข้าใจได้
ภาษาไทยนี่แหล่ะ 555 และวิธีการนี่เขาเรียกว่าเขียน pseudo code 555
ก็ได้คำเรียกมาจากใน thaicreate นี่แหล่ะ วันก่อนมีน้องๆมาถาม
โดยแท้คือลืมไปแล้วว่ามันคืออะไร 5555 ใช้แต่ flow control ก็ขอขอบคุณที่ช่วยฟื้นความจำ

ตัวอย่าง
Code
กำหนดค่าให้ตัวแปร จำนวนสินค้าออก ลูป: อ่านค่าจากตาราง หาสินค้าคงเหลือของ ล๊อตสินค้าที่เข้าก่อน ถ้าสินค้าในคลังมากกว่า จำนวนสินค้าออกให้ทำ เริ่ม ...... สิ้นสุด ถ้า ..... เริ่ม .... สิ้นสุด กลับไปลูป

เมื่อทำจนเข้าใจ เส้นทาง (event) ต่างๆของโค๊ดแล้ว ค่อยเอาโค๊ดจริงใส่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-20 12:06:55 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-20 12:06:55
รายละเอียดของการตอบ ::
ลองเขียนโค้ดออกมาได้แบบนี้ครับ

Code (PHP)
$strSQL = "SELECT Qty FROM orders_detail";
$objQuery = mysql_query($strSQL)  or die(mysql_error());
$objResult = mysql_fetch_array($objQuery);

$Qty = $objResult["Qty"];

while($Qty > 0)
	{
		$strSQL2 = "SELECT * FROM lot WHERE Amount_drug > 0 order by LotNo asc";
		$objQuery2 = mysql_query($strSQL2)  or die(mysql_error());
		$objResult2 = mysql_fetch_array($objQuery2);
			
		
		if($Amount_drug >= $Qty)
			{
				$strSQL3 = mysql_query("update lot set Amount_drug = Amount_drug - $Qty WHERE DrugID = '$DrugID' AND LotNo = '$LotNo'");
				$Qty = '0';
			}
		if($Amount_drug < $Qty)
			{
				$strSQL4 = mysql_query("update lot set Amount_drug = '0' WHERE DrugID = '$DrugID' AND LotNo = '$LotNo'");
				$Qty -= $Amount_drug;
	  		}
	}



ประวัติการแก้ไข
2016-03-21 20:39:17
2016-03-21 20:50:06
2016-03-21 20:50:35
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-21 20:31:11 By : kopkap_sitisak
 


 

No. 10



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-20 12:06:55
รายละเอียดของการตอบ ::
แบบนี้พอจะเข้าใจไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-25 16:12:56 By : kopkap_sitisak
 


 

No. 11



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
<?php
//$strSQL = "SELECT Qty FROM orders_detail";
// query ด้านบน ขาด id ของ orders_detail จะอา จำนวนอย่างเดียว ไม่ได้
// แล้วจะอ้างอิงกับอะไรครับ ครับมีจำนวนเท่ากัน ให้ ควรใส่ where เพื่อกำหนด ว่าจะเอา จาก อะไร 
// และขาดการอ้างอิง กับ product จำเป็นต้อง เอาค่า product id มาใช้ด้วย แก้เป็น
$strSQL = "SELECT product_id, Qty FROM orders_detail where order_detail_id = ".($_REQUEST['order_detail_id'] * 1);
// ใส่ * 1 กระทำกับ request value number แปลงค่าเป็นตัวเลขสมบูรณ์ ป้องกัน sql injection การ hack ข้อมูลผ่าน sql statement 
$objQuery = mysql_query($strSQL) or die(mysql_error() . "<br>$strSQL"); 
// ข้างบน อย่าแสดงแต่ เออเร่อร์อย่างเดียว แสดง statement ด้วยครับ ทำให้เคยชิน
// ถ้าอ่านจากโค๊ดตัวแปรอาจจะไม่รู้เรื่อง อ่านจาก statement เลยเข้าใจมากกว่าว่าขาดอะไรไป

if( mysql_num_rows($objResut)==0){
	// เพิ่มการตรวจสอบจำนวน เรคคอร์ดก่อน ถ้าไม่มี จะให้ทำอะไร ก่อนการดึงค่าออกมา
	exit("There is empty data");
}

//$objResult = mysql_fetch_array($objQuery);
// ข้างบน fetch_array ก็ไม่ต้องใช้ ให้ใช้ fetch_assoc แทน
// เพราะ result ที่ได้จาก fetch_array มันได้ 2 อย่าง 
// คือ array ที่มีคีย์เป็นลำดับที่  และ คีย์ที่เป็นชื่อ field เปลือง memory แก้เป็น
$objResult = mysql_fetch_assoc($objQuery);
list($prod_id, $Qty) = $objResult; // อ่านค่าจาก array ไปใส่ในตัวแปร
while($Qty > 0){
	//$strSQL2 = "SELECT * FROM lot WHERE Amount_drug > 0 order by LotNo asc";
	// ข้างบน asc ไม่จำเป็นต้องใส่ เพราะ default คือ asc อยู่แล้ว และขาดการ อ้างอิง product id
	// อย่าบอกนะครับว่า ทั้งตารางมี product id เดียว 5555  และ ใส่ชื่อ field ที่ต้องใช้ ด้วย อย่าเอามาทั้งหมด เปลือง memory
	$strSQL2 = "SELECT trans_id, Amount_drug FROM lot 
				WHERE Amount_drug > 0 and procduct_id = $prod_id order by LotNo";
	$objQuery2 = mysql_query($strSQL2) or die(mysql_error() . "<br>$strSQL2"); // อย่าลืมแสดง statement ด้วย
	//$objResult2 = mysql_fetch_array($objQuery2); ตัดขั้นตอนบันทัดนี้ไป
	list($tran_id, $Amount_drug) = mysql_fetch_row($objQuery2); // fetch ค่ามาเป็น  array แล้ว นำใสในตัวแปรทันที
	$balance = $Amount_drug - $Qty;
	if($balance<0){
		// ทำตรวจสอบ น้อยกว่าก่อน
		//$strSQL4 = mysql_query("update lot set Amount_drug = '0' WHERE DrugID = '$DrugID' AND LotNo = '$LotNo'");
		$strSQL4 = mysql_query("update lot set Amount_drug = 0 WHERE trans_id = $tran_id ");
		$Qty -= $Amount_drug;
	}else{
		//$strSQL3 = mysql_query("update lot set Amount_drug = Amount_drug - $Qty WHERE DrugID = '$DrugID' AND LotNo = '$LotNo'");
		mysql_query("update lot set Amount_drug = $balance WHERE trans_id = $tran_id ");
		$Qty = 0;
	}
}



ตัวอย่างข้างบน ยังไม่ใช่ วิธีการที่ดี เพราะแก้จาก โค๊ดที่เขียน แล้ว อธิบายตาม
ลองคิดวาง โค๊ดดูใหม่อย่าให้ทำงานซ้ำซ้อน พยายามทำให้การคิวรี่ น้อยครั้งที่สุด ได้ result พอในการทำครั้งเดียว
ปล. Trans_id คือ LotID ขอโทษทีไม่ได้กลับไปอ่านคำถาม


ประวัติการแก้ไข
2016-03-26 07:55:08
2016-03-26 07:56:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-26 07:41:32 By : Chaidhanan
 


 

No. 12



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-26 07:41:32
รายละเอียดของการตอบ ::
จากโค้ดการสั่งซื้ออันนี้ครับที่ผมทำ ผมจะเอาโค้ดตัดสต็อกไปวางตรงส่วนไหนอ่ะครับ แล้วอีกอย่าง ค่า qty (จำนวนสินค้าที่สั่ง) เป็น session ด้วยอ่ะครับ
<?
session_start();

$Total = 0;
$SumTotal = 0;
  
$strSQL = "SELECT * FROM customer WHERE CustomerID = '".$_POST["CustomerID"]."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);

if($objResult)
{
	$strSQL = "UPDATE customer SET Name_cus = '".$_POST["Name_cus"]."', Address = '".$_POST["Address"]."',
				Subdistrict = '".$_POST["Subdistrict"]."', District = '".$_POST["District"]."', Province_ID = '".$_POST["Province_ID"]."', Postcode = '".$_POST["Postcode"]."',
				Tel_cus = '".$_POST["Tel_cus"]."', Email_cus = '".$_POST["Email_cus"]."' WHERE CustomerID = '".$_GET["CustomerID"]."' ";
	$objQuery = mysql_query($strSQL) or die(mysql_error());
}
else
{
	$strSQL = "INSERT INTO customer ";
	$strSQL .="(CustomerID,Address,Subdistrict,District,Province_ID,Postcode,Tel_cus,Email_cus) "; 
	$strSQL .="VALUES ";
	$strSQL .="('".$_POST["CustomerID"]."','".$_POST["Name_cus"]."','".$_POST["Address"]."','".$_POST["Subdistrict"]."','".$_POST["District"]."','".$_POST["Province_ID"]."','".$_POST["Postcode"]."' ";
	$strSQL .=",'".$_POST["Tel_cus"]."','".$_POST["Email_cus"]."')";
	$objQuery = mysql_query($strSQL);
}

	$CustomerID = $_POST["CustomerID"];

	$strSQL = "INSERT INTO orders (OrderDate,CustomerID,Status_order) VALUES 
	('".date("Y-m-d")."','$CustomerID','0')";
	  mysql_query($strSQL) or die(mysql_error());

	$strOrderID = mysql_insert_id();
	

  for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
  {
	  if($_SESSION["strID_drug"][$i] != "")
	  {
			$strSQL = "INSERT INTO orders_detail (OrderID,OrderDate,ID_drug,Qty) VALUES ('".$strOrderID."','".date("Y-m-d")."','".$_SESSION["strID_drug"][$i]."','".$_SESSION["strQty"][$i]."')";
			mysql_query($strSQL) or die(mysql_error());
			
			$strSQL2 = "SELECT g.*, dg.*, l.* FROM drug g, drug_group dg, lot l WHERE ID_drug = '".$_SESSION["strID_drug"][$i]."' AND  g.ID_group = dg.ID_group AND g.ID_drug = l.DrugID";
			$objQuery2 = mysql_query($strSQL2)  or die(mysql_error());
			$objResult2 = mysql_fetch_array($objQuery2);
			
			$strSQL3 = "SELECT * FROM shipping ";
			$objQuery3 = mysql_query($strSQL3)  or die(mysql_error());
			$objResult3 = mysql_fetch_array($objQuery3);
			
			$Total = $_SESSION["strQty"][$i] * $objResult["Price_drug2"];
			$ShippingCost = $objResult3["ShippingCost"];
			$ShippingCost = '0';
			$SumTotal = $SumTotal + $Total + $ShippingCost;
			
			$Total2 = $_SESSION["strQty"][$i] * $objResult["Price_drug1"];
			$ShippingCost = $objResult3["ShippingCost"];
			$ShippingCost = '0';
			$SumTotal2 = $SumTotal2 + $Total2 + $ShippingCost;
			
			$strSQL4 = mysql_query("update drug set AmountDrug = AmountDrug - '".$_SESSION["strQty"][$i]."' where ID_drug = '".$_SESSION["strID_drug"][$i]."'");
			
		} 
	}
	
	
echo "<script>alert('ทำรายการสั่งซื้อเสร็จเรียบร้อยเเล้ว')</script>";?>
	<script type="text/javascript">
	window.location="order.php";
</script>








ประวัติการแก้ไข
2016-03-26 11:13:11
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-26 11:12:21 By : kopkap_sitisak
 


 

No. 13



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


จะวางตรงไหนคงต้องคิดเองแล้วครับ เขียนรายการที่จะทำ ก่อนครับ ทำอะไรอย่างไร เหมือนการเขียน flowchart
เขียนเป็นกราฟรูปภาพไม่เก่ง ก็เขียนเป็นภาษาไทย อธิบายให้เข้าใจว่าจะทำอะไรอย่างไรเมื่อไหร่่

แล้วค่อยใส่โค๊ดจริง การใช้โค๊ดนั้นไม่ยาก แต่วิธีวางโค๊ด ต้องรู้ว่าจะทำอะไรเมื่อไหร่ ซึ่งเป็นงานที่คุณต้องวิเคราะห์เอาเองครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-26 21:52:25 By : Chaidhanan
 


 

No. 14



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 13 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-26 21:52:25
รายละเอียดของการตอบ ::
ตัดสต็อกผมทำได้แล้วครับ แล้วถ้าจะคืนสินค้าเข้าสต็อกแบบเป็นล็อตล่ะครับ



ประวัติการแก้ไข
2016-03-27 14:02:33
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-27 14:02:00 By : kopkap_sitisak
 


 

No. 15



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ผมว่าลองทำเองดูไหมครับก่อนที่จะถาม เอาเข้ากับเอาออก มันเหมือนกันมากนะครับ
แค่ + กับ -
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-27 16:51:32 By : Chaidhanan
 


 

No. 16



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 15 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-27 16:51:32
รายละเอียดของการตอบ ::
ผมลองเขียนแล้วครับ แต่ติดตรงถ้าจำนวนสินค้าที่เราจะคืนตามจำนวนที่สั่งมา มันถูกดึงออกมาจากหลายล็อต เราจะบวกเพิ่มเข้าไปยังไง
จนถึงจำนวนสูงสุดของ Amount_drug ที่เก็บในแต่ละล็อต จากนั้นให้บวกต่อจากล็อตถัดไปจนครบตามจำนวนที่สั่ง
Code (PHP)
$strSQL = "SELECT ID_drug, Qty FROM orders_detail where OrderID = '$OrderID'";
			$objQuery = mysql_query($strSQL) or die(mysql_error() . "<br>$strSQL");
			echo  $strSQL;
			$objResult = mysql_fetch_array($objQuery);
			
			list($ID_drug, $Qty) = $objResult; // อ่านค่าจาก array ไปใส่ในตัวแปร
			while($Qty > 0){
	
			$strSQL2 = "SELECT LotNo, Amount_drug FROM lot WHERE Amount_drug >= 0 and DrugID = $ID_drug order by LotNo";
			$objQuery2 = mysql_query($strSQL2) or die(mysql_error() . "<br>$strSQL2"); 
			echo $strSQL2;
			list($LotNo, $Amount_drug) = mysql_fetch_row($objQuery2); // fetch ค่ามาเป็น  array แล้ว นำใสในตัวแปรทันที
				if($Amount_drug>=0){
					mysql_query("update lot set Amount_drug = Amount_drug + $Qty where LotNo = $LotNo and DrugID = $ID_drug order by LotNo ");
					$Qty = 0;
				}else{
					
				}
			}




ประวัติการแก้ไข
2016-03-27 20:34:08
2016-03-27 20:34:43
2016-03-27 20:37:06
2016-03-27 21:13:56
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-27 20:33:47 By : kopkap_sitisak
 


 

No. 17



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


การรับสินค้าคืน ไม่จำเป็นต้องกลับไปอยู่ในtrains_in เรคอร์ดเดิม
คุณสามารถทำให้มันเข้าไปในเรคอร์ดใหม่ได้ แค่มี type บอกว่า เป็นของคืน
และมี notice บอกว่ามาจากเลขที่ใบสำคัญหมายเลยอะไร

พยายามทำให้เหมือนการกรอกเอกสาร เมื่อทำคืนก็จะมีเอกสารคืน
เป็นสินค้าเข้าอย่างหนึ่ง เมื่อของมันออกไปแล้ว เมื่อกลับเข้ามามันไม่ได้วางไว้ที่เดิม
ก็ให้ถือซะว่ามันเป็นสินค้าใหม่ แค่ราคาเก่าเท่านั้นครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-28 03:48:02 By : Chaidhanan
 


 

No. 18



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 17 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-28 03:48:02
รายละเอียดของการตอบ ::
ต้องขอโทษด้วยครับ คืนสินค้าที่ผมหมายถึง คือในกรณีที่ลูกค้าไม่ชำระเงิน สินค้าก็จะเข้าไปอยู่ในล็อตเหมือนเดิมอ่ะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-28 08:44:01 By : kopkap_sitisak
 


 

No. 19



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


แบบนี้ คงต้องทำ การตัดสต๊อค เมื่อ ใบส่งของกลับมาพร้อมการรับเงินแล้วมั้งครับ

กำหนด flow การทำงานให้ดี ก็บอกแล้วว่า โค๊ดมันไม่ได้ยาก
แต่การวาง flow นั้นแหล่ะสำคัญ เขียน flow chart ออกมาดี ก็สบายไป 8 อย่าง

คงต้องศึกษาโครงสร้าง การทำงาน ให้ชัดเจน เพื่อมากำหนด flow control
ทำออกมาเป็น flow chart แล้วถึงค่อยมาเขียนโค๊ดตาม flow chart


เขียนโค๊ดผิดพอช่วยแก้ไขให้ได้ แนะนำการใช้ โค๊ดให้ได้ อาจมีตัวอย่างบ้างไม่เยอะ

แต่ถ้าต้องมากำหนด flow control ให้ด้วย นี่ขอคิดเงินครับ 5555
แหมมันเป็นอาชีพอะนะ จะคิดให้หมด มันเหมือนผูกคอตายยังไงยังงั้นเลย 55555
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-28 10:00:37 By : Chaidhanan
 


 

No. 20



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 19 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-28 10:00:37
รายละเอียดของการตอบ ::
ครับผม ขอบคุณมากๆครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-28 10:13:49 By : kopkap_sitisak
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : จะตัดสต็อกสินค้าแบบ First In First Out อย่างไรครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่