ASWARCO — وحدة المبيعات والمخزون ================================= ما الذي تضيفه هذه الحزمة؟ ------------------------- 1. لوحة مبيعات يومية وأسبوعية وشهرية، مع فصل JOD عن USD. 2. تسجيل مبيعات المحل يدويًا. 3. تحويل عرض السعر المقبول إلى مبيعة بعد تأكيد المدير فقط. 4. إنقاص المخزون تلقائيًا عند البيع. 5. إعادة الكمية تلقائيًا عند إلغاء المبيعة. 6. سجل كامل لحركات المخزون. 7. تنبيه للقطع منخفضة المخزون والقطع النافدة. 8. صلاحيتان جديدتان للموظفين: إدارة المبيعات وإدارة المخزون. 9. واجهات مترجمة للعربية والإنجليزية والإسبانية والإيطالية والتركية. 10. اختبارات آلية لأخطر عمليات البيع والمخزون. مهم قبل التركيب --------------- - خذ نسخة احتياطية من المشروع وقاعدة البيانات. - نفّذ الأوامر من PowerShell وأنت داخل: C:\Users\User\Herd\aswarco - لا تنسخ بداية السطر التي تبدأ بـ PS C:\... - إذا ظهر أي خطأ: توقف ولا تنفذ الأمر التالي. خطوات التركيب ------------- 1. فك ضغط الحزمة داخل مجلد المشروع مع الموافقة على استبدال الملفات. 2. امسح ملفات التخزين المؤقت: php artisan optimize:clear 3. افحص الملفات الجديدة والمعدلة: $files = @( "app\Models\Sale.php", "app\Models\SaleItem.php", "app\Models\StockMovement.php", "app\Models\Product.php", "app\Models\QuoteRequest.php", "app\Models\User.php", "app\Services\SaleService.php", "app\Services\InventoryService.php", "app\Http\Controllers\Admin\SaleController.php", "app\Http\Controllers\Admin\InventoryController.php", "app\Http\Controllers\Admin\QuoteRequestController.php", "app\Http\Middleware\EnforceStaffPermissions.php", "database\migrations\2026_08_11_100000_create_sales_and_stock_movements_tables.php", "routes\web.php", "tests\Feature\Sales\SalesInventoryTest.php" ) foreach ($file in $files) { php -l $file } 4. يجب أن تظهر جملة No syntax errors detected لكل ملف. 5. شغّل قاعدة البيانات: php artisan migrate 6. شغّل جميع الاختبارات: php artisan test 7. افحص مسارات المبيعات والمخزون: php artisan route:list --path=admin/sales php artisan route:list --path=admin/inventory 8. افتح لوحة الإدارة ثم جرّب: http://aswarco.test/admin/sales http://aswarco.test/admin/inventory اختبار يدوي آمن --------------- 1. اختر منتجًا تجريبيًا له كمية أكبر من صفر. 2. لاحظ كميته في صفحة المخزون. 3. افتح صفحة المبيعات واضغط تسجيل مبيعة. 4. سجّل مبيعة بكمية 1. 5. تأكد أن الكمية نقصت بمقدار 1. 6. افتح المبيعة واضغط إلغاء، واكتب سببًا واضحًا. 7. تأكد أن الكمية رجعت إلى قيمتها الأصلية. 8. لا تحفظ Git قبل نجاح هذه الخطوات كلها. الحفظ بعد نجاح كل شيء --------------------- git add . git commit -m "Add sales reporting and inventory tracking" git status --short يجب ألا يظهر شيء بعد الأمر الأخير. ملاحظات مهمة ------------ - المبيعة اليدوية تخص مبيعات المحل أو البيع المباشر. - طلب الموقع لا يصبح مبيعة ولا ينقص المخزون بمجرد إنشائه؛ يجب أن يقبله العميل ثم يؤكد المدير إتمام البيع. - المبيعات الملغاة لا تدخل في إجمالي التقارير. - تقارير JOD وUSD تظهر منفصلة، ولا يجمع النظام عملتين مختلفتين في رقم واحد. - تعديل حد التنبيه لا يغير الكمية، لكنه يُسجل في سجل المخزون مع السبب. - استيراد Excel يبقى مستقلًا، ويمكن تشغيله لاحقًا بعد انتهاء الجرد.