اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

فكرة برنامج لإصدار فواتير الماء


ابن مسقط

الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

أقوم حالياً بتصميم برنامج لإصدار فواتير الماء لغرض تسليمها للمستهلكين لإشعارهم عن إستهلاكهم بصورة شهرية ، كما هو الحاصل لدى شركات توزيع المياه

والقاعدة مكونة من الجداول الأتية :-

أولاً: جدول بيانات المستفيدين

رمز المستفيد (حقل ترقيم تلقائي) ، اسم المستفيد (حقل نص) ، رمز المدينة (حقل نص) ، رقم العداد (حقل رقمي)

ثانياً: جدول المدن

رمز المدينة (حقل ترقيم تلقائي) ، اسم المدينة (حقل نص)

ثالثاً: جدول القراءات أو الفواتير

رقم الفاتورة (حقل ترقيم تلقائي) ، رمز المستفيد (حقل رقمي) ، قراءة العداد السابقة (حقل رقمي) ، قراءة العداد الحالية (حقل رقمي) ، تاريخ أخذ القراءة (حقل تاريخ) ، رسوم أخرى (حقل رقمي) ، المبلغ المستلم (حقل رقمي)

Customer

مشكلتي أشرحها في الأسطر التالية :

فلنفرض أن أحد المستفدين جاءت قراءة عداده على النحو الأتي :

يناير = 1000 وحدة

فبراير = 1520 وحدة

مارس = 2460 وحدة

أبريل = 6200 وحدة

مع العلم أن سعر الوحدة = 0.0010 بيسه

حيث أن معادلةالإستهلاك = (القراءة الحالية – القراءة السابقة) x 0.0010 بيسه

إذاً حساب إستهلاكه سيكون كتالي :

يناير = 0 – 1000 = 1000 x 0.0010 = 1 ريال واحد

فبراير -= 1520 – 1000 = 520 x 0.0010 = 0.52 بيسه

مارس = 2460 – 1520 = 940 x 0.0010 = 0.94 بيسه (لم يدفع هذه الفاتورة)

أبريل = 6200 – 2460 = 3740 x 0.0010 = 3.74 ريالات

المطلوب :

أفرض أن المشترك لم يدفع فاتورة شهر مارس

لذا أود أن يأتي إستعلام فاتورة شهر إبريل بأنه توجد عليه مستحقات سابقة وقدرها (0.94 بيسه) لم يدفعها ، وهكذا يكون الحال مع أي فاتورة لأي شهر

بمعنى أخر أرغب أن أطبع شهرياً لكل مستفيد فاتورة ، مثل فاتورة شهر إبريل الموضحة في الأتي :

اسم المستفيد

المدينة

رقم العداد

القراءة السابقة = 2460 وحدة

تاريخ أخذ القراءة السابقة

القراءة الحالية = 6200 وحدة

مستحقات الشهر الحالي = 3.74 ريالات

مستحقات سابقة = 0.94 بيسة

رسوم أخرى = 0 ريال

إجمالي المستحقات المطلوبة = 16.68 ريالات

فهل يمكن ذلك أطال الله في عمركم كما يحصل في الفواتير التي تصدرها شركات المياه إلى المستهلكين ، وماهي الطريقة ؟

هل تصميم الجداول مناسب ؟

يمكن إنزال الملف من هنا

والله يوفق الجميع

  • Thanks 1
رابط هذا التعليق
شارك

أخي ابن مسقط

في استعلام تقرير الفاتورة لديك أوجد

( >[التاريخ الحالي]) والقيمة المستلمة ( صفر) في صف لوحدها في الاستعلام.

(= تاريخ الشهر الحالي) في صف أخر

هذه الإجابة على عجل أرجو أن تنجح، ولم أجربها على مثالك بعد، وسوف أفعل إن شاء الله.

محبك

رابط هذا التعليق
شارك

أخي الكريم/ القحم

أشكرك على تفضلك بمشاركتي في حل المشكله ، ولكن هل لك بالمزيد من التوضيح ؟

أخي الأستاذ/ أمير عاطف

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

أما بخصوص الملف فقد عاودت تنشيطه في الرابط التالي :

أنقر هنــا

وأتوقع أن من سيطلع عليه سوف تتضح له الصورة بجلاء عن ما أود عمله. :)

وللجميع خالص التحية

ابن مسقط

asssq@gawab.com

assq@hotmail.com

رابط هذا التعليق
شارك

قد يوجد حل أسهل

و لكن هذا أحد الحلول : أنك عند فتح التقرير ( الفاتورة) تقوم بحساب كل ما سحيه المشترك ، و كل ما سدده ، و تطرحهم لتحصل علي الرصيد السابق

هذا مثال لما أقصد

ضع تسمية لنحسب رصيد المديونية السابق ثم نضعه فيه مع فتح التقرير

و التسمية هذه هنا اسمها PREVBAL

Private Sub Report_Open(Cancel As Integer)

Dim M As Double

If DCount("[AMOUNT]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _

" ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))") Then


M = DSum("[AMOUNT]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _

" ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))")

M = M - DSum("[PAID]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _

" ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))")

Else

M = 0

