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


انا اقوم بعمل نظام لاداره تأجير محلات ومخازن لعده مجمعات بس بواجه مشكله بسيطه وهي:
اني اريد ان اساخرج جميع المستاجرين الذين لم يقومو بدفع شهر معين.

لذلك ما أحتاجه هو الحصول على جميع المستاجرين الذين  لم يدفعو لهذا الشهر أو الشهر المحدد حسب  اختيارالمستخدم (ملاحظة: ليس على جميع العملاء  أن يدفعو في نفس التاريخ، ربما بعضهم يجب يدفع في 10-9-2017 أو في 20- 9-2017 او ...) لذلك أنا بحاجة إلى جميع العملاء الذين يجب أن يدفعو في سبتمبر مثلا  (1-9-2017 إلى 30-9-2017).

اريد ان الخص لك عمل البرنامج لتفهم ما اريد.

انا اقوم بعمل برنامج لاداره مجموعه من المجمعات في هذه المجمعات محلات وهذه المحلات تؤجر لفتره معينه، فيكون العقد اما 6 اشهر او 12 شهر او 18 او 24 ... الخ.

فيكون الدفع اما كاملا ( العقد فتره معينة و الدفع مره واحدة) ، او يكون العقد ( العقد فتره معينة و الدفع شهريا بمبلغ معين بالشهر)

على سبيل المثال :

* عقد 1 : 12000 ريال لمده 12 شهر - يدفع مره واحده ( يخزن في جدول payments_yearly)

* عقد 2 : 12000 ريال لمده 12 شهر - يدفع اكثر من مره واحده - فيكون الدفع كالاتي (12000/12 = 1000 ريال شهريا)  ( يخزن في جدول payments_monthly)



عمل البرنامج كالاتي :

جدول المستاجرين 

و جدول للمحلات المؤجره 

جدول للعقود ( يربط فيه المستاجر و المحل المؤجر)

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


ما اريده هو مثلا اريد ان اعرف كل المستاجرين الذين لم يقومو بالدفع لشهر 9 او الشهر 10 او عن طريق البحث بين تاريخين معينين فالنفرض (1-9-2017 الى 30-9-2017)


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

 لغه البرمجه عي VB.NET - SQL server 

الجداول في قاعة البيانات هي 4 جداول (Customers , shops , Contracts , Payments)


customers :


كود :
CREATE TABLE [dbo].[customers](
   [cust_id] [int] NOT NULL,
   [name] [nvarchar](50) NULL,
   [nickname] [nvarchar](50) NULL,
   [city] [nvarchar](50) NULL,
   [phone1] [nvarchar](15) NULL,
   [phone2] [nvarchar](15) NULL,
   [phone3] [nvarchar](15) NULL,
   [email] [nvarchar](50) NULL,
   [image] [varbinary](max) NULL,
   [date] [date] NULL,
   [image_exist] [nvarchar](5) NULL,


shops :

كود :
CREATE TABLE [dbo].[shops](
   [shop_id] [int] NOT NULL,
   [size] [nvarchar](5) NULL,
   [floor] [nvarchar](10) NULL,
   [location] [nvarchar](50) NULL,
   [status] [nvarchar](10) NULL,
   [date] [date] NULL,
[size]








Contracts:




[/size]
كود :
CREATE TABLE [dbo].[contracts](
   [con_id] [int] NOT NULL,
   [cust_id] [int] NULL,
   [shop_id] [int] NULL,
   [con_duration] [nvarchar](5) NULL,
   [price] [nvarchar](50) NULL,
   [con_use] [nvarchar](20) NULL,
   [rent_type] [nvarchar](10) NULL,
   [price2] [nvarchar](50) NULL,
   [note2] [nvarchar](max) NULL,
   [image] [image] NULL,
   [date_start] [date] NULL,
   [date_end] [date] NULL,
   [note] [nvarchar](max) NULL,
   [image_exist] [nvarchar](5) NULL,
[size]








Payments:



[/size]
كود :
CREATE TABLE [dbo].[payments_monthly](
   [id] [int] IDENTITY(1,1) NOT NULL,
   [con_id] [int] NULL,
   [pay_number] [nvarchar](50) NULL, \\ i get the duration from contact and make numbers of payments, if the duration was 12 then the pay_number will be 1,2,3,.....,12- so the customers need to pay 12 time , one time per month
   [pay_value] [decimal](18, 0) NULL, \\ amount of payment  
   [pay_type] [nvarchar](50) NULL,
   [ch_number] [int] NULL,
   [note] [nchar](10) NULL,
   [date] [date] NULL,









الرد }}}
تم الشكر بواسطة:
#2
لمذا لا تستخدم خاصية البحث؟!
يمكنك اضافة عامود يحتوي على قيمة = 1 لمن سدد الفاتورة و 0 لمن لم يسدد،
وبعدها يمكنك ان تبحث بعامود تاريخ التسليم مع العامود الجديد.

اذا كنت تقصد انك تريد البحث عن كل العملاء في هذا الشهر فعليك جعل البحث يكون أكبر من أو يساوي 1/1/2017 و أصغر من او يساوي 30/12/2017.
الرد }}}
تم الشكر بواسطة: Rabeea Qbaha
#3
(06-09-17, 04:48 PM)أسامة السالمي كتب : لمذا لا تستخدم خاصية البحث؟!
يمكنك اضافة عامود يحتوي على قيمة = 1 لمن سدد الفاتورة و 0 لمن لم يسدد،
وبعدها يمكنك ان تبحث بعامود تاريخ التسليم مع العامود الجديد.

