📊 تقرير حالة تذاكر المحاسبة — Re-Audit النهائي

إعادة فحص شاملة لكل تذاكر أحمد بعد إغلاقها، مع تصنيف واضح للشغّال والجزئي والمعطوب. كل التذاكر الجديدة أُنشئت ومرتبطة بالـ master ticket.

📅 2026-05-19 🌐 moon-erp.elbaset.com 📋 14 تذكرة سابقة فُحصت 🆕 3 تذاكر follow-up أُنشئت ⏱️ الجلسة الكاملة سُجِّلت

📊 النتيجة الإجمالية

9 شغّالة تماماً 64% من المجموع
⚠️ 2 جزئية 14% من المجموع
🐛 3 Deploy Issues جديدة (مش من التذاكر الأصلية)
🔄 3 تذاكر follow-up أُنشئت لأحمد للمتابعة
9 شغّالة (64%)
2 جزئية (14%)
3 deploy (22%)
الخلاصة: أحمد أنجز معظم الإصلاحات الحرجة. الـ GL لم يعد مكسوراً. النظام صار قابل للتشغيل التجاري على moon-erp بشروط محدودة. التذاكر الـ 3 follow-up تركز على نقاط مهمة لكنها أصغر من المشاكل الأصلية.

1. التذاكر الشغّالة تماماً (9 تذاكر)

هذه التذاكر اختُبرت حياً عبر API + قراءة الكود + ترك verification comment على كل تذكرة في الـ Support Platform.

#1558
ACC-FIX-1 · Check Workflow GL مكسور commit 03ea38a6 — Cash/Collect Actions تنشئ JEs صحيحة. ملاحظة: IssueCheck/BounceCheck dedicated مؤجَّل صراحةً.
FIXED ✓
#1559
ACC-FIX-2 · Vouchers stay Draft (bug 'type' vs 'entry_type') Approve + Post أصبح atomic. Voucher لا يترك JE في Draft.
FIXED ✓
#1560
ACC-FIX-3 · Petty Cash standalone JE كل معاملة petty cash تنشئ JE حالاً.
FIXED ✓
#1561
ACC-FIX-4 · Fixed Asset Sell + Acquisition sell() يدبت Cash بدلاً من Depreciation Expense. Acquisition JE موجود.
FIXED ✓
#1562
ACC-FIX-5 · ReopenFiscalYear + NULL entry_number ReopenFiscalYear ينشئ reversal entries بدلاً من mutation. entry_number = NULL مستحيل على Posted.
FIXED ✓
#1563
ACC-FIX-6 · SoD + Period Lock + Opening Balance اختبار حي: self-approve → 422 "لا يمكن لنفس المستخدم..."
unbalanced approve → 422 "القيد غير متوازن."
FIXED ✓
#1565
ACC-FIX-8 · FX rate + recon difference + depreciation idempotency اختبار حي: FX بدون rate → 422 "لا يوجد سعر صرف". Cost allocation rounding مُمتص. UNIQUE constraint على depreciation.
FIXED ✓
#1570
ACC-COMP-4 · Withholding Tax module /api/accounting/withholding-tax + /report endpoints live. JE wiring في Payment Voucher.
FIXED ✓
#1571
ACC-COMP-5 · Hijri date support كل JE response يحتوي date_hijri ("1447/12/02"). decimal precision مؤجَّل صراحةً (KWD).
FIXED ✓

✅ كل التذاكر التسعة عليها verification comment في الـ Support Platform يؤكد أنها اختُبرت ونجحت.

⚠️ 2. التذاكر الجزئية (2 تذاكر)

هذه التذاكر فيها جزء شغّال وجزء ناقص. تم إنشاء follow-up tickets جديدة للجزء الناقص.

#1564
ACC-FIX-7 · CostAllocation rounding + Double-Reverse guard Cost allocation ✅ شغّال. Double-Reverse ⚠️ يفحص فقط approved/posted reversals — drafts متعددة لا تزال ممكنة.
PARTIAL ⚠️
#1568
ACC-COMP-2 · Audit Log (Spatie ActivityLog) JournalEntry ✅ شغّال (463 سجل). 19 موديل آخر ❌ بدون LogsActivity. متطلب SOCPA لم يكتمل.
PARTIAL ⚠️

🐛 3. Deployment Issues (3 bugs)

هذه ليست bugs في الكود، بل في النشر/التسجيل. الكود البرمجي صحيح لكن لم يُفعَّل في الإنتاج.

🐛 Bug 1: accounting:integrity-check command غير مسجَّل

الموقع: AccountingServiceProvider.php — السطر 52
الواقع: الملف CheckAccountingIntegrityCommand.php موجود لكن غير مسجَّل. الـ nightly cron Ahmed وعد به لا يعمل أصلاً.

