منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : معرفة من لم يدفع في نظام الفواتير الشهرية ( مهم جدا)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم يا اخوان


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

لذلك ما أحتاجه هو الحصول على جميع المستاجرين الذين  لم يدفعو لهذا الشهر أو الشهر المحدد حسب  اختيارالمستخدم (ملاحظة: ليس على جميع العملاء  أن يدفعو في نفس التاريخ، ربما بعضهم يجب يدفع في 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,









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

اذا كنت تقصد انك تريد البحث عن كل العملاء في هذا الشهر فعليك جعل البحث يكون أكبر من أو يساوي 1/1/2017 و أصغر من او يساوي 30/12/2017.
(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)
أخي الكريم بغض النظر عن التفاصيل فعنوان الموضوع جوابه سهل جدا
إقتباس :[VB.NET] معرفة من لم يدفع في نظام الفواتير الشهرية
 لا اريد ان اقترح عليك شيئا لكن  اتعرف فكرة  عمود الذكور و الاناث؟
يعني نضع عمود من نوع (نعم/لا) باسم مثلا IsMale فان كان ذكرا فمنطقيا نجعل قيمته (نعم) و ان كانت انثى نجعل القيمة (لا).
واذا اردنا الاستعلام عن الذكور نكتب بجملة الاستعلام :

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

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

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


لكن مداخلتي مقصورة على قيمة معينة (نعم/لا)
وهذا مثال بسيط:
كود :
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




(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

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

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

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

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

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

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

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




جدول العقود



جدول الدفعات



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

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

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

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

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



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




مجرد محاوله ....
(10-09-17, 03:25 AM)hglogtd كتب : [ -> ]السلام عليكم

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

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

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

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



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




مجرد محاوله .
شكرا جزيلا صديقي على المساعده 
لقد قمت بحل المشكله 
عن طريق عمل جدول جديد 
فعند اضافع عقد اقوم بجلب المده و النفرض انها 12 شهر 
فاقوم بادخال 12 سطرجديد لقاعده البيانات 
يحتوي كل سطر على رقم الدفعه وعي 1 او 2 او ...... 12
عن طريق loop 
وفي نفس الوقت اضيف تاريخ استحقاق كل فاتوره 
و اقوم بعمل تحديث دائم للبيانات عند اذافع دفعه جديده 
وعندما يصل مجموع الدفعات الى المبلغ الواجب دفعه يتغير لخر عمود للسطر ب true دلاله على انه مدفوع
الصفحات : 1 2