Commit 3561cc77 authored by Mahmoud Aglan's avatar Mahmoud Aglan

Add custom steps to all 40 tutorials that were using generic fallback

Every tutorial now has 3-7 explicit steps with consistent format:
- Navigation step first (how to get to the page)
- Action steps in the middle (what to fill/click)
- Confirmation/result step last (with success/warning callouts)

Sections fixed: parents, medical-board, access-matrix, rules, dashboard,
family, transfers-waivers, trainer-portal, parent-portal

Also fixed forms.print-form (was 2 steps, now 3).
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent 9b170b51
...@@ -1527,7 +1527,8 @@ final class TutorialRegistry ...@@ -1527,7 +1527,8 @@ final class TutorialRegistry
], ],
'forms.print-form' => [ 'forms.print-form' => [
['title' => 'اختيار النموذج', 'body' => 'من <span class="field">النماذج</span> > اختر النموذج أو التقديم المطلوب طباعته.'], ['title' => 'اختيار النموذج', 'body' => 'من <span class="field">النماذج</span> > اختر النموذج أو التقديم المطلوب طباعته.'],
['title' => 'الطباعة', 'body' => 'اضغط <span class="field">طباعة</span>. يتم عرض النموذج بتنسيق جاهز للطباعة مع شعار النادي.'], ['title' => 'المعاينة', 'body' => 'يتم عرض النموذج بتنسيق جاهز للطباعة مع شعار النادي وبيانات العضو.'],
['title' => 'الطباعة', 'body' => 'اضغط <span class="field">طباعة</span>. النموذج يُطبع بالحجم A4 مع ترقيم تلقائي.<span class="info">يمكنك أيضاً حفظه كـ PDF من خيارات المتصفح.</span>'],
], ],
// ── PRICING MANAGEMENT ── // ── PRICING MANAGEMENT ──
'pricing-management.setup-pricing-rules' => [ 'pricing-management.setup-pricing-rules' => [
...@@ -1634,6 +1635,231 @@ final class TutorialRegistry ...@@ -1634,6 +1635,231 @@ final class TutorialRegistry
['title' => 'الخصومات التلقائية', 'body' => 'عند التسجيل من المعالج:<ul><li><span style="color:#059669;font-weight:bold;">15%</span> عند اختيار 3 أشهر مقدماً</li><li><span style="color:#7C3AED;font-weight:bold;">خصم أشقاء</span> عند وجود أخ/أخت بنفس النشاط (حسب اللعبة)</li></ul><span class="info">الخصومات تُحسب وتُعرض تلقائياً في خطوة اختيار النشاط.</span>'], ['title' => 'الخصومات التلقائية', 'body' => 'عند التسجيل من المعالج:<ul><li><span style="color:#059669;font-weight:bold;">15%</span> عند اختيار 3 أشهر مقدماً</li><li><span style="color:#7C3AED;font-weight:bold;">خصم أشقاء</span> عند وجود أخ/أخت بنفس النشاط (حسب اللعبة)</li></ul><span class="info">الخصومات تُحسب وتُعرض تلقائياً في خطوة اختيار النشاط.</span>'],
['title' => 'فترات مجانية للأعضاء', 'body' => 'الأعضاء يحصلون على فترات مجانية حسب الموسم:<ul><li>شتوي: من بداية الموسم حتى نهاية فبراير</li><li>صيفي: من يونيو حتى نهاية سبتمبر</li></ul><span class="info">هذه الفترات تظهر في قواعد الخصم فقط — التطبيق يكون من مكتب التسجيل.</span>'], ['title' => 'فترات مجانية للأعضاء', 'body' => 'الأعضاء يحصلون على فترات مجانية حسب الموسم:<ul><li>شتوي: من بداية الموسم حتى نهاية فبراير</li><li>صيفي: من يونيو حتى نهاية سبتمبر</li></ul><span class="info">هذه الفترات تظهر في قواعد الخصم فقط — التطبيق يكون من مكتب التسجيل.</span>'],
], ],
// ── PARENTS ──
'parents.add-parent' => [
['title' => 'فتح إدارة أولياء الأمور', 'body' => 'من القائمة الجانبية: <span class="field">أولياء الأمور</span> > <span class="field">إضافة ولي أمر</span>.'],
['title' => 'البيانات الشخصية', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الرقم القومي</span>، <span class="field">رقم الهاتف</span>، <span class="field">البريد الإلكتروني</span>.'],
['title' => 'إنشاء حساب الدخول', 'body' => 'فعّل <span class="field">إنشاء حساب بوابة</span>. يتم توليد اسم مستخدم وكلمة مرور تلقائياً.<span class="info">يمكن لولي الأمر تغيير كلمة المرور من البوابة لاحقاً.</span>'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الخطوة التالية: ربط اللاعبين بحساب ولي الأمر.<span class="success">بيانات الدخول تُرسل تلقائياً عبر SMS إن كان الرقم مسجلاً.</span>'],
],
'parents.link-player' => [
['title' => 'فتح ملف ولي الأمر', 'body' => 'من <span class="field">أولياء الأمور</span> > ابحث واختر ولي الأمر المطلوب.'],
['title' => 'إضافة لاعب', 'body' => 'من تبويب <span class="field">الأبناء</span> > <span class="field">ربط لاعب</span>. ابحث عن اللاعب بالاسم أو الرقم القومي.'],
['title' => 'تحديد العلاقة', 'body' => 'اختر <span class="field">صلة القرابة</span>: أب، أم، ولي أمر آخر.'],
['title' => 'التأكيد', 'body' => 'اضغط <span class="field">ربط</span>. اللاعب يظهر الآن في بوابة ولي الأمر.<span class="info">يمكن ربط أكثر من لاعب بنفس ولي الأمر.</span>'],
],
'parents.parent-portal' => [
['title' => 'دخول البوابة', 'body' => 'ولي الأمر يدخل عبر رابط البوابة المخصص باسم المستخدم وكلمة المرور.'],
['title' => 'لوحة التحكم', 'body' => 'يرى ولي الأمر: أسماء الأبناء المسجلين، حالة كل ابن (نشط/منتهي)، آخر حضور، والمستحقات المالية.'],
['title' => 'الإجراءات المتاحة', 'body' => 'يمكن لولي الأمر:<ul><li>عرض جدول التدريب</li><li>متابعة الحضور والغياب</li><li>عرض المدفوعات والإيصالات</li><li>التواصل مع الإدارة</li></ul><span class="info">البوابة للقراءة فقط — لا يمكن لولي الأمر تعديل البيانات.</span>'],
],
'parents.payment-history' => [
['title' => 'فتح سجل المدفوعات', 'body' => 'من بوابة ولي الأمر > <span class="field">المدفوعات</span>، أو من ملف ولي الأمر في لوحة الإدارة.'],
['title' => 'عرض الإيصالات', 'body' => 'يعرض جميع المدفوعات لأبناء ولي الأمر: التاريخ، المبلغ، النوع (اشتراك/كارت/حجز)، رقم الإيصال.'],
['title' => 'التصفية والتصدير', 'body' => 'يمكن التصفية حسب <span class="field">الابن</span> أو <span class="field">الفترة</span>. اضغط <span class="field">طباعة</span> للحصول على كشف حساب.<span class="success">الإيصالات تحتوي QR للتحقق من صحتها.</span>'],
],
// ── MEDICAL BOARD ──
'medical-board.review-medical-scan' => [
['title' => 'فتح الشهادات المعلقة', 'body' => 'من <span class="field">اللجنة الطبية</span> > <span class="field">بانتظار المراجعة</span>. تظهر الشهادات المرفوعة حديثاً.'],
['title' => 'فحص الشهادة', 'body' => 'اضغط على الشهادة لعرضها. تأكد من:<ul><li>صلاحية الشهادة (تاريخ الإصدار)</li><li>اسم اللاعب مطابق</li><li>ختم المنشأة الطبية واضح</li><li>النتيجة (لائق/غير لائق)</li></ul>'],
['title' => 'اتخاذ القرار', 'body' => 'اضغط <span class="field">اعتماد</span> أو <span class="field">رفض</span> مع كتابة <span class="field">الملاحظات</span>.<span class="warn">الرفض يمنع اللاعب من التدريب حتى رفع شهادة بديلة.</span>'],
],
'medical-board.approve-player' => [
['title' => 'فتح طلبات الاعتماد', 'body' => 'من <span class="field">اللجنة الطبية</span> > <span class="field">طلبات اللياقة</span>. اللاعبون الجدد أو المجددون يظهرون هنا.'],
['title' => 'مراجعة الملف الطبي', 'body' => 'اعرض: الشهادة الطبية، الإصابات السابقة، تاريخ آخر فحص، العمر والحالة الصحية.'],
['title' => 'الموافقة', 'body' => 'اضغط <span class="field">لائق طبياً</span>. يُسمح للاعب بالتدريب فوراً.<span class="success">الموافقة صالحة لمدة سنة — بعدها يحتاج فحص جديد.</span>'],
],
'medical-board.reject-with-notes' => [
['title' => 'تحديد سبب الرفض', 'body' => 'من طلب الاعتماد > اضغط <span class="field">غير لائق</span>.'],
['title' => 'كتابة الملاحظات', 'body' => 'أدخل <span class="field">سبب الرفض</span> بالتفصيل (مثال: الشهادة منتهية، نتيجة الفحص سلبية، يحتاج فحص تخصصي).'],
['title' => 'الإجراء المطلوب', 'body' => 'حدد <span class="field">الإجراء</span>: إعادة فحص، فحص تخصصي، انتظار فترة علاج.'],
['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد الرفض</span>. يُخطر ولي الأمر واللاعب بالسبب والإجراء المطلوب.<span class="warn">اللاعب المرفوض لا يظهر في قوائم الحضور ولا يمكنه الدخول من البوابة.</span>'],
],
'medical-board.medical-history' => [
['title' => 'فتح السجل الطبي', 'body' => 'من ملف اللاعب > <span class="field">السجل الطبي</span>، أو من <span class="field">اللجنة الطبية</span> > <span class="field">السجلات</span>.'],
['title' => 'محتوى السجل', 'body' => 'يعرض بالترتيب الزمني: جميع الفحوصات، الموافقات، الرفض، الإصابات، فترات التعافي.'],
['title' => 'التصفية', 'body' => 'صفّي حسب <span class="field">النوع</span> (فحص/إصابة/موافقة) أو <span class="field">الفترة</span>.<span class="info">السجل الطبي لا يمكن تعديله أو حذفه — مرجع رسمي.</span>'],
],
// ── ACCESS MATRIX ──
'access-matrix.view-matrix' => [
['title' => 'فتح المصفوفة', 'body' => 'من القائمة الجانبية: <span class="field">مصفوفة الصلاحيات</span>. تفتح صفحة تعرض جدول كامل بجميع الأدوار والصلاحيات.'],
['title' => 'قراءة المصفوفة', 'body' => 'الأعمدة = الأدوار، الصفوف = الصلاحيات (مصنفة حسب الوحدة). علامة ✓ تعني أن الدور يملك هذه الصلاحية.'],
['title' => 'التنقل', 'body' => 'استخدم <span class="field">البحث</span> للعثور على صلاحية محددة، أو اطوِ الأقسام لتركيز العرض.<span class="info">المصفوفة تعكس الحالة الحالية لجميع الأدوار — تتحدث فوراً عند تعديل أي دور.</span>'],
],
'access-matrix.compare-roles' => [
['title' => 'اختيار الأدوار للمقارنة', 'body' => 'من صفحة المصفوفة > <span class="field">مقارنة</span>. اختر دورين أو أكثر من القائمة.'],
['title' => 'عرض الفروقات', 'body' => 'النظام يعرض جدول مقارنة يوضح:<ul><li>الصلاحيات المشتركة (أخضر)</li><li>الصلاحيات الموجودة في دور فقط (أصفر)</li><li>الصلاحيات المختلفة (أحمر)</li></ul>'],
['title' => 'الاستخدام', 'body' => 'مفيدة لمعرفة الفرق بين دور «مدير الأنشطة» و«موظف الأنشطة» مثلاً، أو لتحديد إذا كان دور مكرر.<span class="success">يمكنك الطباعة أو التصدير من هذه الصفحة.</span>'],
],
'access-matrix.export-matrix' => [
['title' => 'فتح التصدير', 'body' => 'من صفحة المصفوفة > <span class="field">تصدير</span>.'],
['title' => 'اختيار الصيغة', 'body' => 'اختر <span class="field">Excel</span> للتعديل أو <span class="field">PDF</span> للطباعة. يمكنك تحديد أدوار معينة أو تصدير الكل.'],
['title' => 'التحميل', 'body' => 'الملف يُحمّل ويحتوي المصفوفة الكاملة بنفس التنسيق المعروض.<span class="info">مفيد لتقديمه للإدارة أو لمراجعة الصلاحيات دورياً.</span>'],
],
// ── RULES & PRICING ──
'rules.pricing-rules' => [
['title' => 'فتح قواعد التسعير', 'body' => 'من <span class="field">القواعد والتسعير</span> > <span class="field">قواعد التسعير</span>.'],
['title' => 'عرض القواعد النشطة', 'body' => 'يعرض جميع القواعد: الاسم، الشرط (نوع العضوية/الفئة العمرية/المدة)، السعر الناتج، الحالة (نشط/معطل).'],
['title' => 'إضافة قاعدة', 'body' => 'اضغط <span class="field">قاعدة جديدة</span>. حدد <span class="field">الشرط</span> (مثال: عضوية عائلية + 3 أشهر) و<span class="field">السعر</span> أو <span class="field">نسبة الخصم</span>.'],
['title' => 'الأولوية', 'body' => 'رتّب القواعد حسب الأولوية — القاعدة الأولى المتحققة هي التي تُطبق.<span class="warn">تغيير الأولوية يؤثر على جميع الطلبات الجديدة.</span>'],
],
'rules.discount-rules' => [
['title' => 'فتح قواعد الخصومات', 'body' => 'من <span class="field">القواعد والتسعير</span> > <span class="field">الخصومات التلقائية</span>.'],
['title' => 'أنواع الخصومات', 'body' => 'النظام يدعم:<ul><li>خصم مبكر (التسجيل قبل تاريخ معين)</li><li>خصم أشقاء (أخ/أخت بنفس النشاط)</li><li>خصم مدة (3 أشهر مقدماً)</li><li>خصم موظفين (أبناء الموظفين)</li></ul>'],
['title' => 'إعداد قاعدة خصم', 'body' => 'لكل قاعدة حدد: <span class="field">الشرط</span>، <span class="field">النسبة أو المبلغ</span>، <span class="field">فترة السريان</span>.'],
['title' => 'التفعيل', 'body' => 'اضغط <span class="field">حفظ وتفعيل</span>. الخصم يُطبق تلقائياً عند تحقق الشرط في مكتب التسجيل.<span class="info">يمكنك تعطيل أي قاعدة مؤقتاً بدون حذفها.</span>'],
],
'rules.fee-calculation' => [
['title' => 'فهم آلية الحساب', 'body' => 'من <span class="field">القواعد والتسعير</span> > <span class="field">محاكي الرسوم</span>. هذه الصفحة تشرح كيف يحسب النظام الرسوم.'],
['title' => 'مكونات الرسوم', 'body' => 'عند التسجيل يحسب النظام:<ul><li>رسوم الاستمارة (100 ج.م غير عضو / 50 ج.م عضو)</li><li>رسوم الكارت</li><li>رسوم الاشتراك (حسب المدة والنشاط)</li><li>خصومات (إن وُجدت)</li></ul>'],
['title' => 'المحاكاة', 'body' => 'أدخل: نوع الشخص (عضو/غير عضو)، النشاط، المدة. النظام يعرض التكلفة التفصيلية.<span class="success">مفيد لشرح الأسعار للأعضاء أو لمراجعة التسعير قبل التعديل.</span>'],
],
'rules.rules-engine' => [
['title' => 'فتح محرك القواعد', 'body' => 'من <span class="field">القواعد والتسعير</span> > <span class="field">محرك القواعد</span>. يعرض جميع القواعد العامة في النظام.'],
['title' => 'أنواع القواعد', 'body' => 'النظام يدعم قواعد:<ul><li>التسعير — حساب الأسعار تلقائياً</li><li>التصعيد — مضاعفة الغرامات عند التكرار</li><li>الإشعارات — إرسال تنبيه عند حدث معين</li><li>الحجب — منع إجراء عند شرط (مثال: منع الحجز بدون سداد)</li></ul>'],
['title' => 'إنشاء قاعدة', 'body' => 'اضغط <span class="field">قاعدة جديدة</span>. حدد: الحدث المُشغّل، الشرط، الإجراء. النظام يتحقق من صحة القاعدة.'],
['title' => 'الاختبار والتفعيل', 'body' => 'اضغط <span class="field">اختبار</span> لمحاكاة القاعدة على بيانات تجريبية. ثم <span class="field">تفعيل</span>.<span class="warn">القواعد تعمل فوراً بعد التفعيل — اختبرها جيداً.</span>'],
],
// ── DASHBOARD ──
'dashboard.overview' => [
['title' => 'فتح لوحة التحكم', 'body' => 'لوحة التحكم هي أول صفحة تظهر بعد تسجيل الدخول. يمكنك العودة إليها من شعار النادي أعلى القائمة.'],
['title' => 'الأقسام الرئيسية', 'body' => 'اللوحة مقسمة إلى:<ul><li>بطاقات المؤشرات (KPI) في الأعلى</li><li>الرسوم البيانية في المنتصف</li><li>سجل النشاط الأخير</li><li>التنبيهات والإنذارات</li></ul>'],
['title' => 'التخصيص', 'body' => 'كل مستخدم يرى فقط البيانات المتعلقة بصلاحياته. مدير الأنشطة يرى إحصائيات التسجيل، والمدير المالي يرى الإيرادات.<span class="info">البيانات تُحدّث تلقائياً كل 5 دقائق.</span>'],
],
'dashboard.kpi-cards' => [
['title' => 'بطاقات المؤشرات', 'body' => 'أعلى اللوحة تظهر 4-6 بطاقات ملونة تعرض المؤشرات الرئيسية.'],
['title' => 'المؤشرات المعروضة', 'body' => 'حسب الصلاحيات:<ul><li>الأعضاء النشطين / الإجمالي</li><li>إيرادات اليوم / الشهر</li><li>المقابلات المعلقة</li><li>الأقساط المتأخرة</li><li>التسجيلات الجديدة</li><li>المخالفات المعلقة</li></ul>'],
['title' => 'التفاعل', 'body' => 'اضغط على أي بطاقة للانتقال للصفحة التفصيلية. السهم الأخضر = ارتفاع، الأحمر = انخفاض مقارنة بالفترة السابقة.<span class="success">البطاقات تعطيك صورة سريعة بدون الحاجة لفتح تقارير.</span>'],
],
'dashboard.activity-log' => [
['title' => 'موقع سجل النشاط', 'body' => 'في الجزء السفلي من لوحة التحكم يظهر <span class="field">آخر العمليات</span>.'],
['title' => 'المحتوى', 'body' => 'يعرض آخر 20 عملية في النظام: من نفّذها، ماذا فعل، متى، وعلى أي سجل. مثال: «أحمد محمد — تحصيل دفعة — العضو #1234 — منذ 5 دقائق».'],
['title' => 'الاستخدام', 'body' => 'مفيد لمراقبة سير العمل اليومي بدون الحاجة لفتح سجل المراجعة الكامل.<span class="info">اضغط على أي عملية للانتقال لتفاصيلها.</span>'],
],
'dashboard.alerts-widget' => [
['title' => 'موقع التنبيهات', 'body' => 'في لوحة التحكم تظهر بطاقة <span class="field">التنبيهات</span> بعدد الإنذارات النشطة.'],
['title' => 'ألوان التنبيهات', 'body' => '<ul><li><span style="color:#DC2626;font-weight:bold;">أحمر</span>: حرج — يتطلب إجراء فوري (مخالفة خطيرة، تجاوز ميزانية)</li><li><span style="color:#F59E0B;font-weight:bold;">أصفر</span>: تحذير — يحتاج مراجعة (قسط متأخر، عقد قارب على الانتهاء)</li><li><span style="color:#3B82F6;font-weight:bold;">أزرق</span>: معلومة — للعلم (تسجيل جديد، موظف بدأ إجازة)</li></ul>'],
['title' => 'الاستجابة', 'body' => 'اضغط على أي تنبيه للانتقال للصفحة المعنية. بعد المعالجة يختفي التنبيه تلقائياً.<span class="warn">التنبيهات الحمراء المتجاهلة أكثر من 24 ساعة تُصعّد للمدير العام.</span>'],
],
// ── FAMILY ──
'family.add-spouse' => [
['title' => 'فتح ملف العضو', 'body' => 'من <span class="field">شئون العضوية</span> > ابحث عن العضو > تبويب <span class="field">التابعين</span>.'],
['title' => 'إضافة زوج/زوجة', 'body' => 'اضغط <span class="field">إضافة تابع</span> > اختر <span class="field">زوج/زوجة</span>. أدخل: الاسم، الرقم القومي، الهاتف.'],
['title' => 'المستندات', 'body' => 'ارفع <span class="field">صورة شخصية</span> و<span class="field">قسيمة الزواج</span>. المستندات إلزامية للاعتماد.'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يُنشأ طلب دفع برسوم الزوج/الزوجة. بعد السداد يمكن إصدار كارنيه.<span class="info">رسوم الزوج/الزوجة تُحسب حسب نوع العضوية الأصلية.</span>'],
],
'family.add-child' => [
['title' => 'فتح ملف العضو', 'body' => 'من <span class="field">شئون العضوية</span> > ابحث عن العضو > تبويب <span class="field">التابعين</span>.'],
['title' => 'إضافة ابن/ابنة', 'body' => 'اضغط <span class="field">إضافة تابع</span> > اختر <span class="field">ابن/ابنة</span>. أدخل: الاسم، الرقم القومي (أو تاريخ الميلاد للأطفال).'],
['title' => 'التحقق من السن', 'body' => 'النظام يتحقق من العمر تلقائياً. الأبناء فوق سن معين يحتاجون تحويل لعضوية مستقلة.<span class="warn">سن التحويل يختلف حسب سياسة النادي (عادة 18-21 سنة).</span>'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الابن يُضاف للتابعين. يمكن إصدار كارنيه بعد سداد الرسوم.'],
],
'family.add-temporary' => [
['title' => 'فتح إضافة مؤقت', 'body' => 'من ملف العضو > <span class="field">التابعين</span> > <span class="field">إضافة تابع</span> > <span class="field">مؤقت</span>.'],
['title' => 'البيانات', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الرقم القومي</span>، <span class="field">صلة القرابة</span>. حدد <span class="field">مدة الصلاحية</span> (3 أشهر / 6 أشهر / سنة).'],
['title' => 'الرسوم', 'body' => 'يُنشأ طلب دفع برسوم العضوية المؤقتة. المبلغ يختلف حسب المدة.<span class="info">العضو المؤقت يحصل على نفس حقوق الدخول لكن بمدة محددة.</span>'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. بعد السداد يمكن إصدار كارنيه مؤقت.<span class="warn">عند انتهاء المدة يتم إلغاء الكارنيه تلقائياً.</span>'],
],
'family.children-aging' => [
['title' => 'فتح تقرير بلوغ السن', 'body' => 'من <span class="field">شئون العضوية</span> > <span class="field">تقارير</span> > <span class="field">بلوغ السن القانوني</span>.'],
['title' => 'القائمة', 'body' => 'يعرض جميع الأبناء الذين بلغوا أو سيبلغون سن التحويل خلال 6 أشهر. لكل ابن: الاسم، السن الحالي، تاريخ البلوغ، العضو الأصلي.'],
['title' => 'الإجراء', 'body' => 'عند بلوغ السن يجب:<ul><li>تحويل لعضوية مستقلة (إن رغب)</li><li>أو إزالة من التابعين</li></ul><span class="warn">الأبناء الذين تجاوزوا السن بدون تحويل يظهرون بتنبيه أحمر.</span>'],
],
'family.family-pricing' => [
['title' => 'فتح تسعير التابعين', 'body' => 'من <span class="field">القواعد والتسعير</span> > <span class="field">رسوم التابعين</span>.'],
['title' => 'هيكل الرسوم', 'body' => 'يعرض جدول الرسوم حسب نوع التابع:<ul><li>زوج/زوجة: نسبة من رسوم العضوية الأصلية</li><li>الابن الأول: سعر محدد</li><li>الابن الثاني+: خصم تصاعدي</li><li>مؤقت: رسوم ثابتة حسب المدة</li></ul>'],
['title' => 'التعديل', 'body' => 'يمكن تعديل الأسعار من هذه الصفحة. التغيير يسري على الطلبات الجديدة فقط.<span class="info">الرسوم تُطبق تلقائياً عند إضافة تابع جديد.</span>'],
],
'family.dependent-carnet' => [
['title' => 'شروط الإصدار', 'body' => 'لإصدار كارنيه تابع يجب:<ul><li>العضو الأصلي لديه كارنيه فعال</li><li>التابع لديه صورة شخصية</li><li>رسوم التابع مسددة</li></ul>'],
['title' => 'الإصدار', 'body' => 'من ملف العضو > <span class="field">التابعين</span> > اضغط <span class="field">إصدار كارنيه</span> بجانب التابع. يتم إنشاء كارنيه يحتوي صورة التابع + صورة العضو الأصلي كمرجع.'],
['title' => 'الطباعة', 'body' => 'اضغط <span class="field">طباعة</span>. الكارنيه يحمل رقم تسلسلي مستقل و QR Code.<span class="success">كل تابع له كارنيه مستقل يمكن إيقافه أو إعادة إصداره بشكل منفصل.</span>'],
],
// ── TRANSFERS & WAIVERS ──
'transfers-waivers.member-transfer' => [
['title' => 'فتح طلب تحويل', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">تحويل عضوية</span> > <span class="field">طلب جديد</span>.'],
['title' => 'بيانات التحويل', 'body' => 'حدد <span class="field">العضو المحوّل منه</span> و<span class="field">المحوّل إليه</span>. أدخل <span class="field">سبب التحويل</span>.'],
['title' => 'الرسوم والمستندات', 'body' => 'النظام يحسب رسوم التحويل تلقائياً. ارفع المستندات المطلوبة (توكيل/عقد بيع).<span class="info">رسوم التحويل تشمل: رسم إداري + فرق القيمة إن وُجد.</span>'],
['title' => 'سير الموافقات', 'body' => 'الطلب يذهب لمجلس الإدارة للموافقة. بعد الموافقة + السداد: يتم نقل رقم العضوية للشخص الجديد.<span class="warn">التحويل نهائي ولا يمكن التراجع عنه بعد التنفيذ.</span>'],
],
'transfers-waivers.waiver-request' => [
['title' => 'فتح طلب تنازل', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">تنازل</span> > <span class="field">طلب جديد</span>.'],
['title' => 'بيانات التنازل', 'body' => 'حدد <span class="field">العضو المتنازل</span> و<span class="field">المستفيد</span> (قريب من الدرجة الأولى عادة). أدخل <span class="field">السبب</span>.'],
['title' => 'المستندات', 'body' => 'ارفع: <span class="field">طلب التنازل الموقع</span>، <span class="field">إثبات القرابة</span>، أي مستندات داعمة.'],
['title' => 'الموافقة والتنفيذ', 'body' => 'الطلب يحتاج موافقة مجلس الإدارة. بعد الموافقة يتم تحويل العضوية بدون رسوم إضافية (أو برسوم مخفضة).<span class="info">التنازل عادة بين أقارب الدرجة الأولى فقط.</span>'],
],
'transfers-waivers.divorce-transfer' => [
['title' => 'تسجيل حالة طلاق', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">حالات الطلاق</span> > <span class="field">حالة جديدة</span>.'],
['title' => 'البيانات', 'body' => 'حدد <span class="field">العضو الأصلي</span> و<span class="field">الزوج/الزوجة</span>. ارفع <span class="field">وثيقة الطلاق</span> الرسمية.'],
['title' => 'قرار التحويل', 'body' => 'يجب تحديد: من يحتفظ بالعضوية؟ عادة حسب قرار مجلس الإدارة أو حسب من يملك حق العضوية أصلاً.'],
['title' => 'التنفيذ', 'body' => 'بعد الموافقة: يتم فصل الزوج/الزوجة من التابعين. إذا حصل على عضوية مستقلة — يتم إنشاء ملف جديد.<span class="warn">الأبناء يبقون مع حامل العضوية ما لم يُقرر خلاف ذلك.</span>'],
],
'transfers-waivers.death-registration' => [
['title' => 'تسجيل وفاة عضو', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">حالات الوفاة</span> > <span class="field">تسجيل وفاة</span>.'],
['title' => 'المستندات', 'body' => 'ارفع <span class="field">شهادة الوفاة</span> و<span class="field">إعلام الوراثة</span>. حدد <span class="field">الوارث المستفيد</span>.'],
['title' => 'سير العمل', 'body' => 'النظام يُجمّد العضوية فوراً. الطلب يذهب لمجلس الإدارة لتحديد: تحويل للوارث أو إنهاء.'],
['title' => 'التنفيذ', 'body' => 'بعد الموافقة: يتم تحويل العضوية للوارث المحدد (بدون رسوم تحويل عادة). يُحتفظ بسجل العضو الأصلي كأرشيف.<span class="info">الرسوم المستحقة قبل الوفاة تُلغى حسب قرار المجلس.</span>'],
],
'transfers-waivers.freeze-membership' => [
['title' => 'فتح طلب تجميد', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">تجميد عضوية</span> > <span class="field">طلب جديد</span>، أو من ملف العضو.'],
['title' => 'بيانات التجميد', 'body' => 'حدد <span class="field">العضو</span>، <span class="field">سبب التجميد</span> (سفر، مرض، ظروف خاصة)، <span class="field">مدة التجميد</span>.'],
['title' => 'الأثر', 'body' => 'أثناء التجميد:<ul><li>العضو يحتفظ برقمه</li><li>لا يُطالب باشتراكات</li><li>لا يمكنه الدخول أو استخدام المرافق</li><li>الكارنيه يتوقف مؤقتاً</li></ul>'],
['title' => 'إنهاء التجميد', 'body' => 'عند انتهاء المدة أو بطلب العضو: يتم إعادة التفعيل. قد تُحسب رسوم إعادة تفعيل حسب السياسة.<span class="warn">التجميد أكثر من سنة يحتاج موافقة مجلس الإدارة.</span>'],
],
'transfers-waivers.drop-membership' => [
['title' => 'شروط الإسقاط', 'body' => 'الإسقاط يتم عند:<ul><li>عدم سداد الاشتراك لأكثر من سنتين</li><li>مخالفة جسيمة بقرار مجلس</li><li>فقدان شرط العضوية</li></ul>'],
['title' => 'إنشاء قرار إسقاط', 'body' => 'من <span class="field">التحويلات والتنازلات</span> > <span class="field">إسقاط عضوية</span>. حدد العضو، السبب، رقم قرار المجلس.'],
['title' => 'التنفيذ', 'body' => 'يتم: إلغاء الكارنيه، إيقاف الدخول، أرشفة الملف. رقم العضوية لا يُعاد استخدامه.'],
['title' => 'ملاحظة', 'body' => 'الإسقاط نهائي. إعادة العضوية تتطلب طلب جديد بالكامل وموافقة مجلس الإدارة.<span class="warn">هذا الإجراء لا يمكن التراجع عنه من النظام.</span>'],
],
// ── TRAINER PORTAL ──
'trainer-portal.trainer-dashboard' => [
['title' => 'دخول بوابة المدرب', 'body' => 'المدرب يدخل بحسابه العادي. إذا كان مسجلاً كمدرب — تظهر له <span class="field">لوحة تحكم المدرب</span> تلقائياً.'],
['title' => 'محتوى اللوحة', 'body' => 'يرى المدرب:<ul><li>حصص اليوم (المجموعة، الوقت، المكان)</li><li>إحصائيات المجموعات (عدد اللاعبين، نسبة الحضور)</li><li>إشعارات (لاعب جديد، تغيير جدول)</li></ul>'],
['title' => 'الإجراءات السريعة', 'body' => 'من اللوحة يمكنه: <span class="field">تسجيل حضور</span> للحصة الحالية، <span class="field">عرض مجموعاتي</span>، <span class="field">جدولي</span>.<span class="info">اللوحة مصممة للعمل على الموبايل أيضاً.</span>'],
],
'trainer-portal.my-groups' => [
['title' => 'فتح المجموعات', 'body' => 'من لوحة المدرب > <span class="field">مجموعاتي</span>. تظهر جميع المجموعات المسندة للمدرب.'],
['title' => 'تفاصيل المجموعة', 'body' => 'اضغط على أي مجموعة لعرض: قائمة اللاعبين، مواعيد التدريب، نسبة الحضور، السعة المتبقية.'],
['title' => 'إدارة اللاعبين', 'body' => 'يمكن للمدرب: عرض بيانات كل لاعب، ملاحظات الأداء، تاريخ التسجيل.<span class="info">المدرب لا يمكنه إضافة أو حذف لاعبين — فقط المشاهدة وتسجيل الحضور.</span>'],
],
'trainer-portal.record-attendance' => [
['title' => 'فتح حصة اليوم', 'body' => 'من لوحة المدرب > <span class="field">تسجيل حضور</span>. تظهر الحصة الحالية أو القادمة مع قائمة اللاعبين.'],
['title' => 'تسجيل الحضور', 'body' => 'حدد بعلامة ✓ اللاعبين الحاضرين. الغائبين يبقون بدون علامة. يمكن إضافة <span class="field">سبب الغياب</span> (مرض/إذن/بدون سبب).'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ الحضور</span>. نسبة الحضور تُحدث فوراً في الإحصائيات.'],
['title' => 'التعديل', 'body' => 'يمكن تعديل الحضور خلال 24 ساعة من تسجيله. بعدها يحتاج صلاحية المدير.<span class="warn">الحضور المسجل يظهر لولي الأمر في بوابته فوراً.</span>'],
],
'trainer-portal.session-feedback' => [
['title' => 'فتح التقييم', 'body' => 'بعد انتهاء الحصة وتسجيل الحضور > اضغط <span class="field">تغذية راجعة</span>.'],
['title' => 'تقييم الحصة', 'body' => 'أدخل:<ul><li><span class="field">مستوى الأداء العام</span> (1-5)</li><li><span class="field">ملاحظات</span> عن المجموعة</li><li><span class="field">لاعبون مميزون</span> (اختياري)</li><li><span class="field">لاعبون يحتاجون متابعة</span> (اختياري)</li></ul>'],
['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. التقييم يظهر في تقارير أداء المجموعة ويُستخدم في تقييم المدرب نفسه.<span class="success">التقييمات المتراكمة تساعد في متابعة تطور المجموعة.</span>'],
],
'trainer-portal.my-schedule' => [
['title' => 'فتح الجدول', 'body' => 'من لوحة المدرب > <span class="field">جدولي الأسبوعي</span>.'],
['title' => 'العرض', 'body' => 'يعرض تقويم أسبوعي بكل الحصص: اليوم، الوقت، المجموعة، المكان. الحصص الحالية مميزة بلون.'],
['title' => 'التنقل', 'body' => 'تنقل بين الأسابيع بالأسهم. يمكنك عرض الشهر الكامل.<span class="info">الجدول يُحدث تلقائياً عند أي تغيير من الإدارة — المدرب لا يمكنه تعديل جدوله بنفسه.</span>'],
],
// ── PARENT PORTAL ──
'parent-portal.parent-login' => [
['title' => 'رابط البوابة', 'body' => 'ولي الأمر يدخل عبر الرابط المخصص لبوابة أولياء الأمور (يُرسل له عند إنشاء الحساب).'],
['title' => 'تسجيل الدخول', 'body' => 'أدخل <span class="field">اسم المستخدم</span> و<span class="field">كلمة المرور</span>. عند أول دخول يُطلب تغيير كلمة المرور.'],
['title' => 'بعد الدخول', 'body' => 'تظهر لوحة تحكم مبسطة تعرض: أسماء الأبناء المسجلين وحالة كل واحد.<span class="info">إذا نسي كلمة المرور — يمكنه طلب إعادة تعيين عبر البريد أو التواصل مع الإدارة.</span>'],
],
'parent-portal.view-children' => [
['title' => 'قائمة الأبناء', 'body' => 'من لوحة بوابة ولي الأمر تظهر بطاقات لكل ابن: الاسم، النشاط، المجموعة، المدرب.'],
['title' => 'تفاصيل الابن', 'body' => 'اضغط على بطاقة الابن لعرض:<ul><li>جدول التدريب الأسبوعي</li><li>نسبة الحضور الشهرية</li><li>تقييمات المدرب</li><li>الاشتراك وتاريخ الانتهاء</li></ul>'],
['title' => 'التقييمات', 'body' => 'يرى ولي الأمر تقييمات المدرب (إن أذن المدير) وملاحظات الأداء.<span class="info">هذه الصفحة للمشاهدة فقط — لا يمكن تعديل أي بيانات.</span>'],
],
'parent-portal.attendance-report' => [
['title' => 'فتح تقرير الحضور', 'body' => 'من بوابة ولي الأمر > اختر الابن > <span class="field">الحضور</span>.'],
['title' => 'العرض الشهري', 'body' => 'يعرض تقويم شهري بأيام الحضور (أخضر) والغياب (أحمر). مع نسبة الحضور الإجمالية.'],
['title' => 'التفصيل', 'body' => 'اضغط على أي يوم لعرض: وقت الحصة، اسم المدرب، هل حضر أم لا، سبب الغياب (إن وُجد).<span class="success">ولي الأمر يمكنه طباعة التقرير الشهري.</span>'],
],
'parent-portal.payment-history' => [
['title' => 'فتح المدفوعات', 'body' => 'من بوابة ولي الأمر > <span class="field">المدفوعات</span>.'],
['title' => 'القائمة', 'body' => 'يعرض جميع المدفوعات: التاريخ، الابن، النوع (اشتراك/كارت/تجديد)، المبلغ، رقم الإيصال.'],
['title' => 'المستحقات', 'body' => 'يعرض أيضاً أي مبالغ مستحقة لم تُسدد بعد مع تاريخ الاستحقاق.<span class="info">يمكن لولي الأمر تحميل نسخة من أي إيصال بصيغة PDF.</span>'],
],
]; ];
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment