منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
كود اضافه كميه كانت مباعه بعد حذف الفاتوره - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : كود اضافه كميه كانت مباعه بعد حذف الفاتوره (/showthread.php?tid=28920)



كود اضافه كميه كانت مباعه بعد حذف الفاتوره - خالد كامل1 - 09-03-19

السلام عليكم
هل من طريقه عند حذف فاتوره مبيعات ارجاع الكميه المباعه اتوماتيكيا الى الكميه الموجوده فى المخزن من نفس الصنف


RE: كود اضافه كميه كانت مباعه بعد حذف الفاتوره - حريف برمجة - 09-03-19

وعليكم السلام ورحمة الله وبركاته ،،

نفس طريقة خصم الكمية من المتجر عن البيع ....

تعمل حساب كمية الصنف الموجودة في الفاتورة وتعمل تحديث للكمية في المخزن كالتالي :

الكمية الموجودة في المخزن = الكمية الموجودة في المخزن + الكمية الموجوده في الفاتورة 


كود :
update table set itemquantity = itemquantity + 15 where itemcode=@itemcode
15 هنا مثلاً الكمية الموجوده في الفاتورة عند حذفها .
سوف اعمل مثال قريباً إن شاء الله


RE: كود اضافه كميه كانت مباعه بعد حذف الفاتوره - Rabeea Qbaha - 09-03-19

تحتاج لعمل 2 arrays واحدة تاخذ جميع ارقام الباركود او ارقام السلع وواحدة تاخذ الكميات
وتقوم بعمل ميثود لتحديث الكميات عن طريق for loop .

الحصول على جميع ارقام الباركود للمتجات في الفاتوره :

PHP كود :
Public Function getListOfbar(ByVal IDInvoices As Integer) As List(Of String)

 
       Dim output As New List(Of String)()

 
       Try
            If Conn
.State ConnectionState.Open Then
                Conn
.Close()
 
           End If

 
           Conn.Open()
 
           Dim cmd As OleDbCommand Conn.CreateCommand
            cmd
.CommandText "Select MaterialBarCode from SalesHistory where IDInvoices=@IDInvoices"
 
           cmd.Prepare()
 
           cmd.Parameters.AddWithValue("@IDInvoices"IDInvoices)

 
           Dim dr As OleDbDataReader
            dr 
cmd.ExecuteReader
            While dr
.Read()
 
               output.Add(dr.GetValue(0))
 
           End While
 
           dr.Close()

 
       Catch ex As OleDbException
            
' Do some logging or something. 
            MessageBox.Show("There was an error accessing your data. DETAIL: " & ex.Message)
        End Try

        Return output

    End Function 

الحصول على جميع الكميات :
PHP كود :
Public Function getListOfqunt(ByVal IDInvoices As Integer) As List(Of Integer)

 
       Dim output As New List(Of Integer)()

 
       Try
            If Conn
.State ConnectionState.Open Then
                Conn
.Close()
 
           End If

 
           Conn.Open()
 
           Dim cmd As OleDbCommand Conn.CreateCommand
            cmd
.CommandText "Select Quantity from SalesHistory where IDInvoices=@IDInvoices"
 
           cmd.Prepare()
 
           cmd.Parameters.AddWithValue("@IDInvoices"IDInvoices)

 
           Dim dr As OleDbDataReader
            dr 
cmd.ExecuteReader
            While dr
.Read()
 
               output.Add(dr.GetValue(0))
 
           End While
 
           dr.Close()


 
       Catch e As OleDbException
            
' Do some logging or something. 
            MessageBox.Show("There was an error accessing your data. DETAIL: " & e.ToString())
        End Try

        Return output

    End Function 


 الميثود الخاصه بجلب الكميات المسجله في المخزون للزيادة عليها :
PHP كود :
   Dim qunt As Integer 0
    Private Sub getdata
(ByVal barcode As String)
 
       If Conn.State ConnectionState.Open Then
            Conn
.Close()
 
       End If

 
       Conn.Open()
 
       Dim cmd As OleDbCommand Conn.CreateCommand
        cmd
.CommandText "Select QuantityAvailable from Materials where MaterialBarCode=@p1"
 
       cmd.Prepare()
 
       cmd.Parameters.AddWithValue("@p1"barcode)

 
       Dim dr As OleDbDataReader
        dr 
cmd.ExecuteReader
        With dr
.Read()
 
           qunt dr.GetValue(0)
 
       End With
        dr
.Close()
 
   End Sub 

الميثود الخاصه بتحديث البيانات في الجدول :
PHP كود :
Private Sub update_qunt(ByVal qunt As IntegerByVal barcode As String)
 
       If Conn.State ConnectionState.Closed Then
            Conn
.Open()
 
       End If

 
       Dim cmd As New OleDb.OleDbCommand
        cmd
.Connection Conn
        cmd
.CommandType CommandType.Text
        cmd
.CommandText "UPDATE Materials SET  QuantityAvailable= @QuantityAvailable WHERE MaterialBarCode= @MaterialBarCode"
 
       cmd.Parameters.AddWithValue("QuantityAvailable"qunt)
 
       cmd.Parameters.AddWithValue("@MaterialBarCode"barcode)
 
       cmd.ExecuteScalar()
 
       Conn.Close()

 
   End Sub 
الميثود الخاصة في تحديث الكميات 
PHP كود :
   Private Sub update_Mat(ByVal value As Integer)

 
       For i As Integer 0 To getListOfbar(value).Count 1
            getdata
(getListOfbar(value)(i))
 
           Dim new_qun As Integer qunt Val(getListOfqunt(value)(i))
 
           update_qunt(new_qungetListOfbar(value)(i))
 
       Next

    End Sub 



RE: كود اضافه كميه كانت مباعه بعد حذف الفاتوره - محمد كريّم - 09-03-19

اعتذر اخوتي عن الخروج قليلا من الموضوع الرئيسي


ماذا لو كنت تستخدم معادلة لحساب متوسط سعر الشراء؟
هل ستكون النتائج صحيحة في الجرد او في حساب الارباح بعد عملية الارجاع؟
خصوصا لو قمت بشراء/توريد كمية جديدة بين عملية البيع والارجاع؟


RE: كود اضافه كميه كانت مباعه بعد حذف الفاتوره - ابراهيم ايبو - 09-03-19

السلام عليكم ورحمة الله وبركاته
فعلا هنا معضلة لان سعر متوسط الشراء سيتغير بناء على الكمية الموجودة في المخزن والكمية الموردة
وبعد عملية الارجاع سيزداد المخزون بمقدار الكمية المرتجعة 
وهنا كيف سيتم حساب متوسط سعر الشراء لان المرتجع سيكون بالسعر القديم
هل سيكون المرتجع عبارة عن كمية جديدة موردة ومن ثم سيتم حساب متوسط سعر شراء جديد؟
ام ان هذه الكمية المرتجعة تعتبر فقط حروج من المخزن ثم اعادة دخول مع الغاء فاتورة البيع؟
وماذا عن سعر الكمية المرتجعة هل ستحسب بالسعر القديم ام الجديد؟
وكيف سيتم حساب الارباح بالرغم ان عملية البيع لم تتم
اعتقد ان افضل حل هو اعتبار المرتجع كمية خرجت من المخزن ثم اعيدت  بالسعر القديم 
مع حذف فاتورة البيع وعدم ادخالها في  الحسابات 
اتمنى ان نسمع اجابات ممن لديهم خبرة 
دمتم بخير