• 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
PlayerDuplicateService.php 10 KB