برنامج إدارة المبيعات: الدرس السادس: صفحة البيع النقدي - الجزء 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
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
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
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
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
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
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-كيفية تعبئة الفاتورة من خلال الباركود
2- وعند ادراج كمية اي صنف أرجوا ان يكون هنالك شرط بحيث لايزيد عدد الصنف في الفاتورة عن عدد الصنف المتواجد في جدول الاصناف...وفي حالة إدخال عدد كأكبر من عدد الصنف في جدول الاصناف ارجوا ان يكون هنالك إشعار من خلال رسالة...
وشكرا جزيلا....
السلام عليكم ورحمة الله وبركاته
حذفأ.ستاذ علي الحدثي....بارك الله فيك على المجهود الجبار
بس طلب ..لو مازال في دروس تكميلية لبرنامج المبيعات..
أرجوا ان تشرح...
1-كيفية تعبئة الفاتورة من خلال الباركود
2- وعند ادراج كمية اي صنف أرجوا ان يكون هنالك شرط بحيث لايزيد عدد الصنف في الفاتورة عن عدد الصنف المتواجد في جدول الاصناف...وفي حالة إدخال عدد أكبر من عدد الصنف في جدول الاصناف ارجوا ان يكون هنالك إشعار من خلال رسالة...
وشكرا جزيلا....