The server has caprover setup password "Alarcade123#" manage the # in the password well plesase
The database application on caprover is
Your app is internally available as srv-captain--mysql-db to other apps. In case of web-app, it is accessible via http://srv-captain--mysql-db from other apps
"SELECT COALESCE(SUM(p.amount), 0) as total, COUNT(*) as count
FROM payments p
WHERE p.treasury_id = ? AND p.is_voided = 0 AND DATE(p.payment_date) = CURDATE()",
[$treasuryId]
);
$pendingSettlements=$db->selectOne(
"SELECT COUNT(*) as count FROM treasury_settlements WHERE from_treasury_id = ? AND status = 'pending'",
[$treasuryId]
);
$pendingQueue=$db->selectOne(
"SELECT COUNT(*) as count FROM payment_requests WHERE status IN ('pending','processing') AND is_voided = 0 AND payment_type IN ('activity_subscription','hourly_booking','sports_registration')"
'open-session'=>['title'=>'فتح وردية','subtitle'=>'بدء وردية جديدة في الخزنة الفرعية','icon'=>'play','color'=>'#059669','category'=>'operations','order'=>1],
'collect-payment'=>['title'=>'تحصيل دفعة','subtitle'=>'تحصيل اشتراك نشاط رياضي من الطابور','icon'=>'credit-card','color'=>'#3B82F6','category'=>'operations','order'=>2],
'initiate-settlement'=>['title'=>'تسوية مع الرئيسية','subtitle'=>'تحويل كامل المحصل للخزنة الرئيسية','icon'=>'arrow-up-right','color'=>'#8B5CF6','category'=>'settlement','order'=>4],
'receive-settlement'=>['title'=>'استلام تسوية','subtitle'=>'تأكيد استلام التسوية في الخزنة الرئيسية','icon'=>'arrow-down-left','color'=>'#EC4899','category'=>'settlement','order'=>5],
'bank-deposit'=>['title'=>'إيداع في البنك','subtitle'=>'إيداع النقدية ورفع إيصال البنك','icon'=>'building-2','color'=>'#06B6D4','category'=>'deposit','order'=>6],
'confirm-deposit'=>['title'=>'تأكيد الإيداع','subtitle'=>'تأكيد مدير الحسابات وإخلاء العهدة','icon'=>'check-circle','color'=>'#059669','category'=>'deposit','order'=>7],
'custody-tracking'=>['title'=>'متابعة العهدة','subtitle'=>'فهم رصيد العهدة وسجل الحركات','icon'=>'eye','color'=>'#F97316','category'=>'custody','order'=>8],
'full-cycle'=>['title'=>'دورة التحصيلات الكاملة','subtitle'=>'من التحصيل حتى إخلاء العهدة','icon'=>'play-circle','color'=>'#6366F1','category'=>'scenarios','order'=>9],
'new-member-registration'=>['title'=>'تسجيل عضو جديد','subtitle'=>'إنشاء استمارة عضوية من الصفر','icon'=>'user-plus','color'=>'#8B5CF6','category'=>'registration','order'=>1],
'new-member-registration'=>['title'=>'تسجيل عضو جديد','subtitle'=>'إنشاء استمارة عضوية من الصفر','icon'=>'user-plus','color'=>'#8B5CF6','category'=>'registration','order'=>1],
'pay-form-fee'=>['title'=>'دفع رسوم الاستمارة','subtitle'=>'إرسال طلب دفع 505 ج.م للخزينة','icon'=>'receipt','color'=>'#059669','category'=>'registration','order'=>2],
'pay-form-fee'=>['title'=>'دفع رسوم الاستمارة','subtitle'=>'إرسال طلب دفع 505 ج.م للخزينة','icon'=>'receipt','color'=>'#059669','category'=>'registration','order'=>2],
...
@@ -264,23 +285,83 @@ class TutorialController extends Controller
...
@@ -264,23 +285,83 @@ class TutorialController extends Controller
<div><h1>إيداع بنكي</h1><p>تسجيل إيداع المبالغ في الحساب البنكي</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">الذهاب إلى إيداعات البنك</h3><divclass="tut-step-body">من القائمة الجانبية اذهب إلى <spanclass="field">الخزنة</span> > <spanclass="field">إيداعات البنك</span>. ستظهر قائمة الإيداعات السابقة.</div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">إنشاء إيداع جديد</h3><divclass="tut-step-body">اضغط <spanclass="field">إيداع جديد</span>. ستظهر نافذة إدخال بيانات الإيداع.</div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">إدخال المبلغ</h3><divclass="tut-step-body">أدخل المبلغ المراد إيداعه. يجب أن يتطابق مع رصيد العهدة الحالي أو جزء منه.<spanclass="info">النظام يعرض رصيد العهدة الحالي كمرجع. يُفضل إيداع المبلغ كاملاً لتصفير العهدة.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">اختيار البنك</h3><divclass="tut-step-body">اختر البنك المودَع إليه من القائمة المنسدلة. البنوك تُعرَّف مسبقاً في إعدادات النظام.</div></div>
<divclass="tut-step"><divclass="tut-step-num">5</div><h3class="tut-step-title">إدخال رقم إيصال البنك</h3><divclass="tut-step-body">أدخل الرقم التسلسلي لإيصال الإيداع البنكي في حقل <spanclass="field">رقم الإيصال</span>. هذا الرقم مطبوع على الإيصال الذي تحصل عليه من البنك.</div></div>
<divclass="tut-step"><divclass="tut-step-num">6</div><h3class="tut-step-title">رفع صورة الإيصال</h3><divclass="tut-step-body">اضغط <spanclass="field">رفع صورة</span> وأرفق صورة واضحة لإيصال البنك. هذه الصورة ستُستخدم للمراجعة والتأكيد من قسم المحاسبة.<spanclass="warn">تأكد أن الصورة واضحة ويظهر فيها المبلغ ورقم الإيصال والتاريخ.</span></div></div>
<div><h1>إغلاق وردية</h1><p>إنهاء الوردية الحالية ومراجعة إجمالي التحصيلات</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">الذهاب إلى لوحة التحكم</h3><divclass="tut-step-body">من لوحة الخزنة الفرعية، ستجد ملخص الوردية الحالية يعرض عدد الإيصالات وإجمالي المبالغ المحصّلة.</div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">الضغط على إغلاق الوردية</h3><divclass="tut-step-body">اضغط زر <spanclass="field">إغلاق الوردية</span>. سيطلب النظام تأكيداً قبل الإغلاق.<spanclass="warn">بعد الإغلاق لا يمكن إضافة تحصيلات جديدة على هذه الوردية. تأكد من إتمام كل العمليات المعلّقة.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">مراجعة الإجمالي</h3><divclass="tut-step-body">النظام يعرض ملخص الوردية:
<ul>
<li>إجمالي المبلغ المحصّل</li>
<li>عدد الإيصالات الصادرة</li>
<li>تفصيل حسب طريقة الدفع (نقدي / بطاقة / تحويل)</li>
<li>وقت الفتح ووقت الإغلاق</li>
</ul>
</div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">حالة الوردية بعد الإغلاق</h3><divclass="tut-step-body">الوردية تتحول إلى حالة <spanclass="field">مغلقة</span> ويمكنك الآن إنشاء تسوية لتحويل المبالغ إلى الخزنة الرئيسية.<spanclass="success">تم إغلاق الوردية بنجاح. الخطوة التالية: إنشاء تسوية لتسليم المبالغ.</span></div></div>
<div><h1>تحصيل مبلغ</h1><p>استلام دفعة من عضو أو لاعب وإصدار إيصال</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">فتح قائمة الانتظار</h3><divclass="tut-step-body">من لوحة الخزنة الفرعية، اضغط على <spanclass="field">طلبات التحصيل</span> أو <spanclass="field">قائمة الانتظار</span>. ستظهر جميع الطلبات المعلّقة التي تنتظر الدفع.</div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">اختيار الطلب المعلّق</h3><divclass="tut-step-body">اختر الطلب المطلوب تحصيله. ستظهر تفاصيل المبلغ المستحق واسم العضو ونوع الخدمة (اشتراك، تجديد، نشاط رياضي، إلخ).<spanclass="info">يمكنك البحث بالاسم أو رقم العضوية للوصول السريع للطلب.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">اختيار طريقة الدفع</h3><divclass="tut-step-body">حدد طريقة الدفع:
<ul>
<li><spanclass="field">نقدي</span> — دفع كاش مباشر</li>
<li><spanclass="field">بطاقة</span> — دفع ببطاقة ائتمان/خصم</li>
<li><spanclass="field">تحويل</span> — تحويل بنكي</li>
</ul>
<spanclass="warn">تأكد من اختيار الطريقة الصحيحة لأنها تؤثر على تقارير التسوية.</span>
</div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">تأكيد التحصيل</h3><divclass="tut-step-body">اضغط <spanclass="field">تأكيد التحصيل</span>. النظام يسجّل العملية ويربطها بالوردية الحالية.</div></div>
<divclass="tut-step"><divclass="tut-step-num">5</div><h3class="tut-step-title">طباعة الإيصال</h3><divclass="tut-step-body">يُطبع إيصال استلام تلقائياً يحتوي على رقم الإيصال والمبلغ واسم العضو وتاريخ ووقت التحصيل. سلّم نسخة للعضو.<spanclass="success">تم التحصيل بنجاح — رصيد العهدة زاد بقيمة المبلغ المحصّل.</span></div></div>
<div><h1>تأكيد إيداع</h1><p>مراجعة واعتماد الإيداع البنكي من مدير المحاسبة</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">فتح شاشة الإيداعات</h3><divclass="tut-step-body">مدير المحاسبة يذهب إلى <spanclass="field">المحاسبة</span> > <spanclass="field">إيداعات البنك</span> أو من الإشعارات الواردة بوجود إيداع معلّق.</div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">التحقق من صورة الإيصال والرقم التسلسلي</h3><divclass="tut-step-body">راجع التفاصيل:
<ul>
<li>صورة إيصال البنك — تأكد أنها واضحة وصحيحة</li>
<li>الرقم التسلسلي — طابقه مع الظاهر في الصورة</li>
<li>المبلغ — تأكد أنه يتطابق مع المسجّل في النظام</li>
<li>اسم البنك وتاريخ الإيداع</li>
</ul>
<spanclass="warn">في حالة وجود أي اختلاف أو شك، ارفض الإيداع واطلب توضيحاً من أمين الخزنة.</span>
</div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">الضغط على تأكيد</h3><divclass="tut-step-body">بعد التحقق، اضغط <spanclass="field">تأكيد</span>. النظام يقوم بـ:
<ul>
<li>تحويل حالة الإيداع إلى <spanclass="field">مؤكَّد</span></li>
<li>تصفير عهدة أمين الخزنة بقيمة المبلغ المودَع</li>
<li>ترحيل قيد محاسبي تلقائي (من حـ/ الخزنة إلى حـ/ البنك)</li>
</ul>
</div></div>
<divclass="tut-step"><divclass="tut-step-num">5</div><h3class="tut-step-title">القيد المحاسبي</h3><divclass="tut-step-body"><divclass="tut-diagram">Dr: Bank Account (XXX) ← المبلغ المودَع
Cr: Cash in Hand (XXX) ← إخلاء العهدة</div><spanclass="success">تم التأكيد — العهدة أُخليت والقيد المحاسبي تُرحّل تلقائياً.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">ما هي العهدة؟</h3><divclass="tut-step-body">العهدة هي المبلغ المالي الموجود في حوزة الموظف والذي لم يُسلَّم بعد. كل موظف خزنة له رصيد عهدة يتغير مع العمليات اليومية.<spanclass="info">العهدة ليست ملكاً للموظف — هي أموال النادي المؤتمن عليها مؤقتاً حتى تسليمها.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">أين ترى رصيد العهدة؟</h3><divclass="tut-step-body">رصيد العهدة يظهر في:
<ul>
<li><spanclass="field">لوحة الخزنة الفرعية</span> — الرصيد الحالي بشكل بارز</li>
<li><spanclass="field">لوحة الخزنة الرئيسية</span> — عهدة أمين الخزنة</li>
<li><spanclass="field">تقارير العهد</span> — تفصيل لكل موظف</li>
<li><spanclass="field">التسوية</span> — تحويل المبلغ للخزنة الرئيسية (للخزنة الفرعية)</li>
<li><spanclass="field">الإيداع البنكي المؤكَّد</span> — بعد تأكيد المحاسبة (للخزنة الرئيسية)</li>
</ul>
<divclass="tut-diagram">العهدة: 800 ج
تسوية 800 ج → العهدة: 800 - 800 = 0 ج ✓</div>
</div></div>
<divclass="tut-step"><divclass="tut-step-num">5</div><h3class="tut-step-title">ماذا يعني رصيد غير صفري نهاية اليوم؟</h3><divclass="tut-step-body"><spanclass="warn">إذا كان رصيد العهدة غير صفري في نهاية اليوم، فهذا يعني أن هناك أموالاً لم تُسلَّم بعد. يجب على الموظف إتمام التسوية أو الإيداع قبل مغادرة العمل.</span>
<ul>
<li>عهدة الخزنة الفرعية غير صفرية = لم تُنشأ تسوية</li>
<li>عهدة الخزنة الرئيسية غير صفرية = لم يُودَع في البنك أو الإيداع لم يُؤكَّد</li>
</ul>
<spanclass="success">الوضع المثالي: عهدة الجميع = صفر في نهاية كل يوم عمل.</span>
<div><h1>الدورة الكاملة</h1><p>من لحظة دفع اللاعب حتى القيد المحاسبي النهائي</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">الصورة الكاملة</h3><divclass="tut-step-body"><divclass="tut-diagram">Player pays 500 EGP
│
▼
┌─────────────────────────────┐
│ Sub-Treasury (Cashier) │ ← custody +500
│ Session: SES-2026-0547 │
│ Receipt: RCP-2026-1234 │
└─────────────────────────────┘
│ Close session + Settlement
▼
┌─────────────────────────────┐
│ Main Treasury (Treasurer) │ ← custody +500
│ Settlement: STL-2026-0198 │
└─────────────────────────────┘
│ Bank deposit
▼
┌─────────────────────────────┐
│ Bank Deposit (Pending) │
│ Deposit: DEP-2026-0087 │
│ Image + Serial attached │
└─────────────────────────────┘
│ Accounting confirms
▼
┌─────────────────────────────┐
│ Journal Entry (Auto) │
│ Dr: Bank 500 │
│ Cr: Cash 500 │
│ Custody = 0 ✓ │
└─────────────────────────────┘</div></div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">سيناريو يوم عمل كامل</h3><divclass="tut-step-body">
<div><h1>إنشاء تسوية</h1><p>تحويل المبالغ المحصّلة من الخزنة الفرعية إلى الخزنة الرئيسية</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">الذهاب إلى التسويات</h3><divclass="tut-step-body">من القائمة الجانبية اذهب إلى <spanclass="field">الخزنة</span> > <spanclass="field">التسويات</span>. ستظهر قائمة التسويات السابقة وزر إنشاء تسوية جديدة.</div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">إنشاء تسوية جديدة</h3><divclass="tut-step-body">اضغط <spanclass="field">تسوية جديدة</span>. النظام يعرض الورديات المغلقة التي لم تُسوَّ بعد.</div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">اختيار الوردية المغلقة</h3><divclass="tut-step-body">اختر الوردية المراد تسويتها. ستظهر تفاصيل المبلغ الإجمالي وعدد الإيصالات.<spanclass="info">يمكنك تسوية أكثر من وردية في نفس الوقت إذا كان لديك ورديات مغلقة متعددة.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">تأكيد تحويل 100%</h3><divclass="tut-step-body">تأكد أن المبلغ المحوّل يساوي إجمالي التحصيلات ثم اضغط <spanclass="field">تأكيد التسوية</span>.<spanclass="warn">يجب أن يتطابق المبلغ المحوّل مع إجمالي تحصيلات الوردية. لا يُسمح بتسوية جزئية.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">5</div><h3class="tut-step-title">رقم التسوية وخروج المبلغ من العهدة</h3><divclass="tut-step-body">النظام يولّد رقم تسوية (مثال: <spanclass="field">STL-2026-0198</span>) والمبلغ يخرج من عهدتك ويصبح في انتظار الاستلام من الخزنة الرئيسية.<spanclass="success">تمت التسوية — المبلغ خرج من عهدتك وينتظر استلام أمين الخزنة الرئيسية.</span></div></div>
<div><h1>فتح وردية</h1><p>بدء يوم العمل في الخزنة الفرعية وتفعيل استقبال المدفوعات</p></div>
</div>
<divclass="tut-step"><divclass="tut-step-num">1</div><h3class="tut-step-title">الدخول إلى الخزنة الفرعية</h3><divclass="tut-step-body">من القائمة الجانبية اذهب إلى <spanclass="field">الخزنة</span> > <spanclass="field">الخزنة الفرعية</span>. ستظهر لك لوحة التحكم الخاصة بالخزنة.</div></div>
<divclass="tut-step"><divclass="tut-step-num">2</div><h3class="tut-step-title">الضغط على فتح وردية</h3><divclass="tut-step-body">اضغط على زر <spanclass="field">فتح وردية</span> الموجود أعلى الصفحة. لن يظهر الزر إذا كانت هناك وردية مفتوحة بالفعل.<spanclass="warn">لا يمكن فتح أكثر من وردية واحدة في نفس الوقت لنفس الموظف.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">توليد رقم الوردية</h3><divclass="tut-step-body">النظام يولّد رقم وردية تلقائي (مثال: <spanclass="field">SES-2026-0547</span>) ويسجّل وقت الفتح واسم الموظف المسؤول.<spanclass="info">رقم الوردية يُستخدم لاحقاً في التسوية وربط كل الإيصالات بهذه الفترة.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">بدء استقبال المدفوعات</h3><divclass="tut-step-body">بعد فتح الوردية بنجاح، يمكنك الآن:
<ul>
<li>تحصيل مبالغ من الأعضاء واللاعبين</li>
<li>إصدار إيصالات استلام</li>
<li>رؤية رصيد العهدة يزداد مع كل تحصيل</li>
</ul>
<spanclass="success">الوردية مفتوحة الآن وأنت جاهز لاستقبال المدفوعات.</span>
<divclass="tut-step"><divclass="tut-step-num">3</div><h3class="tut-step-title">التحقق من المبلغ والإيصالات</h3><divclass="tut-step-body">عُد الأموال المستلمة فعلياً وطابقها مع المبلغ الظاهر في النظام. تحقق أن عدد الإيصالات الورقية يطابق العدد المسجّل.<spanclass="warn">في حالة وجود فرق بين المبلغ الفعلي والمسجّل، لا تستلم التسوية وأبلغ المسؤول فوراً.</span></div></div>
<divclass="tut-step"><divclass="tut-step-num">4</div><h3class="tut-step-title">الضغط على استلام</h3><divclass="tut-step-body">بعد التأكد من المطابقة، اضغط <spanclass="field">استلام</span>. النظام ينقل العهدة من موظف الخزنة الفرعية إلى أمين الخزنة الرئيسية.<spanclass="success">تم الاستلام — المبلغ أصبح في عهدة أمين الخزنة الرئيسية وجاهز للإيداع البنكي.</span></div></div>