برنامج إدارة المبيعات: الدرس الخامس: صفحة البيع النقدي - الجزء 2: إضافة المواد الى فاتورة البيع

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




والذي من خلاله سنتقوم بأجراء عمليات البيع النقدي وطباعة فواتير البيع و خزنها داخل قاعدة البيانات.


الأدوات المستخدمة في هذا الدرس 

  • داتاكردفيو الفاتورة - dgvBill
  • زر إضافة مادة الى الوصل او الفاتورة  btnAddToBill


أولا: داتاكردفيو الفاتورة- dgvBill

عن طريق هذه الاداة نقوم بعرض المواد المراد بيعها والمضافة من قبل المستخدم فيها وذلك لغرض طباعة وصل بعملية البيع وايضا خزن عملية البيع  داخل قاعدة البيانات للرجوع لها لاحقا. ثم نقوم باضفة اربع اعمدة (اسم المادة - السعر - عدد الوحدات - الاجمالي) الى داتاكردفيو - dgvBill لكي تستقبل المادة المضافة وحسب الخطوات التالية: 


1- عن طريق قائمة ToolBox قم بادراج اداة DataGridView جديدة الى دخل الفورم.

2- يم اضافة اربع اعمدة وهي (اسم المادة - السعر - عدد الوحدات - الاجمالي) عن طريق الضغط على زر Add Columns  وتتم الاضافة بالشكل التالي:

  • نبدأ باخر عمود وهو المجموع حيث يتم إضافته اولا عن طريق  اعطاء حقل Name اسما على ان يكون باللغة الانكليزية مثلا Total اما حقل HeaderText يمكن اعطاءه اسما باللغة العربية مثلا المجموع.
  • العمود الاخر وهو العدد حيث يتم إضافته ثانيا عن طريق  اعطاء حقل Name اسما على ان يكون باللغة الانكليزية مثلا No اما حقل HeaderText يمكن اعطاءه اسما باللغة العربية مثلا العدد.
  • العمود الاخر وهو السعر حيث يتم إضافته ثالثا عن طريق  اعطاء حقل Name اسما على ان يكون باللغة الانكليزية مثلا Price اما حقل HeaderText يمكن اعطاءه اسما باللغة العربية مثلا السعر.
  • العمود الاخير وهو اسم المادة حيث يتم إضافته رابعا عن طريق  اعطاء حقل Name اسما على ان يكون باللغة الانكليزية مثلا ItemName اما حقل HeaderText يمكن اعطاءه اسما باللغة العربية مثلا اسم المادة.


ثانياً: زر الاضافة- btnAddToBill

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

  •  يتم التأكد من ان مربع النص الخاص باسم المادة وسعر البيع وعدد الوحدات قيمهم غير فارغة عن طريق الكود التالي:

