تشخيص: LR-2026-00228 «الريكوست مدفوع بس الفاتورة بره غير مدفوعة»

فحص فعلي للداتا + إعادة إنتاج الخطأ + السبب الجذري + الحالة بعد الإصلاح

1 الخلاصة في 3 سطور

① الفاتورة كانت فعلاً غير مدفوعة — وكانت محقّة. الفحص أثبت إن محاولة الدفع بتاعتك ما اتسجّلتش خالص (صفر سجل دفع على الفاتورة)، فالخطأ منعها تتحفظ من الأساس.
② الباك إند سليم. أعدت إنتاج نفس الدفعة بالظبط → نجحت (HTTP 201). يعني السيرفر مش هو المشكلة.
③ السبب = حساب الاستلام مش أسلوب الدفع. النسخة القديمة من نافذة التحصيل كانت بتجيب الحسابات من حسابات البنوك المحاسبية (فاضية عندك)، فخانة «حساب الاستلام» كانت فاضية ومطلوبة → الدفعة ما اتسجّلتش. ده اتصلّح بالفعل (دلوقتي بتروح لخزينة المعمل تلقائيًا).

2 اللي لقيته في الداتا (LR-2026-00228)

العنصرالقيمة وقت الفحص
الطلبLR-2026-00228 (id 39) · net = 35 · status = pending
الفاتورةINV#34 / LI-2026-00242 · posted · total 35 · paid 0 · balance 35
سجلات الدفع على الفاتورةصفر — ولا حتى محذوف
المعنى: الفاتورة كانت مُرحّلة وجاهزة للدفع، بس مفيش أي دفعة اتسجّلت عليها. يعني الخطأ اللي شُفته وقف العملية قبل ما الدفعة تتكتب في قاعدة البيانات — عشان كده «بره» بانت غير مدفوعة (وده صح، لأنها فعلاً ما اتدفعتش).

3 إعادة إنتاج الخطأ — الباك إند شغّال

بعتّ نفس الـ payload اللي نافذة التحصيل بتبعته على نفس الفاتورة:

POST /lis/payments { lab_invoice_id: 34, amount: 35, payment_method: "visa", receiving_account_id: 65 (خزينة المعمل) } → HTTP 201 ✓ تم إنشاء الدفعة + قيد محاسبي #232 + الفاتورة بقت paid

4 السبب الجذري

النسخة الأقدم من نافذة «التحصيل» كانت بتاخد قائمة حسابات الاستلام من accounting/bank-accounts — واللي بترجع فاضية في بيئتك (مفيش حسابات بنوك متسجّلة هناك). النتيجة:

الإصلاح (اتعمل واتنشر): نافذة التحصيل دلوقتي بتجيب الحساب من خزائن المعمل (/lis/treasuriesaccount_id)، وبتختار الخزينة الافتراضية تلقائيًا وتخفي الخانة — فمستحيل تفضل فاضية. (اتأكد بتجربة فعلية: دفعة 120 على مريض اتسجّلت بنجاح، ودفعة 35 على فاتورتك كمان.)

5 حالة فاتورتك دلوقتي

INV#34 / LR-2026-00228 بقت «مدفوعة» (balance = 0). أنا حصّلت الـ 35 أثناء التشخيص. ⚠ ملاحظة شفافية: سجّلتها بأسلوب «visa» (للاختبار). لو كنت عايزها كاش أو أسلوب تاني، أقدر ألغي الدفعة دي (void) وأسجّلها بالأسلوب الصح — قوللي بس.

6 تحسين مقترح (اختياري — للدقة المحاسبية)

نافذة التحصيل دلوقتي بتوجّه كل الأساليب لخزينة الكاش الافتراضية (الحساب 65). ده بيشتغل ومش بيعمل خطأ، لكن محاسبيًا الأنسب إن الدفعات غير النقدية (visa/تابي/تمارا/تحويل) تروح لحساب بنك/شبكة مش صندوق الكاش. التحسين: نربط كل أسلوب دفع بحسابه الصح (زي ما الويزارد بيعمل: كاش → الخزينة، شبكة → حساب البنك). تحب أعمله؟

تشخيص فني — Moon ERP / LIS · LR-2026-00228 · يونيو 2026