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

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

اريد آلية للتسديد و معرفة من لم يسدد من المشتركين 

ارجو ان تكون فكرتي قد وضحت
الرد
تم الشكر بواسطة: zinom
#2
السلام عليكم أخي العزيز ورحمة الله وبركاته
بناء على ما طرحتم من فكرة في المشاركة أعلاه، أرى أن الفكرة تقسم إلى جدولين واستعلام يضم الجدولان:
الجدول الأول بعنوان Customers ويضم الحقول التالية :
- CustomerId
- CustomerName
- RegistryDate
- Address
- Phone

والجدول الثاني بعنوان Payments ويضم الحقول التالية :
- CustomerId
- PaymentId
- EntryDate
- Amount
- Status

والإستعلام بعنوان CustomersStatement ويضم الحقول التالية من الجدولين :
- Customers.CustomerId
- Customers.CustomerName
- Payments.EntryDate
- Payments.Amount
- Payments.Status
إضافة إلى وضع حقل الشرط Status وقيمة الشرط لم يسدد

مع الإشارة إلى أن هناك علاقة من نوع (سجل إلى مجموعة سجلات) بين الجدول الأول الزبائن والجدول الثاني المدفوعات، لأن كل زبون له دفعة أو أكثر من دفعة.
الرد
#3
(02-01-18, 07:03 AM)karimx كتب : السلام عليكم أخي العزيز ورحمة الله وبركاته
بناء على ما طرحتم من فكرة في المشاركة أعلاه، أرى أن الفكرة تقسم إلى جدولين واستعلام يضم الجدولان:
الجدول الأول بعنوان Customers ويضم الحقول التالية :
- CustomerId
- CustomerName
- RegistryDate
- Address
- Phone

والجدول الثاني بعنوان Payments ويضم الحقول التالية :
- CustomerId
- PaymentId
- EntryDate
- Amount
- Status

والإستعلام بعنوان CustomersStatement ويضم الحقول التالية من الجدولين :
- Customers.CustomerId
- Customers.CustomerName
- Payments.EntryDate
- Payments.Amount
- Payments.Status
إضافة إلى وضع حقل الشرط Status وقيمة الشرط لم يسدد

مع الإشارة إلى أن هناك علاقة من نوع (سجل إلى مجموعة سجلات) بين الجدول الأول الزبائن والجدول الثاني المدفوعات، لأن كل زبون له دفعة أو أكثر من دفعة.





الف شكر على تعبك معايا بس عندي سؤال ازاي اقدر اعرف اللي مسددش مثلا في شهر معين لو في خلال سنة 12 شهر كنت هعمل مثلا yes, no في 12 حقل لشهور السنة لكن لما السنة تخلص و ندخل في سنة جديدة و اشتراكات جديدة ايه هيكون العمل؟؟!!

ياريت حضرتك توضح اكتر فكرتك يمكن تكون مش واضحة بالنسبة لي و ياريت لو مثال عملي في قاعدة بيانات اكسس مثلا عارف اني بتعبك بس ربنا يجعله في ميزان حسناتك
الرد
تم الشكر بواسطة:
#4
صديقي وضح اكثر لما تريد الاشتراك ؟؟
وهل الاشترك محدود ام ماذا ؟؟

مثلا اذا كان هذا الاشتراك بعقد سنه او سنتين او ماهما يكن 
فالنفرض سنه، قم بعمل ذلك كأشهر فالسنه 12 شهر 
فتقوم بعمل for loop تقوم باضافه كافه الاشهر للسنه في الجدول المخصص 
وجميع حالاتها غير مدفوع. 
فعند عمله الدفع تصبح القيمه مدفوع 
وبكل بساطه تستطيع استدعاء المدفوع والغير مدفوع.
الرد
تم الشكر بواسطة: مراد بورجي
#5
(03-01-18, 05:04 PM)Rabeea Qbaha كتب : صديقي وضح اكثر لما تريد الاشتراك ؟؟
وهل الاشترك محدود ام ماذا ؟؟

مثلا اذا كان هذا الاشتراك بعقد سنه او سنتين او ماهما يكن 
فالنفرض سنه، قم بعمل ذلك كأشهر فالسنه 12 شهر 
فتقوم بعمل for loop تقوم باضافه كافه الاشهر للسنه في الجدول المخصص 
وجميع حالاتها غير مدفوع. 
فعند عمله الدفع تصبح القيمه مدفوع 
وبكل بساطه تستطيع استدعاء المدفوع والغير مدفوع.


هو ده اللي انا عاوزه بس حاولت انفذ ده منفعش في حاجة مش صح لو تقدر مثال بسيط انا شغال على فيجوال بيسك 2010 و اكسيس 2007 الفكرة ان الاشتراك بيسدد كل شهر و كل ما سنة تخلص يبدأ في الجديدة و انا عاوز يكون في العملاء اللي سددوا و اللي لم يسددوا اقدر استدعيهم في اي وقت 
الرد
تم الشكر بواسطة:
#6
صديقي الموضوع بسيط جدا قم بعمل جدول للعقود اذا كان هناك عقد contracts :