اذا كنت تقصد انك تريد البحث عن كل العملاء في هذا الشهر فعليك جعل البحث يكون أكبر من أو يساوي 1/1/2017 و أصغر من او يساوي 30/12/2017.

شكرا للرد اخي.
اريد ان الخص لك عمل البرنامج لتفهم ما اريد.
انا اقوم بعمل برنامج لاداره مجموعه من المجمعات في هذه المجمعات محلات وهذه المحلات تؤجر لفتره معينه، فيكون العقد اما 6 اشهر او 12 شهر او 18 او 24 ... الخ.
فيكون الدفع اما كاملا ( العقد فتره معينة و الدفع مره واحدة) ، او يكون العقد ( العقد فتره معينة و الدفع شهريا بمبلغ معين بالشهر)
على سبيل المثال :
* عقد 1 : 12000 ريال لمده 12 شهر - يدفع مره واحده ( يخزن في جدول payments_yearly)
* عقد 2 : 12000 ريال لمده 12 شهر - يدفع اكثر من مره واحده - فيكون الدفع كالاتي (12000/12 = 1000 ريال شهريا)  ( يخزن في جدول payments_monthly)

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

ما اريده هو مثلا اريد ان اعرف كل المستاجرين الذين لم يقومو بالدفع لشهر 9 او الشهر 10 او عن طريق البحث بين تاريخين معينين فالنفرض (1-9-2017 الى 30-9-2017)
الرد }}}
تم الشكر بواسطة:
#4
أخي الكريم بغض النظر عن التفاصيل فعنوان الموضوع جوابه سهل جدا
إقتباس :[VB.NET] معرفة من لم يدفع في نظام الفواتير الشهرية
 لا اريد ان اقترح عليك شيئا لكن  اتعرف فكرة  عمود الذكور و الاناث؟
يعني نضع عمود من نوع (نعم/لا) باسم مثلا IsMale فان كان ذكرا فمنطقيا نجعل قيمته (نعم) و ان كانت انثى نجعل القيمة (لا).
واذا اردنا الاستعلام عن الذكور نكتب بجملة الاستعلام :

كود :
select * from tb where IsMale=true
وهكذا ...
نفس الشيء طبقه على من دفع و من لم يدفع.
الرد }}}
تم الشكر بواسطة: Rabeea Qbaha
#5
(06-09-17, 05:13 PM)سعود كتب : أخي الكريم بغض النظر عن التفاصيل فعنوان الموضوع جوابه سهل جدا
إقتباس :[VB.NET] معرفة من لم يدفع في نظام الفواتير الشهرية
 لا اريد ان اقترح عليك شيئا لكن  اتعرف فكرة  عمود الذكور و الاناث؟
يعني نضع عمود من نوع (نعم/لا) باسم مثلا IsMale فان كان ذكرا فمنطقيا نجعل قيمته (نعم) و ان كانت انثى نجعل القيمة (لا).
واذا اردنا الاستعلام عن الذكور نكتب بجملة الاستعلام :

كود :
select * from tb where IsMale=true
وهكذا ...
نفس الشيء طبقه على من دفع و من لم يدفع.