اختبار: php artisan accounting:integrity-check → "Command not defined".
الإصلاح:
$this->commands([
    ExecuteRecurringEntriesCommand::class,
    CheckAccountingIntegrityCommand::class,  // ← ADD
]);

🐛 Bug 2: EInvoicing/routes/web.php يكسر artisan route:list

الموقع: Modules/EInvoicing/routes/web.php — السطر 7
الواقع: يشير لـ EInvoicingController القديم (محذوف). الـ controllers الجديدة: EInvoiceConfigController, EInvoiceDocumentController, EInvoiceSubmissionController, ZatcaOnboardingController.

الأثر: HTTP shipping شغّال، لكن أي tooling يعتمد على route list يفشل.
الإصلاح: حذف السطر المكسور (web.php غير مستخدم — كل شيء API).

🐛 Bug 3: nature.elbaset.com لم يستقبل الـ deploy

الواقع: كل الـ endpoints الجديدة على nature.elbaset.com ترجع HTTP 404:
  • /api/accounting/zakat → 404
  • /api/accounting/withholding-tax → 404
  • /api/core/activity-log → 404
بينما نفس الـ endpoints على moon-erp.elbaset.com تعمل بنجاح (HTTP 200).
الإصلاح: تشخيص لماذا auto-update معطّل على nature، وإعادة تشغيل النشر (ربما بعد إصلاح Bug 2).

🔄 4. التذاكر الـ Follow-up الجديدة (3 تذاكر)

أُنشئت في الـ Support Platform لأحمد، مرتبطة بالـ master ticket #1557. كل تذكرة فيها شرح تفصيلي + إصلاح مقترح + معايير قبول.

#العنوانالأولويةمرتبطة بـ
#1573 ACC-FOLLOW-1 · Activity Log: extend coverage to 19 missing models
تطبيق LogsActivity على Account, FixedAsset, Voucher, FiscalYear, إلخ
urgent #1568
#1574 ACC-FOLLOW-2 · Double-Reverse: drafts متعددة لا تزال ممكنة
تشديد الفحص ليشمل drafts (مش بس approved/posted)
urgent #1564
#1575 ACC-FOLLOW-3 · Deployment issues: 3 bugs منعت إكمال التشغيل
تسجيل integrity-check command + إصلاح web.php + deploy لـ nature
urgent

🧪 5. الاختبارات الفعلية (Live HTTP API)

كل اختبار فُذِّن مرة قبل إصلاح أحمد ومرة بعده. هذه النتائج المقارنة:

السيناريوقبل الإصلاحبعد الإصلاحالحالة
JE create unbalanced201 (accepted)201 (لا يزال draft)UNCHANGED ⚠️
JE approve unbalanced422422 "القيد غير متوازن"PASS ✅
Self-approve JE200 (مسموح)422 "فصل المهام"FIXED ✅
FX entry بدون rate201 (rate=1.0 silently)422 "لا يوجد سعر صرف"FIXED ✅
Double-reverse drafts2 reversals تتنشئ2 drafts تتنشئ (لم يتغير)PARTIAL ⚠️
GET /core/activity-log404200 (463 entries)FIXED ✅
GET /accounting/zakat404200FIXED ✅
GET /accounting/withholding-tax404200FIXED ✅
JE date_hijri في responseغير موجود"1447/12/02"FIXED ✅
php artisan accounting:integrity-check"not defined"DEPLOY 🐛
nature.elbaset.com endpoints404 (not deployed)DEPLOY 🐛

🎯 6. الخلاصة والتوصية

الوضع الحالي

الـ GL لم يعد مكسوراً — الإصلاحات الأساسية (الشيكات، السندات، Petty Cash، Fixed Assets، Year-End، SoD، FX، Reconciliation، Depreciation) كلها شغّالة. النظام صار آمن للتشغيل التجاري على moon-erp.elbaset.com.
⚠️ قبل التشغيل الكامل، التذاكر الـ 3 follow-up (#1573, #1574, #1575) لازم تنفّذ:
  • Activity Log محتاج يكمل (19 موديل) للامتثال الكامل مع SOCPA
  • Double-reverse drafts محتاج تشديد
  • الـ Deploy لـ nature + تسجيل integrity command + إصلاح web.php

التوقيت المقترح

المرحلةالمدةالمهام
المرحلة الأولى (يوم 1)1 يوم#1575 — Deploy + تسجيل integrity command + إصلاح web.php
المرحلة الثانية (الأسبوع 1)3 أيام#1574 — تشديد double-reverse
المرحلة الثالثة (الأسبوع 2)1 أسبوع#1573 — توسيع Activity Log (19 موديل)

المراجع