End If

M = Format(M, "#,##0.00")

Me!PREVBAL.Caption = M

End Sub

حيث فى المثال أعلاه

BID هو رقم الفاتورة

و FIDfrom هو كود العميل

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

و في البداية تم اختبار هل هناك فواتير سابقة علي رقم هذه الفاتورة لهذا العميل ام لا ، فاذا لم يكن يكون الرصيد السابق = صفر

رابط هذا التعليق
شارك

أخي المهندس/ محمد طاهر

لقد طبقت الكود أعلاه في التقرير عندي وفي كل مره يظهر لي في مربع تسمية "رصيد المديونيه" قيمتها صفر في كل الظروف ، ولا أدري أين الخطاء بالضبط

للعلم هذا الكود الذي أستخدمته :

Private Sub Report_Open(Cancel As Integer)

Dim M As Double

If DCount("[Amount_Received]", "tbl_Readings", "(([Customer_ID]=" & [Forms]![frm-AddRead]![Customer_ID] & _

" ) AND ( [BillNo] < " & Forms![frm-AddRead]![BillNo] & "))") Then


M = DSum("[Amount_Received]", "tbl_Readings", "(([Customer_ID]=" & [Forms]![frm-AddRead]![Customer_ID] & _

" ) AND ( [BillNo] < " & Forms![frm-AddRead]![BillNo] & "))")

M = M - DSum("[Amount_Received_Received]", "tbl_Readings", "(([Customer_ID]=" & [Forms]![frm-AddRead]![Customer_ID] & _

" ) AND ( [BillNo] < " & Forms![frm-AddRead]![BillNo] & "))")

Else

M = 0

End If

M = Format(M, "#,##0.00")

Me.PREVBAL.Caption = M


End Sub

رابط هذا التعليق
شارك

السلام عليكم

بعد إذن محمد أشارككم في هذا الإستعلام :

لقد نسيت أن أضيف رقم العميل في الشرط وتم التعديل :

SELECT tbl_Readings.BillNo, tbl_Readings.Customer_ID, tbl_Readings.Date, tbl_Readings.Current_Readings, DMax("Current_Readings","tbl_Readings","Customer_ID=" & [Customer_ID] & " and " & "Current_Readings<" & [Current_Readings]) AS Previous_Readings, Nz([Current_Readings])-Nz([Previous_Readings]) AS Units, [Units]*0.001 AS fees, tbl_Readings.Other_fee, tbl_Readings.Amount_Received

FROM tbl_Readings;

تحياتي .

تم تعديل بواسطه أبو هادي
رابط هذا التعليق
شارك

أخي الأستاذ/ أبو هادي

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

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

أرفق لكم الملف بعد التعديل الجديد ، وأرجوا منكم طلباً لا أمراً التفضل بالتركيز على ""نموذج شاشة سداد الفواتير"" .

الأمر يمشى بشكل ممتاز لو قام المستفيد بدفع قيمة الفاتورة كاملةً كل شهر ،،، ولكن المشكلة تتلخص في الأتي :-

أفرض أن أحد المستفيدين قام بسداد جزء من قيمة الفاتورة ، فأين سأقوم بتسجيل المبلغ الذي دفعه (رأي أن أضيف حقل باسم المبلغ المستلم في جدول tbl_Readings ) لكي أتمكن من تسجيل القيمة التي سوف يسددها المستفيد.

بعد ذلك ،،، كيف أستطيع إظهار المبالغ المستحقة السابقة على الفاتورة القادمة (أرجو إعادة النظر في الفقرة الواردة تحت عنوان مطلبي في الأعلى)

أرجوا المعذرة منكم على الإطالة ،،، ولكم الأجر عند الله.

أنقر هنا لإنزال الملف

رابط هذا التعليق
شارك

السلام عليكم

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

لا أدري مع كثرة البيانات قد تتسبب دالة الجمع DSum في بطئ البرنامج . (قد يكون هناك حلول أخرى أفضل) ، بالنسبة لي لا أحب استعمال هذه الدوال .

غيرت لك في العلاقات .

جرب المثال واخبرنا .

تحياتي .

waterbill.zip

رابط هذا التعليق
شارك

أخي العزيز / ابن مسقط ،،، السلام عليكم ورحمة الله وبركاته

أفرض أن أحد المستفيدين قام بسداد جزء من قيمة الفاتورة ، فأين سأقوم بتسجيل المبلغ الذي دفعه (رأي أن أضيف حقل باسم المبلغ المستلم في جدول tbl_Readings ) لكي أتمكن من تسجيل القيمة التي سوف يسددها المستفيد.

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

تم حذف المثال لتحديثه في الصفحة الثانية ,,,,

شاكر

تم تعديل بواسطه شاكر الزين
رابط هذا التعليق
شارك

الأستاذين/ أبو هادي وشاكر الزين

بشركما الله بالجنة :d

المثالين هما بالضبط ما أردته وكل واحد مكمل للأخر.

فالله يوفقكما في دنياكم ويجعل منزلتكم في الجنة مع الشهداء والصديقين ،،، أنه سميع مجيب الدعاء.