اخي سعود شكرا للرد اولا .
اذا اردت عمل ما تقول يجب ان يكون في الجدول الخاص بالدفع اعمده لجميه الدفعات الواجب دفعها
يعني فالنفرض عندنا عقد مدتة 12 شهر يلزم ان يكون 12 عمود في جدول الدفع لهذا القد 
وهي 1 2 3 .... 12 . 
المشكله انه تختلف مده العقود فهناك عقود 6 اشهر وهناك عقزد قد تصل الى 24 شهر 
فكيف ساقوم بهذا.
و اعذرني اذا لم يكن في كلامي منطق فعقلي مشوش من التفكير.
وشكرا
الرد }}}
تم الشكر بواسطة:
#6
وانا بدوري ايضا اعتذر لعدم المامي بكل المعلومات حول التطبيق.


لكن مداخلتي مقصورة على قيمة معينة (نعم/لا)
وهذا مثال بسيط:
كود :
Public Class Form1
   Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb"
   Dim con As New OleDb.OleDbConnection(str)
   Dim da As OleDb.OleDbDataAdapter
   Dim dt As DataTable
 
   Private Sub btnget_Click(sender As Object, e As EventArgs) Handles btnget.Click
       da = New OleDb.OleDbDataAdapter("select * from [tb] where [male]=" & ismale.Checked & "", con)
       dt = New DataTable
       da.Fill(dt)
       Me.DataGridView1.DataSource = dt
   End Sub
End Class




الرد }}}
تم الشكر بواسطة: Rabeea Qbaha
#7
(06-09-17, 07:22 PM)سعود كتب : وانا بدوري ايضا اعتذر لعدم المامي بكل المعلومات حول التطبيق.


لكن مداخلتي مقصورة على قيمة معينة (نعم/لا)
وهذا مثال بسيط:
كود :
Public Class Form1
   Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb"
   Dim con As New OleDb.OleDbConnection(str)
   Dim da As OleDb.OleDbDataAdapter
   Dim dt As DataTable
 
   Private Sub btnget_Click(sender As Object, e As EventArgs) Handles btnget.Click
       da = New OleDb.OleDbDataAdapter("select * from [tb] where [male]=" & ismale.Checked & "", con)
       dt = New DataTable
       da.Fill(dt)
       Me.DataGridView1.DataSource = dt
   End Sub
End Class





شكرا لتفاعلك اخي.
انا فاهم قصدك تماما، وساكون ممتن لك جدا اذا ساعدتني بهذا نظرا لخبرتك.
فانا عالق بهاذا الشيء من كم يوم و اريد الحل الافضل.

لو اريد ان اطبق طريقتك، فيجب علي ان افعل التالي :
عند اضافع عقد جديد فالنفرض ان مدته هي 12 شهر
يجب علي اضافة 12 سطر لجدول الدفعات كل سطر برقم الدفعه 
رقم الدفعه 1 | مدفوع : لا | التاريخ | ...
رقم الدفعه 2 | مدفوع : لا | التاريخ | ...

اذا هذا صحيح كيف استطيع فعل هذا الشيء 
و اذا كان هنالك طرق اخرى فاليكن 
اتمنى منك مساعدتي بهذا الشيء فعملي بالمشروع متوقف  Sad

وشكرا
الرد }}}
تم الشكر بواسطة:
#8
السلام عليكم
طيب يا ربيع طالما العقود غير متشابهة يعني مثل ما حكيت انه في عقود ب 12 شهر و في عقود ب 6 شهر و و
اعتقد بأن المشكلة محلولة بحال قمت بوضع كومبوبوكس لمدة العقد
عقد 12 شهر
عقد 6 شهر

بهذه الحالة تقدر توزع شغلك بحيث تعمل حقل اخر الى الجدول و نسميه نوع الحقل اما سنوي او جزئي بحيث ما تتغلب عند الاستعلام هذا واحد

ثنين عند البحث تقدر تجمع هذه الخصائص الاربع اللي هي نوع العقد و مدة العقد سنوي 12 شهر او جزئي 6 شهور و تاريخ العقد اما بتاريخ او بين تاريخين و حالة القسط طبعا هون اما تكون مدفوع او معفي او لم يسدد بعد .
و هيك اتوقع توصلنا للحلقة المفقودة و الله اعلم .