If tbItemName.Text = "" Then
   MsgBox("يرجى التأكد من إدخال اسم المادة", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. اسم المادة مطلوب")
   tbItemName.Focus()
   Return
End If
 
If tbSellingPrice.Text = "" Then
   MsgBox("يرجى التأكد من إدخال سعر البيع", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. سعر البيع مطلوب")
   tbSellingPrice.Focus()
   Return
End If
If tbNo.Text = "" Then
   MsgBox("يرجى التأكد من إدخال عدد الوحدات", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. عدد الوحدات مطلوب")
    tbBillNo.Focus()
    Return
End If 


  • يتم إضافة صف جديد يحتوي على قيم اسم المادة السعر العدد و الاجمالي المأخوذة من ادوات معلومات المادة وحسب الكود التالي:_

dgvBill.Rows.Add()

Dim NewRow = dgvBill.Rows.Count - 1

dgvBill.Rows(NewRow).Cells("ItemName").Value = tbItemName.Text

dgvBill.Rows(NewRow).Cells("Price").Value = tbSellingPrice.Text

dgvBill.Rows(NewRow).Cells("No").Value = tbNo.Text

dgvBill.Rows(NewRow).Cells("Total").Value = CInt(tbSellingPrice.Text * tbNo.Text)


    • يتم الـتأكد من عدم سماح تكرار المادة المضافة داخل فاتورة البيع اكثر من مرة  وحسب الكود التالي:_

    For i = 0 To dgvBill.Rows.Count - 1

         If dgvBill.Rows(i).Cells("ItemName").Value = tbItemName.Text Then

             MsgBox("المادة التي أخترتها مضافة فعلاً الى فاتورة البيع", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

              Return

          End If

    Next


      • يتم إضافة صف جديد يتم فيه حساب فيه مجموع او اجمالي الفاتورة وحسب الكود التالي:_

      dgvBill.Rows.Add()

      Dim RowTotal = dgvBill.Rows.Count - 1

      dgvBill.Rows(RowTotal).Cells("ItemName").Value = "المجموع"

       

      Dim sumRowTotal As Double

      sumRowTotal = 0

      For Each r As DataGridViewRow In dgvBill.Rows

      sumRowTotal += r.Cells("Total").Value

      Next


      dgvBill.Rows(RowTotal).Cells("No").Value = "-"

      dgvBill.Rows(RowTotal).Cells("Price").Value = "-"

      dgvBill.Rows(RowTotal).Cells("Total").Value = sumRowTotal


      • في حال اضافة مادة ثانية نحتاج الى حذف صف المجموع المضاف اخر صف لضمان عدم تكراره مع كل عملية اضافة والسماح باضافته فقط اخر صف  وحسب الكود التالي:_

      If dgvBill.Rows.Count <> 0 Then

         Dim lastrow = dgvBill.Rows.Count - 1

         If dgvBill.Rows(lastrow).Cells("ItemName").Value = "المجموع" Then

            dgvBill.Rows.RemoveAt(lastrow)

         End If

      End If


        • يتم وضع الاكواد اعلاه (ماعدا كود التحقق من الادوات اذا كانت تحتوي على قيمة او لا ) في جملة Try  .. Catch , وحسب الترتيب الموضح بالكود التالي 

        Private Sub btnAddtoBill_Click(sender As Object, e As EventArgs) Handles btnAddToBill.Click

                If tbItemName.Text = "" Then

                    MsgBox("يرجى التأكد من إدخال اسم المادة", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. اسم المادة مطلوب")

                    tbItemName.Focus()

                    Return

                End If

         

                If tbSellingPrice.Text = "" Then

                    MsgBox("يرجى التأكد من إدخال سعر البيع", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. سعر البيع مطلوب")

                    tbSellingPrice.Focus()

                    Return

                End If

                If tbNo.Text = "" Then

                    MsgBox("يرجى التأكد من إدخال عدد الوحدات", vbMsgBoxRight + MsgBoxStyle.Critical, "عذراً .. عدد الوحدات مطلوب")

                    tbBillNo.Focus()

                    Return

                End If

         

                Try

         

                    For i = 0 To dgvBill.Rows.Count - 1

                        If dgvBill.Rows(i).Cells("ItemName").Value = tbItemName.Text Then

                            MsgBox("المادة التي أخترتها مضافة فعلاً الى فاتورة البيع", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

                            Return

                        End If

                    Next

         

                    If dgvBill.Rows.Count <> 0 Then

                        Dim lastrow = dgvBill.Rows.Count - 1

                        If dgvBill.Rows(lastrow).Cells("ItemName").Value = "المجموع" Then

                            dgvBill.Rows.RemoveAt(lastrow)

                        End If

                    End If


                  dgvBill.Rows.Add()

                  Dim NewRow = dgvBill.Rows.Count - 1

                  dgvBill.Rows(NewRow).Cells("ItemName").Value = tbItemName.Text

                  dgvBill.Rows(NewRow).Cells("Price").Value = tbSellingPrice.Text

                  dgvBill.Rows(NewRow).Cells("No").Value = tbNo.Text

                  dgvBill.Rows(NewRow).Cells("Total").Value = CInt(tbSellingPrice.Text * tbNo.Text)

         

                   dgvBill.Rows.Add()

                   Dim RowTotal = dgvBill.Rows.Count - 1

                   dgvBill.Rows(RowTotal).Cells("ItemName").Value = "المجموع"

         

                   Dim sumRowTotal As Double

                   sumRowTotal = 0

         

                   For Each r As DataGridViewRow In dgvBill.Rows

                       sumRowTotal += r.Cells("Total").Value

                   Next

                   dgvBill.Rows(RowTotal).Cells("No").Value = "-"

                   dgvBill.Rows(RowTotal).Cells("Price").Value = "-"

                   dgvBill.Rows(RowTotal).Cells("Total").Value = sumRowTotal


                Catch ex As Exception

                    MsgBox(ex.Message)

         

                End Try

         End Sub


        لتحميل الأكواد المستخدمة في الدرس إضغط هنا





        يمكنكم متابعة الدرس عن طريق اليوتيوب


        تعليقات

        المشاركات الشائعة من هذه المدونة

        برنامج إدارة المطاعم - الدرس الثالث والعشرون والأخير: برمجة صلاحيات المستخدمين

        برنامج إدارة المبيعات - الدرس الأول :- صفحة الموجودات - الجزء 1 - إنشاء جدول الموجوادت وعرضه بالفيجوال بيسك

        دورة Microsoft Access - الدرس الثامن: انشاء وتوزيع صلاحيات التحكم للمستخدمين :