ولا أنسى بقية الأخوة الذين ساهموا المساعده

والله يوفق الجميع. :fff::fff:

رابط هذا التعليق
شارك

أخي العزيز / ابن مسقط ،،،، السلام عليكم ورحمة الله وبركاته

سؤال : على ماذا سوف تعتمد في الطباعة لشهر معين ؟؟؟

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

تم حذف المثال ،،، وذلك لتحديثه في الصفحة الثانية ,,,

شاكر

تم تعديل بواسطه شاكر الزين
رابط هذا التعليق
شارك

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

أخي الأستاذ/ شاكر الزين

جمائلك بدأت تغرقني ،،، ولا أعرف كيف أستطيع أن أردها لك سوى بالدعاء لك في السر والعلن.

بخصوص طباعة الفواتير ،، إعتمادي ان شاء الله سوف يكون على الشهر الذي سجلت فيه القراءة -طبعاً هذا يتطلب توحيد تاريخ أخذ القراءات لجميع المستفيدين- وإلا نتيجة الإستعلام ستكون غير صحيحه. :d

بقت لدى مشكلة ، ربما أقابلها في المستقبل ،،، وهي في حالة تعطل أحد عدادات المستفيدين.

معنى هذا سوف يتم تركيب عداد جديد للمستفيد وبالتالي بدء تسجيل القراءة من جديد

في رأي الحل: يجب أن أصمم القاعدة بحيث تقبل أن يكون للمستفيد أكثر من عداد :(

هل من رأي أخر أطال الله في أعماركم.

رابط هذا التعليق
شارك

أخي الكريم / ابن مسقط

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

المثال الذي أرفقته لك سوف يحدد لك جميع الفواتير الصادرة لشهر معين سواء كانت قرائتهم بتاريخ ( 1/1/2003 ) أو في تاريخ ( 30/1/2003 ) ،،،، واجهتني مشكلة في شهر

( 1/2/2003 ) إلى ( 28/2/2003 ) حيث أن شهر ( 2 ) لايقبل أكثر من ( 28 ) يوماً ,,,, والحمد لله تمكنت من التغلب عليها ,,,, أي عند تحديدك لشهر معين مثل : شهر ( 2 ) ،،،، سوف يسرد لك جميع الفواتير التي تم إدخالها في هذا الشهر سواءاً بتاريخ واحد أو بعدة تواريخ بشرط أن تكون جميع التواريخ في نفس الشهر ،،،،

أي لا يتطلب توحيد تاريخ أخذ القراءات ،،،، فقط تكون جميع التواريخ تتبع نفس الشهر ,,,,,

بقت لدى مشكلة ، ربما أقابلها في المستقبل ،،، وهي في حالة تعطل أحد عدادات المستفيدين.

معنى هذا سوف يتم تركيب عداد جديد للمستفيد وبالتالي بدء تسجيل القراءة من جديد

سوف أدرسها ،،،، ثم أرد عليك ،،، طبيعي سوف يكون هناك جدولاً لإستبدال العدادات للمستفيدين ،،، مقروناً بالجدول الرئيسي للمستفيدين المسجل فيه رقم العداد الخاص به .

شاكر

رابط هذا التعليق
شارك

أخي العزيز / ابن مسقط ،،،،

لقد عملت لك ما طلبت ,,,,, أنشأت لك حقل لحفظ رقم العداد في ملف القراءات ،،، حتى تعرف هذه القراءة كانت على أي العداد ,,,, أنشأت لك جدول يحتوي على جميع استبدالات العدادات للمشتركين ،،،، عملت لك (شاشة ) استبدال العدادات ،،،، بمجرد استبدال عداد لمشترك سوف يتم تحديث رقم العداد في الملف الرئيسي ,,,, ويتم تحويل آخر قراءة لهذا المشترك إلى ( صفر ) ,,,, ويبدأ الحساب من جديد مرة أخرى من الصفر ,,,,

جرب قم بعملية استبدال عداد لمشترك وليكن رقم ( 2 ) ,,, ثم إذهب إلى شاشة إدخال القراءات وقم بإدخال قراءة للمشترك ،،،

لم أنسى أن أحتفظ برقم العداد السابق للمشترك ،،، حيث أنشأت حقل للعداد السابق في جدول الاستبدالات ،، بمجرد حفظ عملية الاستبدال يقوم بحفظ العداد السابق مع العداد الجديد للمشترك ,,,,,

نسألكم الدعاء ,,,,

شاكر

waterbill_97.zip

رابط هذا التعليق
شارك

أخي الأستاذ/ شاكر الزين

والله أنك ما قصرت ،، بذلت وأجزلت العطاء .

((اللهم أته في الدنيا حسنة وفي الأخرة حسنة وقه عذاب النار))

((اللهم أغفر له وأرحمه وتب عليه إنك التواب الغفور))

رابط هذا التعليق
شارك

أخي ابن مسقط ،،،،،

شكراً لك على هذا الدعاء الصالح وأسأل الله أن يتقبل دعائك لنا ولك ولجميع المؤمنين والمؤمنات إنه سميع مجيب ,,,,,

شاكر

تم تعديل بواسطه شاكر الزين
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information