1. المتطلبات الوظيفية
Authentication & Roles
- تسجيل الدخول
- المستخدمون
- الأدوار
- الصلاحيات
- فصل واجهة الإدارة عن واجهة الكاشير
- تطبيق الصلاحيات داخل منطق الأعمال وليس فقط إخفاء الأزرار
Raw Materials & Inventory
- إدارة المواد الأولية
- تعريف وحدات القياس
- الحد الأدنى للمخزون
- حساب الرصيد من حركات المخزون
- تسجيل حركة شراء
- استهلاك الإنتاج
- المبيعات
- الهدر
- التلف
- التسويات
- الجرد
Products & Recipes
- إدارة المنتجات الجاهزة
- إنشاء الوصفات
- ربط المنتج بالمواد الأولية
- تحديد كميات المواد المستخدمة
- حساب تكلفة المنتج وفق آلية النظام
- الحفاظ على تكلفة الإنتاج التاريخية وعدم تغييرها بأثر رجعي عند تعديل الوصفة
Suppliers & Purchases
- إدارة الموردين
- إنشاء فاتورة شراء
- إضافة مواد الفاتورة
- تحديث المخزون
- تسجيل الدفعات
- الدفع الكامل
- الدفع الجزئي
- حساب رصيد المورد
Production
- إنشاء دفعة إنتاج
- استهلاك المواد الأولية
- إضافة المنتجات الناتجة للمخزون
- تسجيل تكلفة دفعة الإنتاج وقت تنفيذها
- تنفيذ الاستهلاك والإنتاج ضمن عملية ذرية Atomic Transaction
Sales
- إنشاء الطلب
- رقم طلب
- اسم طالب الطلب
- نوع الطلب: داخل المحل / سفري
- إضافة المنتجات والكميات
- تعديل الطلب قبل الإتمام
- إتمام الفاتورة
- حفظ أسعار البيع وقت العملية
- منع حذف الفاتورة المكتملة
- الإلغاء والإرجاع من صلاحيات الإدارة
Cashier Sessions
- فتح جلسة
- رصيد افتتاحي
- ربط المبيعات بالجلسة
- ربط مصاريف الكاشير بالجلسة
- حساب الرصيد المتوقع
- إدخال الرصيد الفعلي
- حساب الفرق
- إضافة ملاحظة
- إغلاق الجلسة
- مراجعة الإدارة
- ترحيل الجلسة مرة واحدة فقط
- منع أي عملية مالية على جلسة مغلقة
Cashboxes
- صندوق SYP
- صندوق USD
- تسجيل جميع الحركات المالية
- حساب الرصيد من الحركات
- منع التعديل المباشر على الرصيد
Currency Exchange
- إدارة أسعار الصرف
- تسجيل تاريخ أسعار الصرف
- تنفيذ عمليات SYP ↔ USD
- حفظ سعر الصرف المستخدم وقت العملية
- عدم تعديل السعر التاريخي
- عرض ومقارنة أسعار الصرف خلال فترة زمنية
Expenses
- إنشاء المصروف
- تصنيف المصاريف
- ربط المصروف بالمستخدم
- ربط مصروف الكاشير بجلسة الكاشير
- تسجيل التاريخ والوقت
- دعم الإدارة لإضافة المصاريف مباشرة
Inventory Count
- إنشاء جرد
- كمية النظام
- الكمية الفعلية
- حساب الفرق
- إنشاء حركة تسوية
- تسجيل سبب التسوية
- منع تعديل كمية المخزون مباشرة
Printing
- حفظ الفاتورة أولًا
- إرسال أمر الطباعة
- حالة الطباعة: PRINT_PENDINGPRINT_FAILEDPRINTED
- إعادة الطباعة
- عدم فقدان الفاتورة عند فشل الطابعة
2. المتطلبات غير الوظيفية
Offline First
النظام يعمل بدون اتصال بالإنترنت في العمليات الأساسية.
Local Database
SQLite هي مصدر البيانات المحلي للنظام.
Performance
العمليات الأساسية سريعة، والاستجابة المستهدفة تقريبًا 1–2 ثانية.
Data Integrity
العمليات الحساسة تُنفَّذ باستخدام SQLite Transactions لضمان Atomicity.
Security
كلمات المرور تُخزَّن بشكل Hash وليس كنص صريح.
Authorization
التحقق من الصلاحيات داخل Business Logic.
Maintainability
فصل واضح بين UI Layer، وBusiness / Operations Layer، وData Access Layer، وSQLite.
Auditability
العمليات الحساسة قابلة للتتبع.
Future Compatibility
استخدام UUID للكيانات الرئيسية بما يسمح بالتوسع مستقبلًا، دون أن تكون المزامنة أو تعدد الأجهزة جزءًا من الإصدار الحالي.
3. Business Rules
- الفاتورة المكتملة لا تُحذف.
- الإلغاء والإرجاع للفواتير المكتملة للإدارة فقط.
- الرصيد النقدي يعتمد على الحركات المالية.
- المخزون يعتمد على حركات المخزون.
- الجرد ينتج عنه Adjustment وليس تعديلًا مباشرًا للكمية.
- أسعار الصرف التاريخية لا يتم تعديلها.
- كل عملية مالية تحفظ سعر الصرف المستخدم وقت تنفيذها عند الحاجة.
- الكاشير لا يستطيع الوصول إلى الصناديق الرئيسية.
- الكاشير لا يستطيع تنفيذ الصرافة.
- الكاشير لا يستطيع ترحيل جلسة الكاشير.
- لا يمكن تسجيل عمليات جديدة على جلسة مغلقة.
- يجب حفظ الفاتورة قبل محاولة طباعتها.
- فشل الطباعة لا يلغي الفاتورة.
- الإنتاج يستهلك المواد الأولية ويضيف المنتجات الناتجة.
- استهلاك المواد وإضافة الناتج في الإنتاج يتمان ضمن عملية Atomic.
- يُحتفظ بسجل العمليات المهمة.
- لا يتم تعديل السجلات التاريخية بطريقة تؤدي إلى تغيير النتائج المحاسبية السابقة.
4. نموذج البيانات
الكيانات الرئيسية وعلاقاتها.
Role←Permissionصلاحيات الدور
User←CashierSession←Order←OrderItem←Product
Product←Recipe←RecipeIngredient←RawMaterial←InventoryMovement
ProductionBatch←InventoryMovement
Supplier←PurchaseInvoice←PurchaseItem←RawMaterial
PurchaseInvoice←SupplierPayment
ExpenseCategory←Expense←CashierSession
Cashbox←CashTransaction←CurrencyExchange←ExchangeRate
InventoryCount←InventoryCountLine←InventoryMovement
AuditLog
User
Role
Permission
CashierSession
Order
OrderItem
Product
Recipe
RecipeIngredient
RawMaterial
InventoryMovement
ProductionBatch
Supplier
PurchaseInvoice
PurchaseItem
SupplierPayment
Expense
ExpenseCategory
Cashbox
CashTransaction
CurrencyExchange
ExchangeRate
InventoryCount
InventoryCountLine
AuditLog
5. الهيكل التقني
React Native
↓
UI Layer
↓
Business / Operations Layer
↓
Data Access Layer
↓
SQLite
| Platform | Android |
| Database | SQLite |
| Network | Not Required |
| Backend | None |
| Cloud | None |
| Printer | POS Thermal Printer via USB OTG |
6. نطاق المشروع
حدود الإصدار الحالي من النظام: