-- ============================================
-- تحديث نظام المدفوعات - التوزيع التلقائي
-- ============================================
-- التاريخ: 6 مارس 2026
-- الهدف: جعل installment_id اختياري في جدول payments

-- ============================================
-- الخطوة 1: جعل installment_id nullable
-- ============================================

-- إذا كنت تستخدم MySQL/MariaDB:
ALTER TABLE `payments` 
MODIFY COLUMN `installment_id` BIGINT UNSIGNED NULL;

-- ============================================
-- الخطوة 2: التحقق من التعديل
-- ============================================

-- عرض بنية الجدول للتأكد
DESCRIBE `payments`;

-- يجب أن يظهر installment_id بـ NULL = YES

-- ============================================
-- الخطوة 3: إضافة Index (اختياري - لتحسين الأداء)
-- ============================================

-- إذا لم يكن موجوداً بالفعل
-- CREATE INDEX idx_payments_contract ON payments(contract_id, status);
-- CREATE INDEX idx_installments_contract_unpaid ON installments(contract_id, is_paid, due_date);

-- ============================================
-- ملاحظات:
-- ============================================
-- 1. تأكد من عمل backup للقاعدة قبل التنفيذ
-- 2. هذا التعديل آمن ولن يؤثر على البيانات الموجودة
-- 3. الأقساط المرتبطة بدفعات سابقة ستبقى كما هي
-- 4. الدفعات الجديدة يمكن أن تكون بدون installment_id

-- ============================================
-- اختبار بسيط بعد التطبيق:
-- ============================================

-- 1. التحقق من وجود دفعات حالية
SELECT COUNT(*) as total_payments, 
       COUNT(installment_id) as payments_with_installment 
FROM payments;

-- 2. اختبار إضافة دفعة بدون installment_id
-- INSERT INTO payments (customer_id, contract_id, amount, payment_date, status, created_at, updated_at)
-- VALUES (1, 1, 1000.00, NOW(), 'completed', NOW(), NOW());

-- 3. التحقق من توزيع المبلغ على الأقساط (يتم تلقائياً عبر PaymentObserver)
-- SELECT * FROM installments WHERE contract_id = 1 ORDER BY due_date;

-- ============================================
-- الرجوع للحالة السابقة (Rollback):
-- ============================================

-- إذا أردت الرجوع للحالة السابقة:
-- ALTER TABLE `payments` 
-- MODIFY COLUMN `installment_id` BIGINT UNSIGNED NOT NULL;

-- ⚠️ تحذير: هذا سيفشل إذا كانت هناك دفعات بقيمة NULL في installment_id

-- ============================================
-- انتهى
-- ============================================
