تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] الشرح المتكامل لطريقة عمل فاتورة مبيعات وطباعتها
#4
نستكمل ما بدأناه (بعون الله وتوفيقه )في السابق وسنقوم بكتابة أكواد اضافة البيانات علي الفاتورة

نذهب الآن إلى الفورم الذي سنعمل عليه فاتورة وهنا عندي Form1
افتراضيا
من جدول رأس الفاتورة  وجدول السداد سنضيف ما يناسبها من ادوات التحكم من مربعات نص وخلافة  سأضع الشكل النهائي لصورة الفورم ولكن مايهمني حقآ هنا هو طريقة تخريج الاصناف للبيع وستكون كالتالي
نضع داتا جريد فيو داخل الفورم وننسق الأدوات على النحو الذي يعجبنا وهذا هو الشكل النهائي لشكل الفورم الذي قمت بتصميمه




مع الوضع في الاعتبار أنني قمت بعمل خلايا  الداتا جريد فيو كما هو موضح بالصورة التالية وعمل خليه اسمها   HeaderNO وحددت خاصيى فيزابل لها بالقيمة False حتي لا تظهر للمستخدم  وسنستخدمها للربط مع الجدول Header



ومن الملاحظ هنا أنني سأكتب بيانات كل منتج وعند كتابة الكمية المباعة والضغط علي مفتاح انتر سيتم اضافة العناصر الي الداتا جريد فيو ومسح الخلايا استعدادا لادخال منتج جديد
الان انتهينا من التصميم ننتقل الي مرحلة الأكواد
في البداية كان أكثر ما يشغل بالي أن جدول هيدر هو ترقيم تلقائي لرقم الفاتورة وهنا سأقوم بحفظ جدولين آخرين لابد من أن أكون اعرف رقم الفاتورة من قبل الحفظ لذلك سنقوم بكتابة كود يذهب لجدول الهيدر ويجلب آخر رقم فاتورة مسجلة ويضيف عليها رقم 1 وسنضع هذا الكود في تحميل الفورم وبذلك نضمن وجود رقم الفاتورة من بداية تحميل الفورم
نستخدم الكود التالي

PHP كود :
Try
 
          Dim BillNo As New DataTable
           BillNo 
= New DAL().selectdatatable(" Select * FROM tbl_Header ")
 
          For As Integer 0 To BillNo.Rows.Count
               txtBillNo
.Text BillNo.Rows(i)(0).ToString 1
           Next
       
Catch ex As Exception
           
'  MsgBox(ex.Message)
       End Try 



نضع الكود السابق في تحميل الفورم
بديهيا أن اسم العميل وتاريخ الفاتورة سيقوم المستخدم بتحديدهم يدويا فلن نتطرق إليهم توفيرا للوقت والمجهود ولعدم تشعب الموضوع حتى لا نخرج عن سياق موضوعنا الأساسي

الان نحن نملك تكست بوكس سنكتب فيه اسم الصنف ونحدد سعرة والكمية المباعه مع العلم بأنه قمت بتحديد الخلية الاخيرة المجموع  ReadOnly لاننا سنقوم بجلب المجموع اوتوماتيكيا وعندما يكون التركيز في مربع نص الكمية المباعه عند الضغط علي مفتاح انتر سيتم ادراج الخلايا في الداتا  جريد فيو ومسح الخلايا ووضع التركيز علي مربع اسم الصنف استعدادا لكتابة صنف جديد
ولعمل هذا نحدد مربع نص الكمية المباعه وفي حدث KeyDown سنكتب الكود التالي

 

