# عقد تفصيل أسعار الطلب في شاشة المندوب الرئيسية

تعرض بطاقة الطلب المتاح في شاشة المندوب الرئيسية تفصيلًا واضحًا للأسعار قبل قبول الطلب: سعر التوصيل، قيمة المنتجات، وإجمالي المبلغ المطلوب تحصيله عند الدفع النقدي.

## Endpoint المطلوب

```http
GET /api/app/driver/home
```

داخل كل عنصر في `data.orders[]` يجب توفير الحقول التالية:

| الحقل | النوع | الوصف |
| --- | --- | --- |
| `shipping_cost` | `number` | سعر التوصيل الخاص بالمندوب. |
| `subtotal` | `number` | قيمة المنتجات فقط قبل إضافة سعر التوصيل، ولا يتم حسابها في التطبيق عن طريق الطرح. |
| `total` | `number` | إجمالي المبلغ المطلوب تحصيله من العميل. |
| `payment_method` | `string` | طريقة الدفع. القيمة المعتمدة للدفع النقدي هي `cash`. |

مثال:

```json
{
  "status": "success",
  "data": {
    "orders": [
      {
        "id": 89,
        "shipping_cost": 10.0,
        "subtotal": 9.27,
        "total": 20.66,
        "payment_method": "cash"
      }
    ]
  }
}
```

يظهر المثال في التطبيق بالشكل التالي:

```text
سعر التوصيل                 10.00 ريال
قيمة المنتجات                9.27 ريال
إجمالي المطلوب تحصيله       20.66 ريال
```

## قواعد الحساب والعرض

- `subtotal` هو قيمة المنتجات كما يحسبها الباك إند، ولا يستنتجه التطبيق من `total - shipping_cost` لأن الإجمالي قد يحتوي على ضريبة أو خصم أو رسوم أخرى.
- عند `payment_method: cash` يظهر صف إجمالي المطلوب تحصيله.
- عند طرق الدفع غير النقدية لا يظهر صف التحصيل النقدي.
- للحفاظ على التوافق مع الاستجابة الحالية، إذا لم يصل `payment_method` مؤقتًا سيستمر التطبيق في إظهار الإجمالي.
- إذا لم يصل `subtotal` فلن يعرض التطبيق قيمة غير صحيحة أو قيمة صفرية وهمية؛ سيظهر الصف بمجرد إضافة الحقل في الباك إند.
- ترسل جميع القيم كأرقام دون نص العملة، ويتولى التطبيق تنسيقها إلى منزلتين عشريتين وإظهار رمز الريال.

## ما تم تنفيذه في Flutter

- ربط `subtotal` و`payment_method` بموديل طلبات الرئيسية.
- تغيير تسمية `سعر التوصيل الخاص بك` إلى `سعر التوصيل`.
- إضافة تسمية `قيمة المنتجات`.
- تغيير `إجمالي التحصيل` إلى `إجمالي المطلوب تحصيله`.
- إظهار إجمالي التحصيل حسب طريقة الدفع مع fallback متوافق مع الرد القديم.
- تغيير تسمية السعر داخل قسم استلام المتجر في تفاصيل الطلب إلى `قيمة المنتجات`.

## حالات القبول

1. الطلب النقدي يعرض الصفوف الثلاثة بالقيم القادمة من الباك إند.
2. الطلب غير النقدي لا يعرض صف إجمالي المطلوب تحصيله.
3. جميع الأسعار تظهر بمنزلتين عشريتين ورمز الريال.
4. لا يتم اشتقاق قيمة المنتجات داخل التطبيق.
5. الاستجابة القديمة التي لا تحتوي على `subtotal` أو `payment_method` لا تسبب خطأ.
