اذهب الي المحتوي
أوفيسنا

مساعدة فى نظام المخازن FIFO


عمر ضاحى

الردود الموصى بها

السلام عليكم اساتذتى الكرام 

اولا وقبل اى شئ 

كل عام وحضراتكم بخير 

ويتقبل الله منا ومنكم صالح الاعمال

 

مرفق الى حضرتكم محاولتى فى تطبيق نظام FIFO (الوارد اولا يصرف اولا)

وانا مش عارف اظبطه 

 

انا اريد ان يتم تحديث جدول الـ FifoStock 

فى كل مره افتح النموذج  frmFifo

بكل ما تم على المخزون من حركات 

مشكلتى الاكبر انى مش عارف اظهر المرتجعات فى جدول FifoStock 

اذا كان هناك احد يمكنه ان يساعدنى او حتى لو هناك طرق اخره اكثر تيسير من هذه الطريقه 

اكون شاكر له 

 

ولكم جزيل الشكر مقدما

FIFO Access.rar

رابط هذا التعليق
شارك

للرفع رفع الله قدركم

بمساعدة ChatGPT 
اعطاني الكود لكن فيه اخطأ مش عارف ايه هي 

هل يمكن احد يجرب الكود ويراجع ما الخطأ بعد اذن حضرتكم
 

Option Compare Database
Option Explicit
Sub UpdateFIFO()
    Dim db As DAO.Database
    Dim rsInvHead As DAO.Recordset
    Dim rsInvDetails As DAO.Recordset
    Dim rsFIFOQty As DAO.Recordset
    Dim strSQL As String
    Dim InvID As Long
    Dim ItemID As Long
    Dim Qty As Double
    Dim PaPrice As Double
    Dim SaPrice As Double
    Dim FIFOQty As Double
    
    ' Open the database
    Set db = CurrentDb
    
    ' Clear the TblFIFIQty table
    strSQL = "DELETE FROM TblFIFIQty"
    db.Execute strSQL
    
    ' Open the recordsets
    Set rsInvHead = db.OpenRecordset("SELECT * FROM TblInvHead")
    Set rsInvDetails = db.OpenRecordset("SELECT * FROM TblInvDetails")
    Set rsFIFOQty = db.OpenRecordset("SELECT * FROM TblFIFIQty")
    
    ' Loop through the TblInvHead records
    rsInvHead.MoveFirst
    Do Until rsInvHead.EOF
        InvID = rsInvHead!InvID
        
        ' Loop through the TblInvDetails records for the current InvID
        rsInvDetails.MoveFirst
        rsInvDetails.FindFirst "LInvID = " & InvID
        If Not rsInvDetails.BOF Then
            Do Until rsInvDetails.EOF Or rsInvDetails!LInvID <> InvID
            ItemID = rsInvDetails!LItemID
            Qty = rsInvDetails!Qty
            PaPrice = rsInvDetails!PaPrice
            SaPrice = rsInvDetails!SaPrice
            
            ' Calculate the FIFO quantity
            FIFOQty = GetFIFOQty(db, ItemID, InvID)
            
            ' Update the TblFIFIQty table
            rsFIFOQty.AddNew
            rsFIFOQty!InvID = InvID
            rsFIFOQty!LItemID = ItemID
            rsFIFOQty!InvDate = rsInvHead!InvDate
            rsFIFOQty!QtyPay = Qty
            rsFIFOQty!QtyBackPay = 0
            rsFIFOQty!QtySales = 0
            rsFIFOQty!QtyBackSales = 0
            rsFIFOQty!PayPrise = PaPrice
            rsFIFOQty!SalesPrise = SaPrice
            rsFIFOQty!done = IIf(Qty <= FIFOQty, True, False)
            rsFIFOQty.Update
            
            rsInvDetails.MoveNext
        Loop
        End If

        rsInvHead.MoveNext
    Loop
    
    ' Close the recordsets
    rsInvHead.Close
    rsInvDetails.Close
    rsFIFOQty.Close
    
    Set rsInvHead = Nothing
    Set rsInvDetails = Nothing
    Set rsFIFOQty = Nothing
    
    ' Close the database
    db.Close
    
    Set db = Nothing
    
    MsgBox "FIFO quantities calculated successfully!"
End Sub
'يمكنك استخدام الكود التالي في VBA لحساب الأرصدة بنظام FIFO وتخزينها في جدول TblFIFIQty:

Function GetFIFOQty(db As DAO.Database, ItemID As Long, InvID As Long) As Double
    Dim rsFIFOQty As DAO.Recordset
    Dim strSQL As String
    Dim FIFOQty As Double
    
    ' Open the TblFIFIQty recordset
    Set rsFIFOQty = db.OpenRecordset("SELECT * FROM TblFIFIQty WHERE LItemID = " & ItemID & " AND Done = False ORDER BY InvDate")
    
    ' Loop through the TblFIFIQty records and calculate the FIFO quantity
    If Not rsFIFOQty.EOF Then
    rsFIFOQty.MoveFirst
    End If
    Do Until rsFIFOQty.EOF
        FIFOQty = FIFOQty + rsFIFOQty!QtyPay - rsFIFOQty!QtySales
        
        If rsFIFOQty!InvID = InvID Then
            Exit Do
        End If
        
        rsFIFOQty.MoveNext
    Loop
    
    rsFIFOQty.Close
    Set rsFIFOQty = Nothing
    
    GetFIFOQty = FIFOQty
End Function

'يرجى استبدال اسماء الجداول والحقول في الكود بالأسماء الصحيحة المستخدمة في قاعدة البيانات الخاصة بك.

 

رابط هذا التعليق
شارك

عندي مشاركة في كيفية حساب الFIFO يمكنك البحث عنها
وعندما يعطيك CHATGPT كود فهو يعطيك بناءا على الذي سالته اياه 

واذا ام تكن لديك خلفية حول خوارزمية الوارد اولا صادر اولا وال recordset فانك ستضيع بين الاكواد

 

رابط هذا التعليق
شارك

  • 2 weeks later...
في 2‏/7‏/2023 at 10:45, محب العقيدة said:

عندي مشاركة في كيفية حساب الFIFO يمكنك البحث عنها

المشكلة ان كل ما وجدة يتعامل مع حالتين فقط (البيع والشراء)

لكم ما اريده ان يتعامل مع البيع والشراء والمرتجع البيع والمرتجع الشراء (4 حالات)

حتى لما حبيت اطور الكود الموجود ما عرفت اظبطها خالصا وفعلا تهت فى الكود 

في 2‏/7‏/2023 at 10:45, محب العقيدة said:

واذا ام تكن لديك خلفية حول خوارزمية الوارد اولا صادر اولا وال recordset فانك ستضيع بين الاكواد

هذه هى مشكلتى فعلا

 

انا بحاول اوصل لحل وان شاء الله سيهدينى ربي الي الحل او من يساعدنى على الوصول للحل 

ان شاء الله

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information