PHP كود :
Private Sub txtCount_KeyDown(sender As ObjectAs KeyEventArgsHandles txtCount.KeyDown
       
' الحدث عند الضغط على انتر 
       If e.KeyCode = Keys.Enter Then
           ' 
التأكد من أن خلية اسم الصنف غير فارغة 
           
'ويمكنك هنا اضافة باقي مربعات النص هنا أنا اضع الفكرة فقط 
           If txtProd.Text = "" Then
               MsgBox("خطأ")
               Return
           End If
           ' 
ضرب الكمية في السعر للحصول على الاجمالي 
           txtProdTottal
.Text Val(txtCount.Text) * Val(txtPrice.Text)
 
          '  اضافة المبلغ الاجمالي هنا لخلية اجمالي الفاتورة قبل الخصم 
           DGVsum.Text += Val(txtProdTottal.Text)
           ' 
 اضافة المبلغ الاجمالي هنا لخلية اجمالي الفاتورة بعد الخصم 
           TXTNotPaid
.Text += Val(txtProdTottal.Text)
 
          ' كود وضع العناصر داخل الجدول
           For Each R As DataGridViewRow In DataGridView1.Rows
               R.HeaderCell.Value = (R.Index + 1).ToString
           Next
           DataGridView1.Rows.Add()
           DataGridView1.Item(0, DataGridView1.Rows.Count - 1).Value = txtProd.Text  ' 
وضع اسم الصنف في الخلية الاولي
           DataGridView1
.Item(1DataGridView1.Rows.Count 1).Value txtPrice.Text  ' وضع سعر الصنف في الخلية الثانية
           DataGridView1.Item(2, DataGridView1.Rows.Count - 1).Value = txtCount.Text   ' 
 وضع الكمية في الخلية الثالثة
           DataGridView1
.Item(3DataGridView1.Rows.Count 1).Value txtProdTottal.Text   ' الاجمالي في الخلية الرابعة
           DataGridView1.Item(4, DataGridView1.Rows.Count - 1).Value = txtBillNo.Text   ' 
 هنا نضع رقم الفاتورة في الخلية الغير ظاهرة 
           txtProd
.Text String.Empty
 
          txtPrice.Text String.Empty
 
          txtCount.Text String.Empty
 
          txtProdTottal.Text String.Empty
 
          txtProd.Focus()
 
      End If
 
  End Sub 


ليصبح شكل الفاتورة النهائي كالاتي



وهنا سينتقل المستخدم الي خانة الخصم اذا اراد ان يكتب خصم علي الفاتورة أو يترك القيمة الافتراضية صفر ويذهب الي خانة المبلغ المدفوع لكتابة المبلغ المدفوع
طبعا سنضع شرط ان المستخدم لن يستطيع حفظ الفاتورة اذا كان المبلغ المدفوع = صفر ولكن هذا في حدث مفتاح الحفظ لن نشرحة الان لكن يهمنا هنا أن نضع كود في حالة تغير النص في مربع المبلغ المدفوع يقوم بحساب الخصم ويقوم بطرحة من المبلغ الاجمالي للفاتورة ثم يخصم المبلغ المدفوع من الناتج ويكتب المتبقي في مربع المبلغ المتبقي


وسنقوم بعمل ذلك في حدث TextChanged لمربع النص المبلغ المدفوع
ويكون الكود كالتالي


PHP كود :
Private Sub txtPay_TextChanged(sender As ObjectAs EventArgsHandles txtPay.TextChanged

       TXTNotPaid
.Text = (Val(DGVsum.Text) - Val(txtDisc.Text) - Val(txtPay.Text))

 
  End Sub 




حتى هذه المرحلة الكلام جميل وكلنا نعرفه ولا مشكلة
من الدرس القادم بإذن الله سنبدأ بوضع أكواد الحفظ في قاعدة البيانات استعدادا لعمل تقرير الطباعة وطباعة الفاتورة
وإن شاء الله سأضع ملف المشروع وملف PDF للشرح والصور في نهاية الدرس
نستكمل لاحقا إن شاء الله
دمتم بخير


الرد }}}
تم الشكر بواسطة: رحوووم , مبرمج بلا حدود , adel27 , adel27


الردود في هذا الموضوع
RE: الشرح المتكامل لطريقة عمل فاتورة مبيعات وطباعتها - بواسطة الفيومي116 - 24-03-15, 06:23 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصميم فاتورة مبيعات ومشتريات Abu Ehab 0 3,269 27-11-18, 11:27 AM
آخر رد: Abu Ehab
  مثال للعمليات علي قواعد البيانات مع الشرح mr_mgm 2 5,572 21-11-18, 04:20 AM
آخر رد: Ebrahim5556

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم