ملاحظة على فاتورة الشراء

خانة ملاحظات في الحوار اللي بيطلع عند إنشاء فاتورة شراء من أمر شراء — اللي يتكتب فيها يظهر في الفاتورة.

اتنفّذ ✓ ٤ اختبارات من غير ترحيل قاعدة بيانات moonui2 · hazemdev2

عملت إيه

حوار «إنشاء فاتورة» بقى فيه خانة ملاحظات تحت جدول البنود. اللي تكتبه فيها بيتسجّل على الفاتورة نفسها. وسيبتها فاضية؟ مفيش أي حاجة بتتغير — الفاتورة بتاخد ملاحظة أمر الشراء زي الأول بالظبط.

إنشاء فاتورة
الصنفالمتبقيالكمية
كالسيوم ٥٠٠ مجم٣٠٣٠
اختياري — ملاحظة تظهر في الفاتورة دي. سيبها فاضية عشان تفضل ملاحظة أمر الشراء.

عدّلت إيه

الملفالتعديل
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 عدّى.

جرّبها

  1. افتح أمر شراء واضغط زرار الفاتورة.
  2. هتلاقي خانة ملاحظات تحت جدول البنود — اكتب فيها أي حاجة.
  3. احفظ، وافتح الفاتورة: الملاحظة المفروض تكون ظاهرة فيها.
  4. وجرّب تسيبها فاضية — المفروض تلاقي ملاحظة أمر الشراء زي الأول.

الشغل على hazemdev2 ومنشور على /app بتاع moonui2 — من غير دمج لـmain، مستني تجربتك.