تصفح الدليل

أدوات MCP

التسليمات والمستودعات

أدوات MCP للتسليمات التي تنفذ أوامر البيع، وللمستودعات ووجهات التسليم.

التسليم سجل لبضاعة تخرج من مستودع إلى وجهة. له رقم تسلسلي في مؤسستك (DEL-000001) وبنود وحالة، ويمكن أن ينفذ أمر بيع أو يرتبط بمنافسة. المستودعات والوجهات أماكن محفوظة تعيد استخدامها، وليست سجل مخزون: المنصة لا تتتبع الكميات في المستودع.

ملاحظة:أدوات هذه الصفحة تتطلب الخطة الاحترافية أو خطة المؤسسات. يقرأ التسليمات والمستودعات والوجهات كل الأدوار عدا الفني، وينشئ ويعدل ويحذف المالك والمدير فقط.

كيف يتقدم أمر البيع بالتسليمات وكيف تظهر الانحرافات عن الطلب مشروح في الطلبات والتسليمات. وأدوات أوامر البيع نفسها في أوامر البيع وأوامر الشراء.

الأداةما تفعله
warehouses_listعرض المستودعات
warehouses_getعرض مستودع
warehouses_createإضافة مستودع
warehouses_updateتعديل مستودع
warehouses_deleteحذف مستودع
destinations_listعرض الوجهات
destinations_getعرض وجهة
destinations_createإضافة وجهة
destinations_updateتعديل وجهة
destinations_deleteحذف وجهة
deliveries_listعرض التسليمات
deliveries_getعرض تسليم
deliveries_createإنشاء تسليم
deliveries_updateتعديل تسليم
deliveries_deleteحذف تسليم
deliveries_set_statusتغيير حالة التسليم

المستودعات

المستودع مكان تخرج منه التسليمات. ينسخ التسليم بيانات مستودعه لحظة إنشائه، فلا يغير تعديل المستودع لاحقا سجلات التسليمات القديمة.

warehouses_list

يعرض مستودعات مؤسستك من الأحدث إلى الأقدم. لا تظهر المستودعات المعطلة إلا إذا طلبتها بـ include_inactive.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
include_inactivebooleanلااجعله true ليشمل المستودعات المعطلة أيضا. الافتراضي أنها مخفية.
pageintegerلارقم الصفحة، ويبدأ من 1.
page_sizeintegerلاعدد النتائج في الصفحة: 20 افتراضيا، وحده الأقصى 100.

ما يعيده: صفحة من المستودعات في data مع total وpage وpage_size وtotal_pages.

warehouses_get

يجلب مستودعا واحدا بمعرفه: اسمه وعنوانه وجهة الاتصال فيه وهل هو فعال.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف المستودع، ويأتي من warehouses_list.

ما يعيده: سجل المستودع في الحقل warehouse.

warehouses_create

ينشئ مستودعا تخرج منه التسليمات. الاسم وحده مطلوب، والمستودع الجديد فعال.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
namestringنعماسم المستودع، من 1 إلى 200 حرف.
addressstringلاعنوان المستودع، حتى 500 حرف.
citystringلامدينة المستودع، حتى 100 حرف.
contact_namestringلااسم الشخص المسؤول في الموقع، حتى 200 حرف.
contact_phonestringلارقم هاتف جهة الاتصال، حتى 50 حرفا.
notesstringلاملاحظات حرة، حتى 2000 حرف.
{
  "name": "Riyadh Central Warehouse",
  "address": "Industrial City, Second Phase",
  "city": "Riyadh",
  "contact_name": "Khalid Al-Otaibi",
  "contact_phone": "+966 11 555 0142"
}
مثال على المعاملات

ما يعيده: المستودع الذي أنشئ في الحقل warehouse.

warehouses_update

