حوار «إنشاء فاتورة» بقى فيه خانة ملاحظات تحت جدول البنود. اللي تكتبه فيها بيتسجّل على الفاتورة نفسها. وسيبتها فاضية؟ مفيش أي حاجة بتتغير — الفاتورة بتاخد ملاحظة أمر الشراء زي الأول بالظبط.
| الملف | التعديل |
|---|---|
PurchaseBillController.phpالخلفية |
createFromOrder بقى يقبل notes، بتحقق
(nullable · string · max:1000) لأنها نص حر بينتهي على مستند مالي.
لو المستخدم كتب حاجة، هي اللي تتكتب؛ لو لأ، ملاحظة الأمر زي ما هي. |
orders.component.htmlالواجهة |
خانة نص في الحوار، بحد أقصى ١٠٠٠ حرف. |
orders.component.tsالواجهة |
الحقل بيتبعت مع الطلب، وبيتفضّى في كل مرة يتفتح فيها الحوار — عشان ملاحظة فاتورة سابقة ما تنزلش على فاتورة تانية بالغلط. |
ar.json · en.json |
نص إرشادي للخانة بالعربي والإنجليزي. |
notes وnotes_ar
الاتنين. السبب: دي تعليق واحد كتبه شخص، مش ترجمة لنص تاني — وشاشة الفاتورة بتعرض
notes_ar للمستخدم العربي، فلو كتبتها في عمود واحد بس كانت هتختفي عن نص المستخدمين.
مفيش ترحيل قاعدة بيانات — العمودين notes وnotes_ar
موجودين أصلًا في جدول purchase_bills.
ملف اختبار جديد: Modules/Purchases/tests/Feature/BillFromOrderNoteTest.php
| الاختبار | النتيجة |
|---|---|
| ملاحظة مكتوبة في الحوار توصل الفاتورة (بالعربي) | نجح |
| من غير ملاحظة → ملاحظة الأمر تفضل زي ما هي | نجح |
| ملاحظة فاضية/مسافات → تتعامل كأنها مفيش، مش بتمسح ملاحظة الأمر | نجح |
| ملاحظة أطول من ١٠٠٠ حرف → ترفض ٤٢٢ ومفيش فاتورة بتتعمل | نجح |
DB::transaction(function () use (...))،
وأنا نسيت أمرّر المتغير للـclosure:
// كان use ($order, $companyId, $requestedQty) // بقى use ($order, $companyId, $requestedQty, $billNote)من غير التمرير ده كان المتغير بيطلع
null والكود بيسقط على ملاحظة أمر الشراء
في صمت — يعني كان هيبان شغّال في الاختبار السريع، والملاحظة مش بتتسجّل.
ده بالظبط سبب كتابة الاختبار قبل التسليم.
وشغّلت كمان سويت المشتريات كاملة للتأكد إن مفيش حاجة تانية اتكسرت،
وng build عدّى.
الشغل على hazemdev2 ومنشور على /app بتاع moonui2 —
من غير دمج لـmain، مستني تجربتك.