Create README.md
أريد إنشاء تطبيق محاسبي احترافي يعمل على الهاتف، متعدد المستخدمين، باللغة العربية، ويدعم صلاحيات مختلفة للمستخدمين، ويكون مناسبًا للعمل على Android مبدئيًا مع إمكانية دعم iPhone لاحقًا.
المطلوب بناء نظام كامل يتضمن:
- تطبيق هاتف
- قاعدة بيانات احترافية
- تسجيل دخول
- صلاحيات مستخدمين
- شاشات إدخال
- تقارير
- حسابات تلقائية
- ربط بين الجداول
- دعم إدخال 100 سطر في الصفحة الواحدة
أولًا: متطلبات عامة
- التطبيق باللغة العربية بالكامل.
- التصميم من اليمين إلى اليسار.
- يدعم أكثر من مستخدم.
- يوجد نظام تسجيل دخول باسم مستخدم وكلمة مرور.
- يوجد صلاحيات للمستخدمين:
- مدير النظام
- محاسب
- مدخل بيانات
- مستخدم عرض فقط
- يجب تسجيل اسم المستخدم الذي أضاف أو عدل السجلات.
- يجب تسجيل تاريخ ووقت الإضافة والتعديل.
- التطبيق يعمل على الهاتف.
- يجب أن تكون الواجهة سهلة وواضحة وتناسب شاشات الجوال.
ثانيًا: القوائم الرئيسية المطلوبة
النظام يجب أن يحتوي على 10 قوائم رئيسية:
- المبيعات
- المنصرفات
- المستلم
- قائمة الرعية
- قائمة المشتريين
- لوحة التحكم
- التقارير اليومية
- التقارير الشهرية
- كشف حساب الرعوي
- الإعدادات
ثالثًا: شاشة المبيعات
يجب إنشاء شاشة مبيعات تدعم إدخال 100 سطر في العملية الواحدة.
أعمدة الإدخال:
- العدد
- السعر
- المشتري
- الرعوي
- التاريخ
أعمدة محسوبة تلقائيًا:
- الجملة = العدد × السعر
- الرعوي بدون تكرار لنفس تاريخ الإدخال
- إجمالي المبلغ الذي له لنفس تاريخ الإدخال
- الدلالة = إجمالي المبلغ الذي له × .05
- يتم تقريب الدلالة إلى أقرب 100
- الباقي = إجمالي المبلغ الذي له - الدلالة
- الواصل = مجموع المنصرفات من نوع "واصل" إذا كان:
- المنصرف له = اسم الرعوي
- التاريخ في المنصرفات = تاريخ البيع
- الصافي = الباقي - الواصل
- المشتري بدون تكرار لنفس تاريخ الإدخال
- إجمالي المبلغ الذي عليه لنفس التاريخ
- الدلالة على المشتري = إجمالي المبلغ الذي عليه × .031
- يتم تقريبها إلى أقرب 100
- إجمالي الذي عليه مع الدلالة = إجمالي المبلغ الذي عليه + الدلالة على المشتري
شروط شاشة المبيعات:
- لا يسمح بحفظ صف بدون عدد
- لا يسمح بحفظ صف بدون سعر
- لا يسمح بحفظ صف بدون مشتري
- لا يسمح بحفظ صف بدون رعوي
- لا يسمح بحفظ صف بدون تاريخ
- الجملة تحسب تلقائيًا
- العدد والسعر أرقام موجبة فقط
رابعًا: شاشة المنصرفات
يجب إنشاء شاشة المنصرفات وتدعم إدخال 100 سطر في العملية الواحدة.
الأعمدة:
- المبلغ
- المنصرف له
- نوع المنصرف
- التفاصيل
- التاريخ
نوع المنصرف يكون قائمة منسدلة تحتوي على:
- واصل
- نقد
- حساب
- واصل بدون
- دين
شروط شاشة المنصرفات:
- المبلغ إجباري
- المنصرف له إجباري
- نوع المنصرف إجباري
- التاريخ إجباري
خامسًا: شاشة المستلم
يجب إنشاء شاشة المستلم بالأعمدة التالية:
- المبلغ
- المستلم منه
- التفاصيل
- تاريخ الشراء
- تاريخ الاستلام
- ملاحظة
شروط شاشة المستلم:
- المبلغ إجباري
- المستلم منه إجباري
- تاريخ الشراء إجباري
- تاريخ الاستلام إجباري
الربط:
يتم ربط المستلم مع المبيعات بواسطة:
- اسم المشتري
- تاريخ الشراء = تاريخ البيع
سادسًا: قائمة الرعية
يجب إنشاء شاشة أو تقرير باسم "قائمة الرعية".
تحتوي على:
- حقل اسم الرعوي
- حقل تاريخ بداية البحث
تعرض النتائج من تاريخ البداية إلى تاريخ اليوم
الأعمدة:
- الباقي من صفحة المبيعات
- الواصل من المنصرفات لنفس الرعوي ونفس التاريخ ونوع المنصرف = واصل
- الصافي = الباقي - الواصل
- الذي مع الرعوي = مجموع المنصرفات من الأنواع:
- واصل بدون
- حساب
- دين
- تاريخ المنصرف
- التفاصيل
صافي الحساب أعلى الصفحة:
صافي الحساب = مجموع الباقي - مجموع الواصل - مجموع الذي مع الرعوي
سابعًا: قائمة المشتريين
يجب إنشاء قائمة بالمشتريين تحتوي على الأعمدة التالية:
- المشتري
- المبلغ
- التاريخ
- المبلغ المسلم
- الباقي
مصدر البيانات:
- المشتري من قائمة المبيعات بدون تكرار
- المبلغ = إجمالي الذي عليه مع الدلالة من صفحة المبيعات
- التاريخ = تاريخ البيع
- المبلغ المسلم = مجموع المبالغ من شاشة المستلم إذا كان:
- المستلم منه = اسم المشتري
- تاريخ الشراء = تاريخ البيع
- الباقي = المبلغ - المبلغ المسلم
ثامنًا: لوحة التحكم
يجب إنشاء لوحة تحكم تعرض:
- إجمالي المبيعات اليوم
- إجمالي المنصرفات اليوم
- إجمالي المستلم اليوم
- صافي اليوم
- عدد عمليات البيع
- عدد عمليات المنصرفات
- عدد عمليات الاستلام
- عدد المستخدمين النشطين
تاسعًا: التقارير اليومية
إنشاء تقارير يومية تشمل:
- تقرير المبيعات اليومية
- تقرير المنصرفات اليومية
- تقرير المستلم اليومي
- تقرير صافي اليوم
- إمكانية الطباعة
- إمكانية التصدير إلى PDF
- إمكانية التصدير إلى Excel
عاشرًا: التقارير الشهرية
إنشاء تقارير شهرية تشمل:
- إجمالي المبيعات الشهرية
- إجمالي الدلالة
- إجمالي الباقي
- إجمالي الواصل
- إجمالي المستلم
- صافي الشهر
- مقارنة بين الأشهر
حادي عشر: كشف حساب الرعوي
إنشاء كشف حساب تفصيلي للرعوي يحتوي على:
- اسم الرعوي
- من تاريخ
- إلى تاريخ
- إجمالي المبيعات
- إجمالي الدلالة
- إجمالي الباقي
- إجمالي الواصل
- إجمالي الذي مع الرعوي
- صافي الحساب
- تفاصيل الحركات
ثاني عشر: الإعدادات
إنشاء شاشة إعدادات تحتوي على:
- إدارة المستخدمين
- تغيير كلمة المرور
- تحديد نسبة دلالة الرعوي
- تحديد نسبة دلالة المشتري
- تحديد قيمة التقريب
- تغيير اسم النشاط
- النسخ الاحتياطي
- استرجاع النسخة الاحتياطية
القيم الافتراضية:
- نسبة دلالة الرعوي = .05
- نسبة دلالة المشتري = .031
- التقريب = أقرب 100
ثالث عشر: قاعدة البيانات
أريد قاعدة بيانات احترافية قابلة للتوسع، وتعتمد على الجداول التالية:
الجداول الأساسية:
- users
- sales_batches
- sales_items
- expenses
- receipts
- settings
- activity_logs
الجداول الإضافية الاحترافية:
- buyers
- raawis
متطلبات قاعدة البيانات:
- استخدام مفاتيح أساسية Primary Keys
- استخدام Foreign Keys
- إنشاء العلاقات بين الجداول
- استخدام فهارس Indexes لتحسين الأداء
- تخزين كلمات المرور بشكل مشفر
- حفظ created_at و updated_at
- تصميم القاعدة بحيث تكون قابلة للتوسع
العلاقات:
- sales_batches ترتبط مع users
- sales_items ترتبط مع sales_batches
- sales_items ترتبط مع users
- expenses ترتبط مع users
- receipts ترتبط مع users
- activity_logs ترتبط مع users
- يفضل استخدام buyers و raawis لتوحيد الأسماء بدل الاعتماد على النصوص الحرة
رابع عشر: القواعد الحسابية الرسمية
- الجملة = العدد × السعر
- إجمالي المبلغ الذي له = مجموع الجملة لنفس الرعوي ولنفس التاريخ
- دلالة الرعوي = إجمالي المبلغ الذي له × .05
- يتم تقريب الدلالة إلى أقرب 100
- الباقي = إجمالي المبلغ الذي له - الدلالة
- الواصل = مجموع المنصرفات من نوع "واصل" لنفس الرعوي ولنفس التاريخ
- الصافي = الباقي - الواصل
- إجمالي المبلغ الذي عليه = مجموع الجملة لنفس المشتري ولنفس التاريخ
- دلالة المشتري = إجمالي المبلغ الذي عليه × .031
- يتم تقريبها إلى أقرب 100
- إجمالي الذي عليه مع الدلالة = إجمالي المبلغ الذي عليه + دلالة المشتري
- المبلغ المسلم = مجموع المستلم لنفس المشتري ولنفس تاريخ الشراء
- الباقي للمشتري = المبلغ - المبلغ المسلم
- صافي حساب الرعوي = مجموع الباقي - مجموع الواصل - مجموع الذي مع الرعوي
خامس عشر: قواعد التقريب
اعتمد التقريب الرياضي إلى أقرب 100:
- 149 تصبح 100
- 150 تصبح 200
- 251 تصبح 300
سادس عشر: متطلبات الواجهة
- واجهات عربية حديثة وواضحة
- دعم الاتجاه من اليمين إلى اليسار
- جداول سهلة الاستخدام على الهاتف
- أزرار كبيرة ومناسبة للمس
- دعم البحث والتصفية
- دعم إدخال 100 سطر بسهولة
- إظهار رسائل خطأ وتنبيه واضحة
سابع عشر: متطلبات الأمان
- تسجيل دخول آمن
- كلمات مرور مشفرة
- صلاحيات حسب نوع المستخدم
- منع الوصول غير المصرح
- تسجيل العمليات في activity_logs
- نسخ احتياطي واسترجاع
ثامن عشر: المطلوب من التنفيذ
أريد إخراج المشروع بالشكل التالي:
- تحليل النظام
- تصميم قاعدة البيانات
- SQL كامل للجداول والعلاقات
- Views أو Queries للتقارير
- API إذا لزم
- تصميم واجهات التطبيق شاشة بشاشة
- بناء التطبيق باستخدام Flutter
- backend احترافي باستخدام Laravel API + MySQL
- كود منظم وقابل للتوسع
- شرح طريقة التشغيل
تاسع عشر: ملاحظات مهمة
- المقصود بعدم التكرار هو عدم التكرار في العرض والتقرير، وليس منع الإدخال
- يجب أن يكون النظام مرنًا وقابلًا للتعديل لاحقًا
- يجب الحفاظ على الدقة المحاسبية
- يجب أن تكون جميع النتائج المحسوبة دقيقة ومحدثة عند أي تعديل أو حذف
- أريد النظام بصيغة احترافية قابلة للتسليم والتنفيذ مباشرة
أنشئ النظام بالكامل بناءً على هذه المواصفات، وابدأ أولًا بتصميم قاعدة البيانات والجداول والعلاقات، ثم انتقل إلى الواجهات والمنطق الحسابي.