يعدل بيانات مستودع، أو يخفيه من قوائم الاختيار بإرسال is_active بقيمة false (وtrue تعيده). لا يتغير إلا ما ترسله، ويلزم حقل واحد على الأقل.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف المستودع.
namestringلاالاسم الجديد، من 1 إلى 200 حرف. لا يمكن مسحه.
addressstringلاعنوان المستودع، حتى 500 حرف. أرسل null لمسحه.
citystringلامدينة المستودع، حتى 100 حرف. أرسل null لمسحه.
contact_namestringلااسم الشخص المسؤول في الموقع، حتى 200 حرف. أرسل null لمسحه.
contact_phonestringلارقم هاتف جهة الاتصال، حتى 50 حرفا. أرسل null لمسحه.
notesstringلاملاحظات حرة، حتى 2000 حرف. أرسل null لمسحه.
is_activebooleanلاfalse يعطل المستودع فيختفي من القوائم الافتراضية، وtrue يعيده فعالا.
{
  "id": 3,
  "contact_name": "Faisal Al-Harbi",
  "contact_phone": "+966 11 555 0177"
}
مثال على المعاملات

ما يعيده: المستودع بعد التعديل في الحقل warehouse.

  • التسليمات المنشأة من قبل تبقى بالبيانات التي نسختها، فلا يغيرها التعديل.

warehouses_delete

يحذف مستودعا. إن كان أي تسليم يشير إليه عطله بدلا من حذفه، حتى تبقى سجلات التسليمات القديمة مفهومة، ويقول الرد أيهما حدث.

يحذف بيانات أو يستبدلها · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف المستودع.

ما يعيده: ok وdeactivated: القيمة true تعني أن المستودع عطل وبقي، وfalse تعني أنه حذف.

  • المستودع المعطل يعود فعالا بـ warehouses_update وis_active بقيمة true. أما المحذوف فلا رجعة فيه.

الوجهات

الوجهة جهة استلام تتكرر، كمستشفى أو فرع، تحفظها لتنقل بياناتها إلى التسليمات. لا يرتبط التسليم بالوجهة المحفوظة: تقرأ بياناتها وتضعها في معاملات destination_* عند إنشاء التسليم.

destinations_list

يعرض الوجهات المحفوظة في مؤسستك من الأحدث إلى الأقدم. لا تظهر المعطلة إلا إذا طلبتها بـ include_inactive.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
include_inactivebooleanلااجعله true ليشمل الوجهات المعطلة أيضا. الافتراضي أنها مخفية.
pageintegerلارقم الصفحة، ويبدأ من 1.
page_sizeintegerلاعدد النتائج في الصفحة: 20 افتراضيا، وحده الأقصى 100.

ما يعيده: صفحة من الوجهات في data مع total وpage وpage_size وtotal_pages.

destinations_get

يجلب وجهة محفوظة واحدة بمعرفها: اسمها وعنوانها وجهة الاتصال فيها.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف الوجهة، ويأتي من destinations_list.

ما يعيده: سجل الوجهة في الحقل destination.

destinations_create

يحفظ وجهة تسليم لإعادة استخدامها. الاسم وحده مطلوب، والوجهة الجديدة فعالة.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
namestringنعماسم الوجهة، من 1 إلى 200 حرف.
addressstringلاعنوان الوجهة، حتى 500 حرف.
citystringلامدينة الوجهة، حتى 100 حرف.
contact_namestringلااسم الشخص المسؤول في الموقع، حتى 200 حرف.
contact_phonestringلارقم هاتف جهة الاتصال، حتى 50 حرفا.
notesstringلاملاحظات حرة، حتى 2000 حرف.
{
  "name": "King Fahd Hospital, Pharmacy Store",
  "address": "Al Olaya Street",
  "city": "Riyadh",
  "contact_name": "Nora Al-Qahtani",
  "contact_phone": "+966 11 555 0188"
}
مثال على المعاملات

ما يعيده: الوجهة التي حفظت في الحقل destination.

destinations_update

يعدل بيانات وجهة محفوظة، أو يخفيها من قوائم الاختيار بإرسال is_active بقيمة false (وtrue تعيدها). لا يتغير إلا ما ترسله، ويلزم حقل واحد على الأقل.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف الوجهة.
namestringلاالاسم الجديد، من 1 إلى 200 حرف. لا يمكن مسحه.
addressstringلاعنوان الوجهة، حتى 500 حرف. أرسل null لمسحه.
citystringلامدينة الوجهة، حتى 100 حرف. أرسل null لمسحه.
contact_namestringلااسم الشخص المسؤول في الموقع، حتى 200 حرف. أرسل null لمسحه.
contact_phonestringلارقم هاتف جهة الاتصال، حتى 50 حرفا. أرسل null لمسحه.
notesstringلاملاحظات حرة، حتى 2000 حرف. أرسل null لمسحه.
is_activebooleanلاfalse يعطل الوجهة فتختفي من القوائم الافتراضية، وtrue يعيدها فعالة.
{
  "id": 12,
  "is_active": false
}
مثال على المعاملات

