Code การตัด Stock แบบวิธี Fifo
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 647   5
URL.หัวข้อ / URL
Code การตัด Stock แบบวิธี Fifo

รบกวนถามอาจารย์ช่วยบอก Code การตัดสต๊อกบบ Fifo (เข้าก่อน ออกก่อน) ด้วยครับ 
หลักการก็คือ 
Table 1 (รับ) 
วันที่     เลขที่เอกสาร     เลขที่สต๊อก   จำนวน    ราคา 
1                 1                     1              10        10 
2                 2                     2                5         19 
3                 3                     1                5           9 
Table 2 (จ่าย) 
ถ้ามีลูกค้าต้องการมาซื้อของสต๊อกเลขที่ 1 ในวันที่ 4 จำนวน 7 ชิ้น ก็ให้นำสต๊อกในวันที่รับ วันที่ 1 มาจ่ายก่อนโดยบันทึกรายละเอียดลงแต่ละ Field ลงใน Table 2 
และในวันที่ 5 ลูกค้ามาซื้อของสต๊อกเลขที่ 1 อีกจำนวน 7 ชิ้น ก็ให้นำสต๊อกวันที่รับวันที่ 1 ที่เหลือมาจ่ายก่อนและส่วนที่ขาดให้นำจำนวนของสต๊อกที่รับในวันที่ 3 มาจ่าย โดยบันทึกรายละเอียดลงแต่ละ Field ลงใน Table 2 เช่นเดียวกันโดยแยกแต่ละราคาไว้คนละ Record 
และในวันที่ 6 ลูกค้ามาซื้อของสต๊อกเลขที่ 1 อีกจำนวน 5 ชิ้น ก็ให้นำสต๊อกวันที่รับวันที่ 3 ที่เหลือมาจ่ายโดยบันทึกรายละเอียดลงแต่ละ Field ลงใน Table 2 เช่นเดียวกัน 
ขอบพระคุณมากครับ

5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00405
คงจะสร้าง Combo Box ให้แสดงรายของ Item โดยให้แสดงรายการที่เข้ามาก่อนไว้ข้างบน ถ้าต้องใช้ Item จาก 2 รายการ คงต้องให้เลือกที่ละรายการ จนครบตามจำนวนที่สั่งซื้อ แล้วนำจำนวนที่ซื้อไปคูณกับราคา แต่เวลาออกใบเสร็จให้ลูกค้า ก็ออกแค่ Item เดียว แต่ราคาต่อหน่วยจะเท่ากับราคาทั้งหมด หารด้วย จำนวนที่ซื้อ ไม่ทราบว่าผมเข้าใจหลักการถูกหรือเปล่าครับ
2 @R00406
ถ้าเราต้องไปเลือกที่ Combox ทีละรายการ น่าจะเกิดการผิดพลาดได้และก็ไม่สะดวกในการใช้งาน อยากได้ประมาณว่าตอนออกใบกำกับภาษีว่าขายไปจำนวนเท่าใดก็ให้ตัดสต๊อกจำนวนเท่านั้นตามวิธีของ Fifo เลยครับและก็มีการคำนวณต้นทุนขายของแต่ละจำนวนที่ตัดเก็บไว้ด้วยครับ แต่เวลาที่ออกใบกำกับให้ลูกค้าก็ออกแค่ Item เดียวครับ
3 @R00408
ลองดูในตัวอย่างที่ http://agserver.kku.ac.th/basiceng/FIFO.zip โดยในฟอร์ม frmSelling จะมีปุ่มให้คลิกเมื่อขายสินค้าตัวใดตัวหนึ่ง Private Sub cmdSubmit_Click() Dim dbs As Database, rst1 As Recordset, rst2 As Recordset, rst3 As Recordset Dim qdf As QueryDef Dim I As Integer, J As Integer, MyQTY As Integer, MyQTY1 As Integer Set dbs = CurrentDb Set qdf = dbs.QueryDefs("Query1") qdf.Parameters!MyStock = Me.StockID MyQTY = Me.QTY Set rst2 = qdf.OpenRecordset If Not rst2.EOF Then rst2.MoveLast rst2.MoveFirst For J = 1 To rst2.RecordCount If MyQTY > rst2("QTY") - rst2("Balance") Then MyQTY1 = rst2("QTY") - rst2("Balance") rst2.Edit rst2("Balance") = rst2("QTY") rst2.Update MyQTY = MyQTY - MyQTY1 rst2.MoveNext Else rst2.Edit rst2("Balance") = MyQTY rst2.Update Exit Sub End If Next J Else MsgBox "ไม่มีสินค้าในสต๊อก", vbOKOnly, "Sorry!." End If qdf.Close rst2.Close dbs.Close Set qdf = Nothing Set rst2 = Nothing Set dbs = Nothing End Sub ในตัวอย่างยังไม่มีสิ่งต่อไปนี้ 1. การตรวจดูว่ามีสินค้าในสต๊อกมากพอตามจำนวนที่ต้องการหรือไม่ ให้ใช้ DSum เข้าช่วยนะครับ 2. การเก็บประวัติการขายไปไว้ใน Table2 ให้ใช้ Set rst3 = dbs.Openrecordset("Table2") rst3.Add rst3("StockID") = rst2("StockID") .... rst3.Update 3. การคำนวณหา UnitStock ที่จะออกใบเสร็จให้ลูกค้า ก็คงเอาราคารวมทั้งหมดมาหารด้วยจำนวนที่ซื้อ ก็จะได้ UnitCost ตัวใหม่ ลองทำส่วนที่เหลือดูนะครับ ผมว่ามันท้าทายดี
4 @R00412
แก้ไขครับ จากสีแดงเป็นสีน้ำเงินครับ Else rst2.Edit rst2("Balance") = MyQTY rst2.Update Exit Sub End If ... เป็น ... Else rst2.Edit rst2("Balance") = rst2("Balance") + MyQTY rst2.Update Exit Sub End If ...
5 @R00416
ขอบคุณอาจารย์มากครับ แล้วผมจะนำไปศึกษาและทำเพิ่มเติมดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0508s