• DevPilot's avatar
    feat(sa): أداة تكرار الرقم القومي للاعبين + منع التكرار من أصله · 5b2dbb02
    DevPilot authored
    المشكلة اللي اتبلّغت: نفس اللاعب متسجّل مرتين بنفس الرقم القومي — مرة
    كعضو ومرة كغير عضو. اتأكدت من الداتا الحية: فعلاً فيه 7 أرقام قومية
    مكررة، واحد منهم متكرر 4 مرات. شاشة تسجيل اللاعبين ما كانش فيها أي فحص
    للتكرار، والـ index على العمود non-unique.
    
    المنع:
    - PlayerController::store() و ::update() بقوا يرفضوا أي رقم قومي مسجّل
      للاعب تاني، ويقولوا اسم اللاعب ورقمه عشان الموظف يفتح ملفه بدل ما
      يسجّله من جديد.
    
    التنضيف (شاشة جديدة /sa/players/duplicates):
    - بتعرض كل مجموعة مكررة وجوّاها اللاعبين، وقدّام كل نسخة عدد السجلات
      المرتبطة بيها (اشتراكات، حضور، بطاقات، مستندات...) عشان الموظف يعرف
      النسخة اللي عليها شغل فعلي.
    - بتفرّق بين «نفس الاسم» و«أسماء مختلفة» وبتحذّر: مش كل تكرار هو نفس
      الشخص — أحياناً حد كتب رقم قومي غلط لشخص تاني.
    - إجراءين: دمج (بينقل كل السجلات للنسخة المختارة ويأرشف الباقي)، أو
      تفريغ الرقم القومي لو اتضح إنهم أشخاص مختلفين.
    - الدمج كله في transaction، ومفيش حذف نهائي — النسخ المدموجة بتتأرشف
      بملاحظة توضّح اتدمجت في مين.
    
    ملاحظة مهمة في التنفيذ: في الداتابيز 45 عمود اسمه player_id، لكن كتير
    منهم بيشاور على جدول players بتاع «شؤون اللاعبين» — جدول تاني خالص.
    فالدمج بيشتغل على قايمة جداول مكتوبة بإيد ومتأكد منها، مش على اسم العمود،
    عشان ما نخربش بيانات موديول تاني.
    
    كمان: مسمّى «إيداع ورقة قبض برسم التحصيل» في قيود الأوراق التجارية اتغيّر
    لـ «تسليم ورقة قبض للبنك للتحصيل» — «برسم التحصيل» مصطلح بنكي معناه
    «عشان يتحصّل»، بس بتتقري كأن فيه رسم اتخصم.
    5b2dbb02
Name
Last commit
Last update
..
academies Loading commit data...
activities Loading commit data...
assessment Loading commit data...
assignments Loading commit data...
attendance Loading commit data...
bookings Loading commit data...
cards Loading commit data...
coaches Loading commit data...
disciplines Loading commit data...
facilities Loading commit data...
games Loading commit data...
gate Loading commit data...
groups Loading commit data...
institutions Loading commit data...
locker-rentals Loading commit data...
lockers Loading commit data...
makeup-sessions Loading commit data...
mirror Loading commit data...
players Loading commit data...
pool-grid Loading commit data...
pool-tickets Loading commit data...
pricing Loading commit data...
programs Loading commit data...
registration Loading commit data...
reports Loading commit data...
schedule Loading commit data...
service-desk Loading commit data...
subscriptions Loading commit data...
swimming Loading commit data...
training-attendance Loading commit data...
waitlist Loading commit data...
dashboard.php Loading commit data...