-
DevPilot authored
التجديد كان بيكتب فوق تاريخ الانتهاء القديم ويسيب renewal_date واحد، يعني تاريخ الخطاب بيضيع: مش عارف اتجدّد كام مرة ولا التواريخ السابقة كانت إيه. المطلوب اتنفّذ بالكامل: - جدول letter_of_guarantee_renewals: كل تجديد صف مستقل فيه رقم التجديد وتاريخه وتاريخ الانتهاء السابق والجديد وعمولة التجديد ومين سجّله. - الخطاب نفسه ما بيتغيّرش: نفس الرقم ونفس المورد ونفس المشروع. اللي بيتحدّث هو تاريخ الانتهاء الحالي وعدّاد التجديدات بس. - أعمدة جديدة: supplier_id (المورد/الشركة)، purpose (الغرض)، project_name (المشروع)، renewal_count، original_expiry_date. - الحالة بقت محسوبة من تاريخ الانتهاء الحالي مش متخزّنة: ساري / قريب الانتهاء / منتهي / مُجدد — فـ«قريب الانتهاء» بتتحدّث لوحدها، ولو الخطاب اتجدّد التنبيه بيتقاس على التاريخ الجديد تلقائياً. - تنبيه قبل الانتهاء بـ45 يوم: بانر في شاشة الخطابات (وكمان بانر أحمر للخطابات اللي فات ميعادها ولسه مفتوحة)، وقاعدة في محرك التنبيهات (guarantee_expiry) عشان تطلع في الإشعارات كمان. - updateStatus بقى يرفض حالة 'renewed' ويوجّه لزر التجديد، عشان محدش يغيّر تاريخ الانتهاء من غير ما يتسجّل في السجل. وباجّات كانت في نفس الشاشة: - فلاتر الحالة والنوع كانت بقيم مش موجودة في الـ ENUM أصلاً (claimed/cancelled/bid_bond/performance_bond/retention) — يعني الفلترة ما كانتش بترجّع حاجة أبداً. اتظبطت على القيم الحقيقية. - عمود البنك كان بيقرا issuing_bank والكويري بترجّع bank_name، فكان بيطلع «—» دايماً. - زر «خطاب ضمان جديد» كان بيتحكم بصلاحية accounting.instruments.manage بينما الـ route محتاج accounting.guarantee.manage. الـ migration اتطبّقت على قاعدة البيانات الحية واتسجّلت (batch 130).
46b84589
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| Controllers | ||
| Models | ||
| Services | ||
| Views | ||
| Routes.php | ||
| bootstrap.php |