أدوات MCP
العطاءات وتسعير البنود
أدوات MCP لقائمة العطاءات ولأسعار بنود كل منافسة وما تسفر عنه من ترسية.
العطاء منافسة قررت مؤسستك العمل عليها، ويمر بمراحل من المراجعة حتى الفوز أو الخسارة. وسعر البند هو سعر الوحدة الذي تحدده مؤسستك لبند من بنود المنافسة. تقرأ هذه الأسعار كل أدوات إعداد العطاء بعدها: عروض الأسعار وملفات نوبكو وخطاب التغطية، فهذه الأدوات هي المكان الذي تكتب فيه أسعار العطاء.
| الأداة | ما تفعله |
|---|---|
| bids_list | عرض العطاءات |
| bids_create | إضافة عطاء |
| bids_update | تعديل عطاء |
| bids_delete | حذف عطاء |
| bid_pricing_list | عرض أسعار البنود |
| bid_pricing_set_batch | تحديد أسعار عدة بنود |
| bid_pricing_outcome_set | تسجيل نتيجة ترسية بند |
| bid_pricing_delete | حذف سعر بند |
قائمة العطاءات
عطاء واحد لكل منافسة. المراحل بالترتيب: reviewing (قيد المراجعة) ثم preparing (إعداد العرض) ثم submitted (تم التقديم)، وتنتهي بإحدى won (فائز) أو lost (خسارة) أو cancelled (ملغى).
bids_list
يعرض عطاءات مؤسستك، لكل عطاء منافسته. استخدمه لترى ما تعمل عليه وفي أي مرحلة، ورشح النتائج بالمرحلة عند الحاجة.
للقراءة فقط · الصلاحية bids.read · كل الأدوار · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
page | integer | لا | رقم الصفحة، ويبدأ من 1. |
page_size | integer | لا | عدد النتائج في الصفحة: 20 افتراضيا، وحده الأقصى 100. |
status | string | لا | يرشح العطاءات بمرحلة واحدة، وهي إحدى القيم المذكورة أعلاه. |
ما يعيده: صفحة من العطاءات مع منافسة كل عطاء وعدد النتائج الكلي.
- يرى الدوران الفني والمشاهد بدون تسعير العطاءات، لكن حقل
bid_amountيعود فارغا لهما.
bids_create
يضيف منافسة إلى قائمة عطاءات مؤسستك. لكل منافسة عطاء واحد فقط، فإن وجد عطاء لها ردت الأداة بتعارض.
يغير البيانات · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
tender_id | integer | نعم | معرف المنافسة، ويأتي من أدوات المنافسات. |
status | string | لا | المرحلة الأولى للعطاء. الافتراضي reviewing. |
bid_amount | number | لا | إجمالي قيمة العطاء بالريال السعودي. أرسل null لتتركه غير محدد. |
notes | string | لا | ملاحظات حرة على العطاء، حتى 5000 حرف. |
{
"tender_id": 48213,
"status": "reviewing",
"notes": "Syringes lot, check MDMA status first"
}ما يعيده: العطاء الذي أنشئ.
- يحتسب كل عطاء جديد ضمن حد المنافسات النشطة في خطتك، وتمتنع الأداة عند بلوغه.
bids_update
يعدل مرحلة العطاء أو قيمته أو ملاحظاته. لا يتغير إلا ما ترسله.
يغير البيانات · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
id | integer | نعم | معرف العطاء. |
status | string | لا | المرحلة الجديدة. |
bid_amount | number | لا | إجمالي القيمة بالريال السعودي. أرسل null لمسحه. |
notes | string | لا | الملاحظات. أرسل null لمسحها. |
{
"id": 311,
"status": "submitted",
"bid_amount": 148167.95
}ما يعيده: العطاء بعد التعديل.
- تغيير المرحلة يطلق حدث
bid.status_changedإلى الويب هوك التي ضبطتها مؤسستك.
bids_delete
يزيل عطاء من قائمة مؤسستك. لا يمكن التراجع عن ذلك، وتبقى أسعار البنود محفوظة.
يحذف بيانات أو يستبدلها · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
id | integer | نعم | معرف العطاء. |
ما يعيده: تأكيد الحذف.
أسعار البنود
لكل بند من بنود المنافسة سعر واحد لمؤسستك. الإضافة والتعديل بالأداة نفسها، ولا حاجة لوجود عطاء للمنافسة حتى تسعر بنودها.
bid_pricing_list
يعرض أسعار مؤسستك لبنود منافسة واحدة، مع نتيجة الترسية المسجلة لكل بند.
للقراءة فقط · الصلاحية bids.read · الأدوار: المالك، المدير، المبيعات، المشتريات، المشاهد · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
tender_id | integer | نعم | معرف المنافسة. |
ما يعيده: أسعار البنود، لكل سعر معرفه الذي تستخدمه أدوات النتيجة والحذف.
bid_pricing_set_batch
يسعر بندا واحدا أو حتى 500 بند من منافسة واحدة في طلب واحد، من أسعار تكتبها أو من هامش على تكلفة المنتج المختار لكل بند. سعر واحد لكل بند في مؤسستك، ويستبدل الطلب السعر السابق.
يغير البيانات · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
tender_id | integer | نعم | معرف المنافسة. |
items | object[] | نعم | البنود المراد تسعيرها، من 1 إلى 500، ولا يتكرر معرف بند فيها. |
items[].tender_item_id | integer | نعم | معرف البند. |
items[].unit_price | number | لا | سعر الوحدة بالريال السعودي. أرسله أو margin_percent، لا الاثنين. |
items[].margin_percent | number | لا | هامش الربح نسبة من سعر البيع، من -100 إلى أقل من 100: يصبح السعر تكلفة المنتج المختار للبند مقسومة على (1 − الهامش/100). أرسله أو unit_price، لا الاثنين. |
items[].notes | string | لا | ملاحظات على التسعير، مع unit_price فقط. |
{
"tender_id": 48213,
"items": [
{
"tender_item_id": 902114,
"unit_price": 3.45
},
{
"tender_item_id": 902115,
"unit_price": 12.9,
"notes": "Includes delivery"
},
{
"tender_item_id": 902116,
"margin_percent": 20
}
]
}ما يعيده: قائمة بما سعر وقائمة بما فشل، مع عدد كل منهما.
- تعالج الصفوف كل على حدة: صف معرف بنده ليس بندا حيا من المنافسة يفشل وحده بخطأ مقروء، وتحفظ بقية الصفوف.
- تكرار معرف بند في الطلب يرفضه كله قبل حفظ أي شيء.
- مع
margin_percentيبنى السعر على سعر تكلفة المنتج المختار للبند (والدولار بسعر الصرف الثابت 3.75) محولا إلى وحدة واحدة من البند، ويقرب إلى أربع خانات عشرية، ويحفظ السعر وحده: هامش 20 على تكلفة 100 ريال يعطي 125 ريالا. والتكلفة تذكر لمستوىprice_basisللمنتج، فالبند الذي يشترى بعلبة من 100 يبنى على تكلفة العلبة، والبند الذي وحدته غير مؤكدة على تكلفة وحدة واحدة من المنتج. ويضيف الرد إلى السطر المسعرmargin_percentوcost_sar(لوحدة البند) وproduct_idوprice_levelوlevel_countوlevel_measureوlevel_status(checkيعني أن الوحدة غير مؤكدة، ومعهsuggestion). وهذا التسعير لأدوار المالك والمدير والمشتريات، لأن السعر الناتج يكشف التكلفة، فيرفض لدور المبيعات. - سطر الهامش يفشل وحده ويذكر السبب في
reason:no_selectionحين لا يوجد منتج مختار للبند (اختره بـ`tender_item_product_selection_set`)، وarchived_productحين يكون المنتج المختار مؤرشفا، وno_costحين لا يكون للمنتج سعر تكلفة أكبر من صفر (أضفه بـ`products_update`)، وno_conversionحين يتعذر تحويل التكلفة إلى وحدة البند لنقص عدد في بيانات التعبئة، ومعهmissingباسمه (أكمله بـproducts_updateأو حدد وحدة البند بـ`tender_item_price_levels_set`)، وrounds_to_zeroحين يصبح السعر 0.0000 بعد التقريب. ولا يأخذ سطر الهامش ملاحظات، ويبقي ملاحظة البند كما هي. - السعر الموجب يعلم البند بالمشاركة، والسعر 0 يبقي سطر السعر ويزيل علامة المشاركة، ويذكر الرد لكل سطر أيهما حدث. ولإعادة العلامة استخدم `tender_item_participation_set_batch`. وللأسعار القادمة في ملف Excel أو CSV استخدم `sheet_import` بالهدف
bid_pricing، فهو يقرأ كل الصفوف على الخادم.
bid_pricing_outcome_set
يسجل هل رسا بند مسعر على مؤسستك (awarded) أم لم يرس عليها (not_awarded). أرسل null لإعادته إلى حالة الانتظار.
يغير البيانات · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
id | integer | نعم | معرف سعر البند، ويأتي من bid_pricing_list. وهو غير معرف البند نفسه. |
outcome | string | نعم | awarded أو not_awarded، أو null لإعادته إلى الانتظار. |
{
"id": 5521,
"outcome": "awarded"
}ما يعيده: سعر البند بعد تسجيل النتيجة.
bid_pricing_delete
يزيل سعرا واحدا لبند. لا يمكن التراجع عن ذلك، وتبقى علامة المشاركة كما هي.
يحذف بيانات أو يستبدلها · الصلاحية bids.write · الأدوار: المالك، المدير، المبيعات، المشتريات · الخطة الاحترافية وخطة المؤسسات
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
id | integer | نعم | معرف سعر البند، ويأتي من bid_pricing_list. |
ما يعيده: تأكيد الحذف.