تصميم و برمجة فورم الايراد حساب نقطة البيع

في الدرس السابق انتهينا من تصميم فورم الخاص بالمصاريف المستحقه على الشركة او المحل التجاري  . 

سنتكلم اليوم عن موضوع مهم جدا يخص الايراد اليومي اي كيف نجد الايراد اليومي حتئ نعرف هل الشركة او المحل التجاري في ربح او خساره عند بيع الاصناف بما يقابلها من مصاريف ومستحقات علئ الشركة من مشتريات الاصناف .

 ماهو الايراد ؟ 

 الإيراد في الاقتصاد (بالإنجليزية: Revenue) هو الدخل الذي تحققه الشركة أو المصنع أو المؤسسة التجارية من نشاط أعمالها التجاري، وهو في العادة إيراد بيع سلع أو خدمات إلى مشترين .

 في الأعمال التجارية، يعرّف الإيراد أو "دورة رأس المال" على أنه الدخل الذي تستحقه الشركة من أنشطة الأعمال التجارية العادية التي تقوم بها، كبيع سلعة أو خدمة للعملاء والمستهلكين .

 الايراد في نضامنه السوبر ماركت هو عباره عن حساب عدد الفواتير التي تم بيعها من خلال حساب اجمالي المبيعات وليس شرط ان يكون الايراد كله نقدي(كاش) قد يكون اجل وبالتالي الايراد يتحقق متى تم البيع… .. 

  كيف نحسب الايراد ؟ 

 نحسب الايراد من خلال نقطه البيع ونقطه البيع هي الفرق بين مايدخل ويخرج من صندوق الشركة… مثال تم بيع فاتوره مبيعات بقيمه 1000 تم توريد 500 نقديه تم صرف صرفيات بقيمه 300 وبالتالي يتم حساب الايراد من خلال معادله التاليه (1000+500 ) - 300 = 1200 الايراد هو 1200 هكذا سوف نحسب الايراد اي سوف نجمع حجم المبيعات المباعه مع توريد النقديه ناقص صرف النقدية .

تصميم و برمجة الإيراد و نقطة البيع

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

  ـ  Textbox عدد 5 

  ـ  Button عدد 2 

  ـ  DateTimePicker عدد 2 

   ـ  label امام كل اداه 

 #  اسماء الادوات برمجيا تبقى كما هي دون تغير 

 بحيث يصبح الفورم النهائي للايراد Revenue كما في الصورة 

تصميم و برمجة  فورم حساب نقطة البيع والإيراد

 

 ملاحظه

 اخي المبرمج جماليه الفورم انت بتصمم علئ كيفك لان تصميم (ذوق) يختلف من شخص إلى اخر .

 ثم نربط الفورم بالفورم الرئيسي manipage نقوم باضافة فرع مع قائمه حسابات 

ثم ننقر نقرتين عليه ونكتب الكود التالي لربط الفورم .

.vb
	

Revenue.MdiParent = Me

Revenue.WindowState = FormWindowState.Maximized

Revenue.Show()
  

لاحظ الصورة  توضيح كيف تم ربط فورم بالفورم الرئيسي manipage


  لاحظ الصورة توضيح ترتيب كود الربط #



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

 هناك طرق كثيره لجلب مجموع اجمالي مبيعات واسهل هذه الطرق هي عمل كويري علاقه بين جدول salepill الخاص بالمبيعات وجدول operations الخاص بحركة المبيعات ولكن قبل عمل الاستعلام لو فكرنه شويه علئ اي اساس نجلب مجموع مبيعات اكيد علئ اساس اسم العميل ومجموع الفاتوره اسم العميل غير موجود في جدول operations وعلى هذا الاساس نقوم باضافة حقل جديد في جدول operations ونمسيه opercustmer من نوع نص خاص بالعميل وناخذ مجموع فاتوره مبيعات من خلال حقل Saletotalg

 لاحظ الصورة  اضافة حقل opercustmer في جدول operations


 وبالتالي نذهب الى قاعده بيانات ومن قائمة انشاء نختار تصميم الاستعلام ثم نختار الجدولين salepill و operations ونختار الحقول التي نحتاجها في هذا الاستعلام كالتالي : opercustmer Saletotalg Salecash Operdate هذه  الحقول التي نحتاجها في الاستعلام

    لاحظ الصوره  توضيح حقول الاستعلام