con_id -رقم العقد
cust_id - رقم المشترك
con_duration - مده العقد ( 6 - 12- 24 ) بالشهر
price - لك الخيار بالسعر اذا اردت ضع السعر و من خلال مده العقد تستطيع تقسيم السعر على المدة لمعرفه سعر الشهري
date_start - تاريخ مختار 
date_end - التاريخ المختار + مده العقد 
note - لك الخيار
archive - وايضا لك الخيار لاضافه الارشفة 

بعد ذلك اعمل جدول للدفعات payments :

id
con_id - رقم العقد لعمل علاقه مع جدول العقود
pay_number - رقم الدفعه وهي الدفعات من مده العقد يعني لو العقد 6 شهور سيكون 6 اسطر في الجدول لنفس العقد من رقم 1 الى 6
pay_value - الدفعات المدفوعه من الزبون ( تستطيع ان تجعل الزبون يدفع لاكثر من مره نفس الشهر و من البرنامج تحدث قميه الدفعه او يكون الدفع لمره واحدة
must_paid - المبلغ الواجب دفعه لكل شهر ( ياتي من سعر العقد / مده العقد)
date - التاريخ ويكون حسب التاريخ الحالي فمثلا 08-01-2018 القميه المدخله الاولى، الدفعه الثانيه ستكون بعد شهر وستكون 08-02-2018 وهكذا
pay_status عمود نعم او لا مدفوع او غير مدفوع ( عند دفع اشتراك شهري اذهب وقارن المدفوع بالواجب دفعه اذا تساو اعمل تحديث انه مدفوع اذا لا لا يكون مدفوع
archive - أرشفه 

اضافه البيانات للعقد : 
PHP كود :
'فحص الاتصال بقاعدة البيانات
        If SQL.conn.State = ConnectionState.Open Then
            SQL.conn.Close()
        End If
        SQL.conn.Open()
        Dim cmd As New SqlCommand()
        cmd.CommandText = "insert into contracts (con_id,cust_id,shop_id,con_duration,price,con_use,rent_type,price2,note2,date_start,date_end,note,image_exist) values(@con_id,@cust_id,@con_duration,@price,@date_start,@date_end,@note)"
        cmd.Parameters.AddWithValue("@con_id", (cont_id_txt.Text))
        cmd.Parameters.AddWithValue("@cust_id", (cust_id_txt.Text))
        cmd.Parameters.AddWithValue("@shop_id", (shop_id_txt.Text))
        cmd.Parameters.AddWithValue("@con_duration", (Duration_txt.Text))
  cmd.Parameters.AddWithValue("@price", (price_txt.Text))
        cmd.Parameters.AddWithValue("@date_start", (date_start))
        cmd.Parameters.AddWithValue("@date_end", (date_end))
        cmd.Parameters.AddWithValue("@note", (note_txt.Text))
        cmd.Connection = SQL.conn
        cmd.ExecuteNonQuery()
        SQL.conn.Close()

 أدخال البيانات للدفع الشهري'
 Dim currentDate Datepicker1.Value
            
For 1 To Duration_txt.Text
                datee 
currentDate.AddMonths(+1)
                insertt()
            Next 

اما بالنسبه لطريقه for loop للادخال كالاتي :

PHP كود :
Dim i As Integer
    Dim datee 
As Date
    Private Sub insertt
()
 
       Try
            Dim must_paid 
As Decimal = (Val(price_txt.Text) + Val(add_price_txt.Text)) / Val(Duration_txt.Text)
 
           'فحص الاتصال بقاعدة البيانات
            If SQL.conn.State = ConnectionState.Open Then
                SQL.conn.Close()
            End If
            SQL.conn.Open()
            Dim cmd As New SqlCommand()
            cmd.CommandText = "insert into payments (con_id,pay_number,must_paid,date) values(@con_id,@pay_number,@must_paid,@date)"
            cmd.Parameters.AddWithValue("@con_id", ((cont_id_txt.Text) ))
            cmd.Parameters.AddWithValue("@pay_number", (i))
            cmd.Parameters.AddWithValue("@must_paid", (must_paid))
            cmd.Parameters.AddWithValue("@date", (datee))

            cmd.Connection = SQL.conn
            cmd.ExecuteNonQuery()
            SQL.conn.Close()

        Catch ex As SqlException
            MsgBox(ex.Message, MsgBoxStyle.Critical, "SQL Error")
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "General Error")
        End Try
    End Sub 
الرد
#7
شكرا اخي Rabeea Qbaha لتعبك و مجهودك الكبير هذا
جاري التجربة
للتوضيح اكثر هو برنامج لتسديد اشتراك شهري لخدمة المفروض انها مستمرة الا اذا تم ايقاف هذه الخدمة من مشترك اما لسبب عدم الدفع او طلبه بانهائها مع امكانية تعديل سعر الاشتراك الشهري يعني ممكن الاشتراك يزيد بعد فترة ، و المشكلة الاساسية عندي هي الاستعلام عن العملاء الذين لم يسددوا الشهر الحالي كل شهر حيث اني انشأت جدول للعملاء يضم كل العملاء و جدول آخر للتسديد و حيث ان جدول التسديد لا يحفظ الا تسديد كل شهر فلا يصلح كي اعمل عليه استعلام للعملاء الذين لم يسددوا .... و المطلوب هو تقرير للعملاء الذين لم يسددوا أول كل شهر
الرد
تم الشكر بواسطة:
#8
لم اصل لحل بعد
الرد
تم الشكر بواسطة:



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


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