ما يعيده: الوجهة بعد التعديل في الحقل destination.

  • التسليمات المنشأة من قبل تحتفظ ببيانات وجهتها، فلا يغيرها التعديل.

destinations_delete

يحذف وجهة محفوظة نهائيا. لا يتأثر أي تسليم لأن كل تسليم يحمل بيانات وجهته بنفسه. ولا يمكن التراجع عن الحذف.

يحذف بيانات أو يستبدلها · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف الوجهة.

ما يعيده: تأكيد الحذف في الحقل ok.

  • لإخفاء الوجهة مع إبقائها استخدم destinations_update وis_active بقيمة false بدلا من الحذف.

التسليمات

حالات التسليم بالترتيب المعتاد: draft ثم scheduled ثم in_transit ثم delivered، ويضاف cancelled للتسليم الملغى. يبدأ كل تسليم مسودة، ولا تغير حالته بالتعديل بل بالأداة deliveries_set_status.

deliveries_list

يعرض تسليمات مؤسستك من الأحدث إلى الأقدم، ومع كل تسليم أسماء منافسته وأمر بيعه ومستودعه. ويرشح بالحالة أو المنافسة أو أمر البيع أو المستودع.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
statusstringلايرشح بحالة واحدة: draft مسودة، scheduled مجدول، in_transit في الطريق، delivered تم التسليم، cancelled ملغى.
tender_idintegerلاتسليمات هذه المنافسة فقط.
sales_order_idintegerلاالتسليمات التي تنفذ أمر البيع هذا فقط.
warehouse_idintegerلاالتسليمات الخارجة من هذا المستودع فقط.
pageintegerلارقم الصفحة، ويبدأ من 1.
page_sizeintegerلاعدد النتائج في الصفحة: 20 افتراضيا، وحده الأقصى 100.

ما يعيده: صفحة من التسليمات في data مع total وpage وpage_size وtotal_pages. لكل تسليم id وdelivery_number وstatus وscheduled_at وdelivered_at واسم الوجهة ومدينتها، ونسخة المستودع warehouse_snapshot، وملخص المنافسة وأمر البيع والمستودع الحالي.

  • بنود التسليم لا تأتي في القائمة. استخدم deliveries_get لقراءتها.

deliveries_get

يجلب تسليما كاملا: رأسه وبنوده والمنافسة وأمر البيع اللذين يرتبط بهما والمستودع الحالي.

للقراءة فقط · الصلاحية logistics.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد، المشاهد بدون تسعير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف التسليم، ويأتي من deliveries_list.

ما يعيده: delivery (الرأس مع warehouse_snapshot)، وitems (البنود بترتيبها)، وtender وwarehouse وsales_order، وكل منها null إن لم يوجد.

  • warehouse_snapshot هو ما نسخ عند إنشاء التسليم ولا يتغير. أما warehouse فهو سجل المستودع الحالي وقد يكون تغير منذئذ.

deliveries_create