… 

 ثم نذهب الى الفورم وننقر نقرتين على زر حساب الايراد ونكتب الكود التالي :

.vb
	  
`======حساب الايراد

Try

Dim dt As New DataTable

Dim da As New OleDbDataAdapter

dt.Clear()

da = New OleDbDataAdapter("SELECT * from salepill where saledate between #" & DateTimePicker1.Value.ToString("yyyy/MM/dd") & "# and #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "#", con)

da.Fill(dt)

For i As Integer = 0 To dt.Rows.Count - 1

Dim rr As Double

rr = dt.Rows(i).Item("saletotalg") + rr

TextBox4.Text = rr

Next

Catch ex As Exception

End Try
	

 شرح الكود 

 عرفنا متغيرات للداتا تيبل وداتا ادبتر ثم فضينا clear ثم جعلنا da يساوي select جدول salepill وبين between تاريخين للبحث عن فواتير مبيعات في جدول salepill ثم عرفنا جمله for حتئ يلف لي حول جدول في كل مره ويجمعلي فواتير مبيعات من حقل Saletotalg ثم جعلنا Textbox4 يضهر عليه ناتج الايراد 

  ثم نذهب الى فورم المبيعات selepill ثم ننقر على زر الحفظ وفي جملة lnsert نضيف الحقل الذي قمنا باضافته opercustmer وايضا نضيف حقل saleld ثم نضع ما يقابل هذين حقلين من قيم تكس بوكس على الفورم نفسه اي عند اضافة opercustmer نضيف قيمه له اي التكس بوكس الذي سوف ندخل بيانات عليه ونحفظه في opercustmer وهكذا نفس كلام في حقل saleld 

 لاحظ الصوره  توضيح اضافة حقل opercustmer وحقل saleld في جملة lnsert في فورم المبيعات 


 لاحظ الصوره  توضيح اضافة قيم تكس بوكس للحلقيلن opercustmer و saleld 

تصميم و برمجة  فورم حساب نقطة البيع والإيراد

 

ثم نقوم بانشاء اجراء خاص لجلب اجمالي المبيعات من خلال الاستعلام الذي عملناه سابقًا نسمي الاجراء selectquerysale ثم نكتب الكود التالي :

.vb
	  
Public Sub selectquerysale()


Dim dt As New DataTable

Dim da As New OleDbDataAdapter

dt.Clear()

da = New OleDbDataAdapter("SELECT * FROM salepill where salecash = yes and saledate between #" & DateTimePicker1.Value.ToString("yyyy/MM/dd") & "# and #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "#", con)

da.Fill(dt)

Dim x As Double

For i As Integer = 0 To dt.Rows.Count - 1

x = dt.Rows(i).Item("saletotalg") + x

Next

TextBox1.Text = x

End Sub
	

شرح الكود

  عرفنا متغيرات للداتا تيبل وداتا ادبتر ثم فضينا clear ثم حددنا select جدول salepill للبحث عن فواتير مباعه بشرط where عندما تكون فواتير مباعه كاش salecash وليس اجل من خلال بحث عن طريق saledate بين تاريخين داتا تايم بكر 1 ،2 ايضا عرفنا متغير x لجمع فواتير مباعه في جدول salepill من خلال حقل saletotalg ثم جعلنا ناتج اجمالي مبيعات يضهر في تكس بوكس Textbox1 

  نحتاج ايضا الئ جلب اجمالي صرف واجمالي توريد من جدول financial_accounts وبالتالي نقوم بانشاء اجراء خاص لجلب اجمالي صرف ونسمي الاجراء sirfQ ونكتب الكود التالي :

.vb
	  
Public Sub sirfQ()

Dim dt As New DataTable

Dim da As New OleDbDataAdapter

dt.Clear()

da = New
OleDbDataAdapter("SELECT findate, finstste, finmony, finsubfrom, finsubto from financial_accounts where finstste = 'صرف نقدية' and findate between #" & DateTimePicker1.Value.ToString("yyyy/MM/dd") & "# and #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "#", con)


da.Fill(dt)

Dim x As Double

For i As Integer = 0 To
dt.Rows.Count - 1

x = dt.Rows(i).Item("finmony") + x

Next

TextBox2.Text = x

End Sub
	

 شرح الكود 

 الكود نفس كود السابق بالضبط لكن في جمله select اختارينه جدول financial_accounts وجميع الحقول في حاله صرف نقديه اي عند بحث بتاريخ معين عن صرف معين سوف يجيبلي الصرفيات بهذا التاريخ وهكذا ثم عرفنا for ليلف لي في جدول financial_accounts ويجمعلي الصرفيات ثم وضعنا نتيجه اجمالي صرف في textbox2

.

 يبقئ لدينا حساب اجمالي توريد وحساب نقطه البيع

   نقوم بانشاء اجراء خاص لجلب اجمالي توريد ونسمي الاجراء tiwred ويصبح الكود كالتالي :

.vb
	  
Public Sub tiwred()


Dim dt As New DataTable

Dim da As New OleDbDataAdapter

dt.Clear()

da = New OleDbDataAdapter("SELECT findate, finstste, finmony, finsubfrom, finsubto from financial_accounts where finstste = 'توريد نقدية' and findate between #" & DateTimePicker1.Value.ToString("yyyy/MM/dd") & "# and #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "#", con)

da.Fill(dt)


Dim x As Double

For i As Integer = 0 To
dt.Rows.Count - 1

x = dt.Rows(i).Item("finmony") + x

Next

TextBox3.Text = x

End Sub
	

الكود نفس كود الصرف بالضبط لكن هناك في حاله صرف وهنا في حاله توريد وناتج اجمالي توريد في textbox3 

حساب نقطه البيع ننقر نقرتين على زر حساب نقطه البيع ونكتب الكود التالي :

.vb
	  

selectquerysale()

sirfQ()

tiwred()


TextBox6.Text = (Val(TextBox1.Text) + Val(TextBox3.Text)) - (Val(TextBox2.Text))
Catch ex As Exception


End Try
	

شرح الكود 

 تم استدعاء اجراءات الخاصه اجمالي المبيعات selectquerysale اجمالي الصرف sirfQ اجمالي التوريدtiwred ثم عملنا معادله نقطه البيع (TextBoxt6) تساوي بين قوسين قيمه اجمالي المبيعات (TextBoxt1) زائد قيمه اجمالي توريد (TextBoxt3) ناقص قيمه اجمالي الصرف (TextBoxt2) .

 شاهد الفيديو  توضيح ترتيب جميع اكواد التي قمنا ببرمجتها في فورم الايراد


.

     ايضا شاهد الفيديو  بعد تنفيذ البرنامج توضيح كيف تم حساب نقطه البيع وحساب الايراد 


.


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

   وصلنا الى نسبه 95 % من تصميم وبرمجة نظام السوبر ماركت باحترافيه 

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

 وسنبرمج هذا الفورم في الدرس القادم ان شاء الله……

 الفورمات كالتالي : 

فورم الموردين 

فورم العملاء 

 فورم الاصناف 

 فورم المكان 

فورم المجموعة 

 فورم الشركة  

فورم فاتوره المبيعات 

 فورم مرتجع البيع

 فورم فاتوره المشتريات

 فورم مرتجع الشراء 

  فورم الحضور

  فورم الانصراف  

فورم الموظفين  المسخدمين

فورم صرف وتوريد النقديه

  فورم المصروفات

  فورم حساب الايراد اليومي

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