على الرحب و السعة
الرد }}}
تم الشكر بواسطة: Rabeea Qbaha
#9
(06-09-17, 08:55 PM)Amir_alzubidy كتب : السلام عليكم
طيب يا ربيع طالما العقود غير متشابهة يعني مثل ما حكيت انه في عقود ب 12 شهر و في عقود ب 6 شهر و و
اعتقد بأن المشكلة محلولة بحال قمت بوضع كومبوبوكس لمدة العقد
عقد  12 شهر
عقد 6 شهر

بهذه الحالة تقدر توزع شغلك بحيث تعمل حقل اخر الى الجدول و نسميه نوع الحقل اما سنوي او جزئي بحيث ما تتغلب عند الاستعلام  هذا واحد

ثنين عند البحث تقدر تجمع هذه الخصائص الاربع اللي هي نوع العقد و مدة العقد سنوي 12 شهر  او جزئي 6 شهور و تاريخ العقد اما بتاريخ  او بين تاريخين و حالة القسط طبعا هون اما تكون مدفوع او معفي او لم يسدد بعد .
و هيك اتوقع توصلنا للحلقة المفقودة و الله اعلم .

على الرحب و السعة

شكرا على الرد اخي عامر :
هنالك حلقه مفقوده 
كل الذي كتبته موجود بالفعل
(كومبوبوكس لمدة العقد ) - textbox بحدد مده العقد ويخزن في جدول العقود - duration 
 (نوع الحقل اما سنوي او جزئي بحيث) = جدول العقود - rent_type

هذه بعض الصور للتوضيح اكثر :

جدول المستاجرين




جدول العقود



جدول الدفعات



المطلوب بالضبط هو 
اذا بحثت عن جميع العقود الفعاله الي موجوده بجدول الدفع التي لم تدفع بشهر 9 لن اعثر على شيء لان الجميع دافع
اما اذا بحثت عن جميع العقود الفعاله الي موجوده بجدول الدفع التي لم تدفع بشهر 10 سوف اعثر على ان العقد رقم 1 لم يدفع
الرد }}}
تم الشكر بواسطة:
#10
السلام عليكم

عندي محاوله بسيطه

نعمل  جدول لجميع العقود  سنوي او شهري او كاش وجدول آخر لتاريخ الدفع القادم

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

PHP كود :
 Dim datex As DateTime Date_regsterDateTimePicker.Value
        Date_afterDateTimePicker
.Value datex.AddMonths(AndTextBox.Text



واعمل لها فلتر بحسب النوع اذا كان شهري او سنوي او مدفوع سواء بتقرير او بحث او فلتره 




مجرد محاوله ....


الملفات المرفقة صورة/صور
       



بكم نرتقي ونسأل الله لنا ولكم التوفيق ،،
الرد }}}
تم الشكر بواسطة: Rabeea Qbaha


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  معرفة رصيدي للهاتف النقال المتصل بالكمبيوتر وارسال رسائل نصية منه AHMED213 0 88 22-02-24, 11:47 AM
آخر رد: AHMED213
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 1 302 21-02-24, 11:44 PM
آخر رد: AHMED213
  معرفة عدد مرات تكرار الاسم في الداتاقريدفيو صالح عبدالله 8 419 05-02-24, 04:39 PM
آخر رد: صالح عبدالله
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 7 674 12-01-24, 07:31 PM
آخر رد: Kamil
  معرفة عدد الاشهر خلال فترة زمنيةمعينة boofa2022 0 169 01-01-24, 01:18 PM
آخر رد: boofa2022
  بعد تنصيب فيجوال بيسك 2005 اللغة العربية غير معرفة bassant 0 361 05-07-23, 02:02 PM
آخر رد: bassant
  [سؤال] ماهي اشهر مواقع لبيع نظام ERP في العالم ؟ ahmed_king2023 0 359 24-05-23, 10:10 PM
آخر رد: ahmed_king2023
  [سؤال] كود معرفة العدد المطلوب للصفحات(هل هو صحيح؟ ام يحتاج تعديل؟) سعود 6 823 02-05-23, 09:21 PM
آخر رد: Taha Okla
  [VB.NET] معرفة الخطأ MOHAMMED ALZWI 1 397 06-03-23, 01:33 PM
آخر رد: boudyonline
  [VB.NET] معرفة الخطأ MOHAMMED ALZWI 1 406 20-01-23, 03:59 PM
آخر رد: Taha Okla

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


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