ينشئ تسليما ببند واحد على الأقل. تعطيه المنصة رقما تسلسليا، ويبدأ مسودة، وتنسخ بيانات المستودع إليه إن حددت warehouse_id.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
tender_idintegerلاالمنافسة التي يتعلق بها التسليم، ومعرفها من أدوات المنافسات. يجب أن تكون ظاهرة لمؤسستك.
sales_order_idintegerلاأمر البيع الذي ينفذه التسليم، ومعرفه من sales_orders_list. بعد الحفظ يتقدم أمر البيع من تلقاء نفسه: إلى in_progress ما دام لديه تسليم غير ملغى، وإلى fulfilled حين تسلم كل بنوده.
warehouse_idintegerلاالمستودع الذي تخرج منه البضاعة، ومعرفه من warehouses_list. تنسخ بياناته إلى التسليم لحظة الإنشاء.
destination_namestringنعماسم جهة الاستلام، من 1 إلى 200 حرف. مطلوب.
destination_addressstringلاعنوان جهة الاستلام، حتى 500 حرف.
destination_citystringلامدينة التسليم، حتى 100 حرف.
destination_contact_namestringلااسم المسؤول عن الاستلام، حتى 200 حرف.
destination_contact_phonestringلاهاتف المسؤول عن الاستلام، حتى 50 حرفا.
scheduled_atstringلاموعد الشحن أو التسليم بصيغة ISO 8601 مع المنطقة الزمنية، مثل 2026-10-12T09:00:00+03:00 أو ما ينتهي بالحرف Z. الموعد بلا منطقة زمنية يرفض.
notesstringلاملاحظات على التسليم، حتى 2000 حرف.
itemsobject[]نعمبنود التسليم، من 1 إلى 500 بند. مطلوب.
items[].product_idintegerلامنتج الكتالوج الذي يشحنه هذا البند، ومعرفه من products_list. اختياري.
items[].sales_order_item_idintegerلابند أمر البيع الذي يشحن هذا البند مقابله، ومعرفه من sales_orders_get. يجب أن يكون من بنود أمر البيع المحدد في sales_order_id. عليه يقوم حساب ما سلم من كل بند في الأمر.
items[].descriptionstringنعموصف ما يشحن، من 1 إلى 1000 حرف.
items[].quantitynumberنعمالكمية، صفر أو أكثر، ويقبل الكسور.
items[].unitstringلاوحدة الكمية نصا حرا، مثل box، حتى 50 حرفا.
items[].notesstringلاملاحظات على البند، حتى 1000 حرف.
{
  "tender_id": 48213,
  "sales_order_id": 77,
  "warehouse_id": 3,
  "destination_name": "King Fahd Hospital, Pharmacy Store",
  "destination_address": "Al Olaya Street",
  "destination_city": "Riyadh",
  "destination_contact_name": "Nora Al-Qahtani",
  "destination_contact_phone": "+966 11 555 0188",
  "scheduled_at": "2026-10-12T09:00:00+03:00",
  "notes": "Deliver to the pharmacy store, gate 2",
  "items": [
    {
      "product_id": 1204,
      "sales_order_item_id": 311,
      "description": "Syringe 5 ml, Luer lock, sterile",
      "quantity": 200,
      "unit": "box"
    },
    {
      "description": "Examination gloves, nitrile, size M",
      "quantity": 80,
      "unit": "box"
    }
  ]
}
مثال على المعاملات

ما يعيده: delivery_id والرقم الذي أعطي للتسليم في delivery_number.

  • الرقم يتبع تسلسل مؤسستك، مثل DEL-000014، ولا يتغير بعد ذلك.
  • المنافسة يجب أن تكون ظاهرة لمؤسستك، والمستودع وأمر البيع من مؤسستك، وإلا رفض الطلب. وبند التسليم الذي يحمل sales_order_item_id يتطلب sales_order_id، ويجب أن يكون بندا من ذلك الأمر، وإلا رفض الطلب أيضا.
  • التسليم يسجل ما خرج فعلا، فلا يرفض بند كميته أكبر من المطلوب في الأمر. يظهر الفرق في صفحة أمر البيع بوصفه انحرافا عن الطلب.

deliveries_update

