برنامج إدارة المبيعات: الدرس السادس: صفحة البيع النقدي - الجزء 3: إلغاء فاتورة البيع - حذف مادة من فاتورة البيع


 في الدرس السادس من برنامج ادارة المبيعات سنقوم بإلغاء او حذف جميع المواد المضافة الى فاتورة البيع الموجودة في الداتاكردفيو - dgvBill عن طريق زر الغاء الفاتورة ، وايضاً نقوم بحذف صف معين من فاتورة البيع الموجودة في الداتاكردفيو - dgvBill في حال اضافته سهواً عن طريق زر حذف مادة من الفاتورة كما موضح بهذه الصورة 







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

  • زر إلغاء  الفاتورة - btnCancel
  • زر حذف مادة من الفاتورة  btnDeleteItem


أولا: زر إلغاء الفاتورة - btnCancel

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

ويتم ذلك عن طريق كتابة الكود التالي داخل زر إلغاء الفاتورة - btnCancel بالشكل التالي:-

 Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click

        dgvBill.Rows.Clear()

 End Sub


ثانياً: زر حذف مادة من الفاتورة - btnDeleteItem


عن طريق النقر على هذه الاداة زر حذف مادة من الفاتورة - btnDeleteItem يقوم البرنامج بحذف او التخلص من الصف المحدد  المضاف من قبل المستخدم سهواً او عن طريق الخطأ داخل الفاتورة داتاكردفيو - dgvBill.

لكن لعملية حذف صف من الفاتورة داتاكردفيو - dgvBill ثلاث شروط يجب التأكد من تحققها قبل عملية تنفيذ الحذف وهي:- 

  • ان يتم التأكد من ان الصف المراد حذفه من الفاتورة داتاكردفيو - dgvBill ليس صف المجموع. وذلك عن طريق التحقق من ان اسم المادة ItemName المراد حذفها الموجود في عمود ItemName داخل داتاكردفيو - dgvBill قيمته لا تساوي كلمة  المجموع.  فأذا كان اسم المادة المراد حذفها يساوي كلمة المجموع يم اظهار رسالة تخبر المستخدم انه لايكمن جذف صف المجموع مع وجود صفوف تحتوي على مواد ويتم الرجوع عن عملية الحذف والتوقف عن تنفيذ بقة الاكواد الموجودة داخل زر  الحذف.

ويتم ذلك عن طريق كتابة الكود داخل زر حذف مادة من الفاتورة - btnDeleteItem بالشكل التالي:-

Dim curRow = dgvBill.CurrentRow.Index

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

    MsgBox("لا يمكن حذف المجموع مع وجود مواد مضافة", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

    Return

   Else

End If


  • اذا كان عدد المواد الموجودة في الفاتورة داتاكردفيو - dgvBill هي مادة واحدة فيتم حذف صف المجموع مع الصف المحدد وذلك لخلو الفاتورة من المواد وبالتي وجود صف المجموع ليس له حاجة. ويتم ذلك باستخدام جملة ال IF للتاكد من ان عدد الصفوف في الفاتورة يساوي صف واحد بعد حذف الصف المحدد سابقاً.

ويتم ذلك عن طريق كتابة الكود داخل زر حذف مادة من الفاتورة - btnDeleteItem بين Else  المستخدمة في جملة ال IF  و ال End If للتاكد من ان عدد الصفوف يساوي 1 ويكون بالشكل التالي:--

Dim curRow = dgvBill.CurrentRow.Index

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

    MsgBox("لا يمكن حذف المجموع مع وجود مواد مضافة", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

    Return

Else

     dgvBill.Rows.RemoveAt(curRow)

     If dgvBill.Rows.Count <> 1 Then

     Else

         'dgvBill.Rows.RemoveAt(curRow)

          dgvBill.Rows.RemoveAt(dgvBill.Rows.Count - 1)

      End If

 End If




  • يتم اعادة جمع الصفوف الموجودة داخل عمود ItemName للحصول عل المجموع الجديد بعد حذف اي صف وذلك بسبب تغير قيمة المجموع بعد حذف اي صف.




ويتم ذلك عن طريق كتابة الكود داخل زر حذف مادة من الفاتورة - btnDeleteItem بين IF المستخدمة في جملة ال IF  و ال Else ويكون بالشكل التالي:-

Dim curRow = dgvBill.CurrentRow.Index

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

    MsgBox("لا يمكن حذف المجموع مع وجود مواد مضافة", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

    Return

Else

     dgvBill.Rows.RemoveAt(curRow)

     If dgvBill.Rows.Count <> 1 Then

        dgvBill.Rows.RemoveAt(lastRow)

        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

     Else

         'dgvBill.Rows.RemoveAt(curRow)

          dgvBill.Rows.RemoveAt(dgvBill.Rows.Count - 1)

      End If

 End If


وأخيراً يتم وضع الاكواد اعلاه  في جملة Try  .. Catch , وحسب الترتيب الموضح بالكود التالي 


Private Sub btnDeleteItem_Click(sender As Object,e As EventArgs)Handles btnDeleteItem.Click

Try

   Dim curRow = dgvBill.CurrentRow.Index

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

    MsgBox("لا يمكن حذف المجموع مع وجود مواد مضافة", vbMsgBoxRight + MsgBoxStyle.Information, "عذراً..")

    Return

Else

     dgvBill.Rows.RemoveAt(curRow)

     If dgvBill.Rows.Count <> 1 Then

        dgvBill.Rows.RemoveAt(lastRow)

        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

     Else

         'dgvBill.Rows.RemoveAt(curRow)

          dgvBill.Rows.RemoveAt(dgvBill.Rows.Count - 1)

      End If

 End If

Catch ex As Exception 

End Try





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




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









تعليقات

  1. السلام عليكم ورحمة الله وبركاته
    أ.ستاذ علي الحدثي....بارك الله فيك على المجهود الجبار
    بس طلب ..لو مازال في دروس تكميلية لبرنامج المبيعات..
    أرجوا ان تشرح...
    1-كيفية تعبئة الفاتورة من خلال الباركود
    2- وعند ادراج كمية اي صنف أرجوا ان يكون هنالك شرط بحيث لايزيد عدد الصنف في الفاتورة عن عدد الصنف المتواجد في جدول الاصناف...وفي حالة إدخال عدد كأكبر من عدد الصنف في جدول الاصناف ارجوا ان يكون هنالك إشعار من خلال رسالة...
    وشكرا جزيلا....

    ردحذف
    الردود
    1. السلام عليكم ورحمة الله وبركاته
      أ.ستاذ علي الحدثي....بارك الله فيك على المجهود الجبار
      بس طلب ..لو مازال في دروس تكميلية لبرنامج المبيعات..
      أرجوا ان تشرح...
      1-كيفية تعبئة الفاتورة من خلال الباركود
      2- وعند ادراج كمية اي صنف أرجوا ان يكون هنالك شرط بحيث لايزيد عدد الصنف في الفاتورة عن عدد الصنف المتواجد في جدول الاصناف...وفي حالة إدخال عدد أكبر من عدد الصنف في جدول الاصناف ارجوا ان يكون هنالك إشعار من خلال رسالة...
      وشكرا جزيلا....

      حذف

إرسال تعليق

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

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

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

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