• DevPilot's avatar
    feat(accounting): شاشة متابعة خطابات الضمان — سجل تجديدات كامل + تنبيه 45 يوم · 46b84589
    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
..
accruals Loading commit data...
bank_accounts Loading commit data...
bank_reconciliation Loading commit data...
billing Loading commit data...
branch_fees Loading commit data...
budgets Loading commit data...
chains Loading commit data...
chart_of_accounts Loading commit data...
cost_centers Loading commit data...
daily_transactions Loading commit data...
dashboard Loading commit data...
dimensions Loading commit data...
documentary_credits Loading commit data...
fiscal_years Loading commit data...
gaps Loading commit data...
guarantees Loading commit data...
instruments Loading commit data...
journal_entries Loading commit data...
journal_types Loading commit data...
loans Loading commit data...
notes_payable Loading commit data...
notes_receivable Loading commit data...
opening_entries Loading commit data...
period_closing Loading commit data...
portfolios Loading commit data...
reclassification Loading commit data...
reports Loading commit data...
revenue_mapping Loading commit data...
settlements Loading commit data...
statements Loading commit data...
vouchers Loading commit data...