يعدل وجهة التسليم أو موعده أو ملاحظاته أو ارتباطاته أو بنوده. لا يتغير إلا ما ترسله، أما الحالة فتغير بأداة أخرى.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف التسليم.
tender_idintegerلاالمنافسة التي يتعلق بها التسليم، ومعرفها من أدوات المنافسات. يجب أن تكون ظاهرة لمؤسستك. أرسل null لإزالة الربط.
sales_order_idintegerلاأمر البيع الذي ينفذه التسليم، ومعرفه من sales_orders_list. بعد الحفظ يتقدم أمر البيع من تلقاء نفسه: إلى in_progress ما دام لديه تسليم غير ملغى، وإلى fulfilled حين تسلم كل بنوده. أرسل null لإزالة الربط.
warehouse_idintegerلاالمستودع الذي تخرج منه البضاعة، ومعرفه من warehouses_list. تغييره لا يحدث نسخة بيانات المستودع المحفوظة في التسليم، ويبقى فيها ما نسخ عند الإنشاء. أرسل null لإزالة الربط.
destination_namestringلااسم جهة الاستلام، من 1 إلى 200 حرف. لا يمكن مسحه.
destination_addressstringلاعنوان جهة الاستلام، حتى 500 حرف. أرسل null لمسحه.
destination_citystringلامدينة التسليم، حتى 100 حرف. أرسل null لمسحه.
destination_contact_namestringلااسم المسؤول عن الاستلام، حتى 200 حرف. أرسل null لمسحه.
destination_contact_phonestringلاهاتف المسؤول عن الاستلام، حتى 50 حرفا. أرسل null لمسحه.
scheduled_atstringلاموعد الشحن أو التسليم بصيغة ISO 8601 مع المنطقة الزمنية، مثل 2026-10-12T09:00:00+03:00 أو ما ينتهي بالحرف Z. الموعد بلا منطقة زمنية يرفض. أرسل null لمسحه.
notesstringلاملاحظات على التسليم، حتى 2000 حرف. أرسل null لمسحه.
itemsobject[]لابنود التسليم، من 1 إلى 500 بند. إن أرسلتها حلت محل القائمة كلها، فأرسل القائمة الكاملة. وإن حذفتها بقيت البنود المخزنة كما هي.
items[].product_idintegerلامنتج الكتالوج الذي يشحنه هذا البند، ومعرفه من products_list. اختياري.
items[].sales_order_item_idintegerلابند أمر البيع الذي يشحن هذا البند مقابله، ومعرفه من sales_orders_get. يجب أن يكون من بنود أمر البيع المحدد في sales_order_id. عليه يقوم حساب ما سلم من كل بند في الأمر.
items[].descriptionstringنعموصف ما يشحن، من 1 إلى 1000 حرف.
items[].quantitynumberنعمالكمية، صفر أو أكثر، ويقبل الكسور.
items[].unitstringلاوحدة الكمية نصا حرا، مثل box، حتى 50 حرفا.
items[].notesstringلاملاحظات على البند، حتى 1000 حرف.
{
  "id": 412,
  "scheduled_at": "2026-10-14T10:30:00+03:00",
  "notes": "Moved at the hospital's request"
}
مثال على المعاملات

ما يعيده: delivery_id للتسليم بعد التعديل.

  • items تستبدل القائمة كلها: البند الذي لا ترسله يزال، وما تبقيه ويرتبط ببند في الأمر عليك إعادة إرسال sales_order_item_id معه. وإن حذفت items بقيت البنود كما هي.
  • إن غيرت sales_order_id أو مسحته دون إرسال items، فصلت بنود التسليم عن بنود الأمر السابق فلا تحسب في تنفيذه.
  • رقم التسليم ونسخة المستودع المحفوظة فيه لا يتغيران بالتعديل. الحالة تغيرها deliveries_set_status.
  • بعد الحفظ تعاد مراجعة حالة أمر البيع المرتبط، إلى الأمام فقط.

deliveries_delete

يحذف تسليما مع بنوده. لا يمكن التراجع عن ذلك، ويحتفظ أمر البيع المرتبط بالحالة التي بلغها.

يحذف بيانات أو يستبدلها · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف التسليم.

ما يعيده: تأكيد الحذف في الحقل ok.

  • لإيقاف تسليم دون محوه، انقله إلى cancelled بـ deliveries_set_status: التسليم الملغى لا يحتسب في تنفيذ أي أمر.

deliveries_set_status

ينقل التسليم إلى حالة جديدة. يسمح بأي انتقال بين الحالات، فيصحح الخطأ بالرجوع، ويعاد حساب حالة أمر البيع المرتبط بعدها.

يغير البيانات · الصلاحية logistics.write · الأدوار: المالك، المدير · الخطة الاحترافية وخطة المؤسسات

المعاملالنوعمطلوبالوصف
idintegerنعممعرف التسليم.
statusstringنعمالحالة الجديدة: draft مسودة، scheduled مجدول، in_transit في الطريق، delivered تم التسليم، cancelled ملغى.
{
  "id": 412,
  "status": "delivered"
}
مثال على المعاملات

ما يعيده: ok وstatus بالحالة التي صار عليها التسليم.

  • يسجل delivered_at لحظة دخول التسليم حالة delivered ويمسح عند الخروج منها.
  • أمر البيع يتقدم فقط: التسليم الذي صار delivered قد ينقله إلى in_progress ثم fulfilled، لكن تراجع التسليم لا يعيد الأمر إلى الوراء. وللأمر أداة تغيير حالة خاصة به لذلك.