إنشاء معالجات خدمة التوصيل الآلية الخاصة بك. إنشاء معالجات آلية خاصة بك لخدمات التوصيل ما هو هذا المعالج الآلي

مهما أطعمت الذئب، سيكون مذاق الخنزير أفضل

Bitrix: إنشاء معالج خدمة التسليم الآلي

لدى Bitrix نوعان من خدمات التوصيل: المخصصة والآلية. ستوضح هذه المقالة كيفية إنشاء معالج خدمة التسليم الآلي.

ما هو هذا المعالج الآلي؟

توجد جميع المعالجات المثبتة مسبقًا في المجلد /bitrix/modules/sale/lang/ru/delivery/. يجب أن تكون معالجاتك موجودة في المجلد /bitrix/php_interface/include/sale_delivery/ (يمكن تغيير هذا المسار في خصائص وحدة المتجر عبر الإنترنت).

المعالج عبارة عن فئة من بنية محددة تحتوي على سلسلة اتصال لمعالج تسليم الحدث onSaleDeliveryHandlersBuildList.

يجب أن تحتوي فئة معالج التسليم على عدد من الأساليب، وأنواع الإجراءات الموضحة في أسلوب Init للفئة.

1. الحرف الأول - تتم تهيئة الحقول الرئيسية.

2. DBGETSETTINGS - طريقة لقراءة قيم المعلمات.

3. DBSETSETTINGS - طريقة لتعيين قيم المعلمات.

4. GETCONFIG - تحديد تكوين الإعدادات (يمكن تقسيمها إلى علامات تبويب).

5. التوافق - التحقق من توافق ملفات تعريف المعالج مع الطلب.

6. الحاسبة - حساب تكاليف التسليم.

1. SID - معرف السلسلة الفريد للمعالج.
2. الاسم — اسم المعالج.
3. الوصف - الوصف النصي للمعالج
4. DESCRIPTION_INNER — الوصف الداخلي للمعالج، يتم عرضه عند تكوين المعالج في لوحة التحكم.
5. BASE_CURRENCY — معرف العملة الأساسية للمعالج
6. المعالج - المسار إلى ملف المعالج. مطلوب للنسخ التلقائي الصحيح للمعالج (لم يتم تنفيذه بعد). في الغالبية العظمى من الحالات، تكون القيمة __FILE__ كافية

ويجب أيضًا تحديد واحد على الأقل الملف الشخصي للتسليم.

"عادي"، // معرف خدمة التوصيل "NAME" => "Courier Krasnaya Presnya"، "DESCRIPTION" => "وصف لعملاء الموقع"، "DESCRIPTION_INNER" => "وصف لمسؤولي الموقع"، "BASE_CURRENCY" = > "RUR"، "HANDLER" => __FILE__, /* تعريف الأساليب */ "DBGETSETTINGS" => array("CDeliveryPlain", "GetSettings"), "DBSETSETTINGS" => array("CDeliveryPlain", "SetSettings"), " GETCONFIG" => array("CDeliveryPlain", "GetConfig"), "COMPABILITY" => array("CDeliveryPlain", "Compability"), "CALCULATOR" => array("CDeliveryPlain", "حساب"), /* قائمة الملفات الشخصية */ "PROFILES" => array("all" => array("TITLE" => "بلا قيود"، "DESCRIPTION" => "ملف تعريف التسليم بدون أي قيود"، "RESTRICTIONS_WEIGHT" => array(0 ) , "RESTRICTIONS_SUM" => array(0),),)); ) /* ضبط المعلمات */ function SetSettings($arSettings) ( foreach ($arSettings as $key => $value) ( ​​​​if (strlen($value) > 0) $arSettings[$key] = doubleval($value) ); else unset($arSettings[$key]); return serialize($arSettings); GetConfig() ( $arConfig = array("CONFIG_GROUPS" => array("all" => "Parameters",), "CONFIG" => array("DELIVERY_PRICE" => array(// "TYPE" => "STRING" "، // "DEFAULT" => "200"، // "TITLE" => "تكلفة التسليم"، // "GROUP" => "all"،)))،); return $arConfig; ) /* التحقق من الامتثال ملف تعريف تسليم الطلب */ function Compability($arOrder, $arConfig) ( return array("all"); ) /* حساب تكلفة التسليم*/ function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false ) ( // الحصول على تكلفة السلة // عرض السلة الحالية للمستخدم الحالي $arBasketItems = array(); $dbBasketItems = CSaleBasket::GetList(array("NAME" => "ASC", "ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL")، false، false، array("ID"، "CALLBACK_FUNC"، "MODULE"، "PRODUCT_ID"، "QUANTITY"، "DELAY"، "CAN_BUY"، "PRICE"، "QUANTITY" " ")); بينما ($arItems = $dbBasketItems->Fetch()) ( if (strlen($arItems["CALLBACK_FUNC"]) > 0) ( CSaleBasket::UpdatePrice($arItems["ID"], $arItems["CALLBACK_FUNC"] , $arItems["MODULE"], $arItems["PRODUCT_ID"], $arItems["QUANTITY"]); $arItems = CSaleBasket::GetByID($arItems["ID"] ) $arBasketItems = $arItems ) / / اطبع مصفوفة تحتوي على السلة الحالية foreach ($arBasketItems as $num => $item) ( $TotalSumArr = $item["PRICE"]*$item["QUANTITY"];) // مجموع جميع المنتجات مع الأخذ في الاعتبار الكمية $TotalSum = array_sum($TotalSumArr); // اعتمادًا على المبلغ، قم بعمل علامة للتسليم // من 1500 إلى 5000 تسليم 750 روبل if($TotalSum >= 1500 && $TotalSum<= 5000) $DeliveryCost = 750; elseif($TotalSum >= 5000) تكلفة التسليم $ = 0؛ return array("RESULT" => "OK", "VALUE" => $_SESSION["ORDER_DELIVERY_PRICE"], "VALUE" => $DeliveryCost); ) ) AddEventHandler("sale", "onSaleDeliveryHandlersBuildList", array("CDeliveryPlain", "Init")); ?>

يحتوي المعالج على رمز يحسب محتويات سلة التسوق، ويعرض تكاليف شحن مختلفة اعتمادًا على السعر.

لقد نظرنا في عملية تثبيت مكون الطلب الجديد. لقد اختبر المشروع لعدة أيام، وحان الوقت للاستفادة من الفرص التي تستحق التحول إلى منصة 1C-Bitrix الجديدة.

الاستبدال التلقائي للمدينة الافتراضية

سيكون هذا المثال مفيدًا لكل من المتاجر الإقليمية الصغيرة والمشاريع الكبيرة.

منطقة التسليم هي العنصر الأول من العناصر الرئيسية لعملية الطلب. لنفترض أننا بحاجة إلى استخدام الاستبدال التلقائي للاسم "كالينينغراد" لزيادة التحويل وتقليل المشكلات المتعلقة بتقديم الطلبات.

الآن عند تسجيل الدخول لأول مرة، يبدو الأمر كما يلي:

يمكن للعملاء، بالطبع، النقر على زر "كالينينغراد"، وبعد ذلك سيتم ملء الحقل، لكن الكثير منهم يتخطون هذه الخطوة ببساطة، مما يؤدي إلى حدوث خطأ:

تم التعرف على هذه المشكلة بواسطة Metrica Webvisor. بالطبع، بعد ذلك، يقوم العميل بملء كل شيء بشكل صحيح، ولكن تبقى بقايا، على الرغم من حقيقة أن الاستلام في العديد من المتاجر هو معيار مهم (ما يصل إلى 80٪ من الطلبات)، وفي هذه الحالة، التعبئة الصحيحة للمدينة الاسم ليس حرجا.

لنقم بتعيين المدينة الافتراضية ونرى ما إذا كان الاستبدال يعمل أم لا. لنذهب إلى القسم الإداري للمتجر، ثم إلى إعدادات الخاصية:

وقم بتعيين الموقع الافتراضي:

الآن لنقدم طلبًا للتحقق:

رائع، تم ملء الموقع ويحتاج العميل فقط إلى النقر فوق "التالي". الآن سيتم تقديم الطلب بأقل قدر من الإزعاج للعميل، وسنعمل على زيادة التحويل إلى الحد الأقصى. أما بالنسبة للمتاجر الكبيرة، فيمكنها جمع إحصائيات حول تكرار الطلبات من مدن معينة، وإنشاء أزرار اختيار سريعة، كما في لقطة الشاشة: "كالينينغراد"، "زيلينوغرادسك"، "سفيتلوغورسك".

يمكنك تعيين المدينة الأكثر شعبية بشكل افتراضي، لأنه من الأسهل دائمًا تغييرها أو توضيحها عبر الهاتف بدلاً من فقدان العميل.

قيود الدفع الإضافية

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

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

في هذه الحالة، سوف تحتاج إلى عمل نظامين للدفع النقدي:

  • في واحدة سنحد من استخدام نقطة الالتقاء، ولكن دون قيود على الأسعار،
  • وفي الثانية سنقتصر على خدمات البريد السريع ونضيف حدًا للمبلغ.
أولاً، لنضع حدًا للسعر:

الآن قيود التسليم:

ونتيجة لذلك نحصل على ما يلي:

دعونا نتحقق من تنفيذ طلب ببضائع تقل قيمتها عن 10000 روبل والتسليم عن طريق البريد السريع:

كل شيء على ما يرام، الدفعة المطلوبة موجودة، ويمكن تقديم الطلب.

دعونا نتحقق من البضائع التي تزيد قيمتها عن 10000 روبل:

رائع، لا يوجد دفع نقدي، يمكنك تقديم طلب بالدفع بطرق أخرى، دون المخاطرة بالسعاة والمال.

عند فرض القيود، لا يرى العملاء طرق دفع "محظورة"، وبالتالي لن يتشاجروا مع المشغلين، الذين سيتعين عليهم بخلاف ذلك أن يشرحوا باستمرار سبب عدم قيام شركتك بتسليم الطلب المقدم.

خدمات التوصيل الإضافية

لقد طُلب منا في كثير من الأحيان إتاحة الفرصة لإنشاء الخدمات المطلوبة في عمليات التسليم. وقد تم تنفيذ ذلك في النظام الأساسي الجديد. تتمثل فائدة الخدمات الإضافية في زيادة متوسط ​​فاتورة الطلب.

انتقل إلى إعدادات التسليم:

ظهرت علامة تبويب منفصلة في الواجهة تحتوي على خدمات إضافية سيتم عرضها في كتلة التسليم. يتم دعم ثلاثة أنواع من الخدمات:

  • قائمة الخدمات. يُطلب من العميل تحديد عنصر من قائمة الخدمات. بشكل افتراضي، يتم تحديد العنصر الأول، لذلك إذا لم تكن بحاجة إلى زيادة السعر، فيجب أن تكون الخدمة الأولى في القائمة بسعر صفر.

الخدمة الكمية. يتم إنشاء الخدمة بسعر لكل وحدة، ويمكن للعميل تحديد الكمية التي يحتاجها.

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

دعونا نرى كيف يتم تكوين هذه القواعد:

الإعدادات الخاصة بجميع أنواع الخدمات متشابهة جدًا: هناك كتلتان تتحكمان في العناصر الرئيسية. أولا وقبل كل شيء، تحتاج إلى تعيين اسم ووصف الخدمة. ثم حدد من يمكنه استخدام الخدمة:

  • المدير - سيتم عرض الخدمة في الواجهة الإدارية.
  • العميل - سيتم عرض الخدمة أثناء الطلب في الجزء العام من الموقع.
هذا هو الشكل الذي تبدو عليه إضافة الخدمة في الواجهة الإدارية عند إنشاء طلب أو إجراء تعديلات:

"إدخال البيانات الشخصية" الديناميكي

تم الانتهاء من عمليات التسليم، والآن يمكنك الانتقال إلى أحد أهم العناصر في تقديم الطلب - طلب البيانات من المستخدم للتسليم أو الشحن. في المكون السابق، طُلب من العميل نفس مجموعة الحقول. كان عليه أن يختار الحقول التي سيملأها، وهو أمر غير مريح إلى حد ما.

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

  • هاتف.
  • بريد إلكتروني. يمكن أيضًا إزالة هذا العنصر، ولكن في بعض الأحيان تريد "تدليل" العميل بالرسائل الإخبارية حول المنتجات الجديدة.
دعنا نذهب إلى القسم الإداري "ترتيب الخصائص" -> "قائمة الخصائص"، وحدد خاصية العنوان المراد تغييرها:

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

هذه وظيفة مفيدة ومرحب بها. بعد كل شيء، يجب أن تعترف أنه ليس من الجيد جدًا الإجابة على أسئلة العملاء: "لماذا تحتاج إلى عنواني إذا كنت سأستلم الطلب بنفسي؟" الآن لا تحتاج إلى القيام بذلك.

نقطة استلام الطلب

أخيرًا، أود أن أتحدث عن التغييرات في مجموعة اختيار "طلب نقاط الالتقاط". في الإصدار السابق، كانت الشكاوى الرئيسية هي مشاكل عرض عدد كبير من نقاط الالتقاط، وخريطة صغيرة، وعدم التحديد التلقائي لنقطة الالتقاط (إذا كانت هناك واحدة فقط، على سبيل المثال).

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

حل مشكلة الإخراج خدمات التسليم الآلي لمتجر Bitrix v14 عبر الإنترنت عند تقديم طلب على Yandex.Market.

هذا ما نتحدث عنه، ولكن اتضح أن الأمر لم يتم، فقط الخدمات المخصصة هي التي تعمل، وسنقوم بإصلاحه اليوم.
أقوم هنا باختبار تقديم طلب في لوحة Yandex.Market؛ وسيظهر للمشتري نفس الشيء عندما يقدم طلبًا على Yandex.Market.

اختيار الخدمات الآلية

نحتاج أولاً إلى إضافة خدمات التسليم الآلي إلى إعدادات الوحدة متجر على الانترنتفي الفصل التسوق في السوق

لأن بشكل افتراضي، فهي غير موجودة ولن نتمكن بعد الآن من تحديث وحدة المتجر عبر الإنترنت، فأنا أقوم بالتحرير مباشرة في الوحدة، لأن... في حالتي، إذا قمت بتحديث المتجر، فسيتوقف كل شيء عن العمل للعميل، وهو في حالتك لا أعرف ماذا أفعل، فكر في الأمر، في متجر Bitrix v16 الجديد، ربما لن ينجح هذا أيضًا.

يتم تحديد الإعدادات في الصفحة الإدارية في الملف
/bitrix/modules/sale/admin/ymarket.php

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

لذلك نجد في الملف حيث يتم تكوين مجموعة الخدمات المخصصة $arDeliveryList وإضافة الخدمات الآلية إليها

$arDeliveryFilter = المصفوفة(
"LID" => $arTab["SITE_ID"],
"نشط" => "ص"
);

// تسليم ثابت
$dbDeliveryList = CSaleDelivery::GetList(
المصفوفة("NAME" => "ASC"),
$arDeliveryFilter،
خطأ شنيع،
خطأ شنيع،
المصفوفة ("المعرف"، "الاسم")
);

$arDeliveryList=array();
بينما ($arDelivery = $dbDeliveryList->Fetch())
$arDeliveryList[$arDelivery["ID"]] = $arDelivery["NAME"];

// التسليم التلقائي
$dbRes = CSaleDeliveryHandler::GetList(
المصفوفة("NAME" => "ASC"),
$arDeliveryFilter
);
بينما($delivery = $dbRes->Fetch())
{
$deliveryId = ($delivery["ID"] ? $delivery["ID"] : $delivery["SID"]);
$arDeliveryList[ $deliveryId ] = $delivery["NAME"];
}


بعد ذلك، نجد كتلة إخراج التسليم ونضيف خيارًا للبريد إلى القائمة، وفي حالتي تم التعليق عليه، ومن المرجح أن يكون لديك نفس الشيء.

هذا هو الشكل الذي يبدو عليه التحديد النهائي، والذي يعرض خدمات التوصيل في لوحة الإدارة

اسم التسليم $):
$selected = isset($siteSetts["DELIVERIES"][$deliveryId]) ? $siteSetts["DELIVERIES"][$deliveryId] : "";
?>


يتم كل شيء بالإعدادات، كل ما تبقى هو وضع اللمسات الأخيرة على البرنامج النصي الذي يصلون إليه طلبات من Yandex.Market، فهو يخبر السوق عن عمليات التسليم التي سيتم عرضها على المشتري عند تقديم طلب على Yandex.Market.

طلبات Yandex.Market

جميع الطلبات من Yandex.Market إلى Bitrix تأتي أولاً إلى هذا الملف، فهي تحتوي فقط على اتصال ملف آخر
/bitrix/services/ymarket/index.php

في هذا الملف، يتم توصيل Bitrix API نفسها لتفاعل Yandex.Market مع متجرك عبر الإنترنت
/bitrix/modules/sale/services/ymarket/index.php

نحن مهتمون في هذا الملف بالطريقة التي تمضي قدمًا في الملف الذي نحتاجه لإجراء التغييرات، ولا نغير أي شيء في هذا
$result = $YMHandler->processRequest($requestObject, $method, $postData);

وهنا ملفنا الذي يعمل معه كل منطق التفاعل بين Bitrix و Yandex.Market
/bitrix/modules/sale/general/ym_handler.php

لم أكتب المقال على الفور، تم اختبار الوظيفة لبعض الوقت وتم تصحيح الأخطاء، حتى لو نسيت أن أقول شيئًا ما، فقد أرفقت الملفات، يمكنك معرفة ذلك.

بشكل عام، إذا لم تقم بإجراء أي تغييرات على هذا الملف على موقع الويب الخاص بك من قبل، فيمكنك تجربة ملفي بالكامل، باستثناء عمليات التسليم، لم يتغير شيء فيه، كل شيء يعمل.

إذن ما هي التغييرات؟في فئة CSaleYMHandler
1) تمت إضافة متغير يقوم بتخزين معلومات كاملة حول العناصر الموجودة في سلة التسوق لحساب التسليم بواسطة خدمات التسليم الآلية.
protected $basketItems = array();

2) تم تغيير طريقة الاستماع إلى العربة في السوق وتلقي معلومات حول البضائع (العربة) وإرجاع خدمات التوصيل وطرق الدفع
وظيفة محمية ProcessCartRequest($arPostData)

3) تم تغيير طريقة تلقي المعلومات حول البضائع الموجودة في عربة التسوق في السوق (المعرف، السعر، الكمية، الوزن، الأبعاد، إلخ).
الوظيفة المحمية getItemCartInfo($arItem, $currency)

4) تم تغيير الطريقة التي تتلقى معلومات عن موقع المشتري وخدمات التوصيل المتاحة له عن طريق الفلتر وحساب التسليم وعرضه للمشتري في السوق.
الوظيفة المحمية getDeliveryOptions($delivery, $price, $weight = 0, $arBasketItems = array())

هنا في هذه الطريقة يتم حساب خدمات تسليم Bitrix القابلة للتخصيص والآلية.

انتبه هنا!

في حالتي، يقع المتجر في موسكو، وبالنسبة لموسكو، يتم تعطيل جميع خدمات التسليم الآلي، بالنسبة للمشتري من موسكو، لا ينبغي إظهارها، وتعمل خدمة الاستلام والتسليم السريع هناك، وهذا الشرط موجود في الكود (ص 432):
إذا ($locationTo == 2691) تابع؛

5) تم تغيير الطريقة التي تضيف طلبًا على موقع الويب الخاص بك، وتخبر السوق "كل شيء على ما يرام" وتعيد رقمه إلى Yandex.Market
عملية الوظيفة المحميةOrderAcceptRequest($arPostData)

على وجه التحديد، السطر 911، حيث وصلنا رقم الأمر، انها إما رقم التعريف الخاص بالطلب، أو رمز الطلبمع تمكين ترقيم الطلب باستخدام القالب
$arResult["order"]["id"] = $this->getOrderNumber($orderID);

6) تمت إضافة طريقة تعيد رقم الطلب الموجود على موقع الويب الخاص بك إلى Yandex.Market (معرف الطلب أو رمز الطلب)
الوظيفة المحمية getOrderNumber($orderId)

بالإضافة إلى ذلك

تم تحميل المزيد على الموقع المواقع 2.0، لقد قمت بذلك في عام 2015 الماضي، أتذكر أنه كانت هناك مشكلة في Yandex.Market، وكان Bitrix يبحث عن مواقع بشكل غير صحيح وأبلغ Yandex.Market عن خطأ، ولا أتذكر أين فعلت ذلك، لقد أضفت ملف ym_location.php إلى الأرشيف فقط في حالة العثور عليه، يرجى إبلاغي بذلك، وسأضيف هذه النقطة إلى المقالة.

خاتمة

عند تقديم طلب على Yandex.Market، سيرى المشتري قائمة عمليات التسليم في هذا النموذج؛

جميع الملفات المستخدمة في المقالة مقسمة إلى مجلدات، حيث سيكون من السهل العثور على الملف.

تتيح لك معالجات خدمة التسليم الآلية تنفيذ المنطق التعسفي برمجيًا لحساب تكاليف التسليم بناءً على معلمات الطلب والإعدادات الخاصة بك. يمكن أن تكون خوارزميات الحساب عشوائية - التكلفة الثابتة، وطلبات خدمات الويب عن بعد، والحساب بناءً على جداول البيانات الخاصة، وما إلى ذلك.

المعالج عبارة عن فئة أو مجموعة من الوظائف ذات البنية التالية:

طريقة وصف
وصف المعالج دالة تُرجع وصفًا للمعالج، وأسماء الطرق، وقائمة بملفات تعريف المعالج، وما إلى ذلك.
إعدادات المعالج دالة تقوم بإرجاع مجموعة من إعدادات المعالج
إعدادات المعالجة مجموعة من الوظائف المسؤولة عن إعداد الإعدادات للدخول إلى قاعدة البيانات والتحويل العكسي.
التحقق من التوافق طريقة تتحقق من توافق ملفات التعريف الخاصة بمعالج معين مع أمر ما.
وظيفة الحساب طريقة تحسب تكاليف التسليم بناءً على إعدادات المعالج ومعلمات الطلب.

نظرا لأن العمل مع مجموعة من الوظائف الفردية غير مريح، فمن المستحسن دمجها في فئة (مساحة الاسم). بناءً على هذه التوصية، سيتم اتباع المزيد من الوصف، بالإضافة إلى تنفيذ المثال الموضح. في المثال، يتم تطبيق معالج "Courier Delivery" كفئة CDeliveryMySimple.

وصف المعالج

وصف المعالج هو أسلوب يُرجع مصفوفة ترابطية للبنية التالية:

معامل وصف
سيد معرف السلسلة الفريد للمعالج.
اسم اسم المعالج.
وصف وصف نصي للمعالج
DESCRIPTION_INNER يتم عرض الوصف الداخلي للمعالج عند تكوين المعالج في لوحة التحكم.
العملة الأساسية معرف العملة الأساسية للمعالج
معالج المسار إلى ملف المعالج. مطلوب للنسخ التلقائي الصحيح للمعالج (لم يتم تنفيذه بعد). في الغالبية العظمى من الحالات، تكون القيمة __FILE__ كافية
الحصول على التكوين اسم الطريقة التي تُرجع مجموعة من إعدادات أداة التحقق من الصحة. إذا تم تنفيذ المعالج كفئة، فستكون القيمة عبارة عن مصفوفة ("class_name"، "method_name").
إعدادات قاعدة البيانات اسم الطريقة المسؤولة عن التحقق من إعدادات المعالج وتحويل مصفوفة الإعدادات إلى سلسلة للحفظ. إذا تم تنفيذ المعالج كفئة، فستكون القيمة عبارة عن مصفوفة ("class_name"، "method_name"). إذا كانت هذه الطريقة غائبة، فسيتم حفظ مصفوفة الإعدادات في قاعدة البيانات في شكل متسلسل.
إعدادات قاعدة البيانات اسم الطريقة المسؤولة عن تحويل سلسلة إعدادات المعالج مرة أخرى إلى مصفوفة. إذا تم تنفيذ المعالج كفئة، فستكون القيمة عبارة عن مصفوفة ("class_name"، "method_name").
التوافق اسم الطريقة المسؤولة عن التحقق الإضافي من توافق ملفات تعريف المعالجة مع معلمات الطلب. إذا كانت الطريقة مفقودة، فلن يتم إجراء أي فحص إضافي. إذا تم تنفيذ المعالج كفئة، فستكون القيمة عبارة عن مصفوفة ("class_name"، "method_name").
آلة حاسبة اسم الطريقة التي يتم بها حساب تكاليف الشحن. إذا تم تنفيذ المعالج كفئة، فستكون القيمة عبارة عن مصفوفة ("class_name"، "method_name").
مظهر مجموعة من ملفات تعريف المعالجة. يجب أن يحتوي على ملف تعريف واحد على الأقل. انظر تنسيق الوصف أدناه.

وصف الملف الشخصي عبارة عن مجموعة من التنسيق التالي:

"string_profile_identifier" => المصفوفة("TITLE" => " اسم الشخصية", "الوصف" => " الملف الشخصي الوصف"، // الأوزان موضحة بالجرام "RESTRICTIONS_WEIGHT" => array( الحد الأدنى_الوزن, الوزن المحدد)، // تتم الإشارة إلى المبالغ بالعملة الأساسية للمعالج "RESTRICTIONS_SUM" => array( الحد الأدنى للطلب, max_order_amount));

إذا كانت المصفوفة RESTRICTIONS_WEIGHT أو RESTRICTIONS_SUM تحتوي على عنصر واحد، فسيتم اعتبارها الحد الأدنى للقيمة. إذا لم تكن هناك أي قيود مطلوبة، فيجب تحديد الصفيف (0).

الدالة Init() (مصفوفة الإرجاع(/* الوصف الأساسي */ "SID" => "simple"، "NAME" => "التسليم عن طريق البريد السريع"، "DESCRIPTION" => ""، "DESCRIPTION_INNER" =>
" .", "BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"), "HANDLER" => __FILE__, /* أساليب المعالج */ "DBGETSETTINGS" => array(" CDeliveryMySimple" , "GetSettings"), "DBSETSETTINGS" => array("CDeliveryMySimple", "SetSettings"), "GETCONFIG" => array("CDeliveryMySimple", "GetConfig"), "COMPABILITY" => array("CDeliveryMySimple" , " Compability")), "CALCULATOR" => array("CDeliveryMySimple", "Calculate"), /* قائمة ملفات تعريف التسليم */ "PROFILES" => array("simple" => array("TITLE" => " Delivery" ، "DESCRIPTION" => "مدة التسليم تصل إلى 3 أيام"، "RESTRICTIONS_WEIGHT" => array(0)، "RESTRICTIONS_SUM" => array(0)،)،));

معلمات التحقق من الصحة

يجب أن تقوم الطريقة المحددة بواسطة عنصر GETCONFIG بإرجاع مجموعة من عناصر النموذج:

صفيف("CONFIG_GROUPS" => صفيف(" معرف_المجموعة1" => "اسم المجموعة1", "group_id2" => "اسم المجموعة2"، /* ..................... */)، "CONFIG" => array(" parameter_identifier1" => المصفوفة("TITLE" => " المعلمة_name1", "النوع" => " parameter_type1", "افتراضي" => " default_value للمعلمة1", "المجموعة" => " parameter_group_identifier1"، "القيم" => المصفوفة(" المعلمة_قيمة1" => "name_value1_parameter1", "value2_parameter1" => "name_value2_parameter1", /* ....................... */)), /* ........................ */))

يتم عرض مجموعات المعلمات الموضحة في عنصر الصفيف باستخدام مفتاح "CONFIG_GROUPS" كعلامات تبويب منفصلة في النموذج لتحرير معلمات المعالج التي تحتوي على المعلمات المخصصة لهذه المجموعة. يحدد عنصر الصفيف الذي يحتوي على مفتاح "CONFIG" قائمة من المعلمات. يمكن أن يأخذ نوع المعلمة إحدى القيم التالية:

  • خيط- حقل إدخال النص
  • كلمة المرور- حقل إدخال كلمة المرور
  • خانة الاختيار- عنصر من نوع "مربع الاختيار" بالقيمة "Y"
  • مذياع
  • اسقاط- مجموعة من الخيارات على شكل قائمة منسدلة
  • تحديد متعدد- مجموعة من الخيارات على شكل قائمة ذات اختيارات متعددة
  • مذياع- مجموعة من الخيارات على شكل أزرار اختيار

بالنسبة لأنواع المعلمات، يعني ذلك الاختيار من بين عدة خيارات للقيمة ( اسقاط, تحديد متعددو مذياع) يتم تحديد قائمة القيم بواسطة عنصر من المصفوفة الوصفية باستخدام المفتاح "VALUES". بالنسبة لأنواع المعلمات الأخرى، يتم تجاهل هذا العنصر.

الدالة GetConfig() ( $arConfig = array("CONFIG_GROUPS" => array("all" => "تكلفة التسليم"،), "CONFIG" => array(),); // معلمات المعالج في هذه الحالة هي قيم التكلفة التسليم إلى مجموعات مواقع مختلفة. // لهذا سنقوم بإنشاء قائمة من المعلمات بناءً على قائمة المجموعات $dbLocationGroups = CSaleLocationGroup::GetList(); while ($arLocationGroup = $dbLocationGroups->Fetch()) ( $arConfig[ "CONFIG"]["price_".$arLocationGroup["ID"]] = array("TYPE" => "STRING", "DEFAULT" => "", "TITLE" => "تكلفة التسليم إلى المجموعة "\" " .$arLocationGroup[" NAME"]."\" " .(".COption::GetOptionString("sale"، "default_currency"، "RUB").")"، "GROUP" => "all"،) ;) إرجاع $arConfig ;

معلمات المعالجة

تتطلب معالجة معلمات المعالج طريقتين محددتين في الوصف بواسطة المعلمات DBSETSETTINGS وDBGETSETTINGS. يتلقى الأول كمدخل مجموعة من قيم المعلمات للنموذج " parameter_identifier" => "المعلمة_قيمة" ويجب أن يُرجع تمثيل السلسلة الخاصة بهم. والثاني هو إجراء التحويل العكسي. يمكن لكلا الطريقتين أيضًا إجراء عمليات معالجة عشوائية لقيم المعلمات.

Function SetSettings($arSettings) ( // تحقق من قائمة قيم القيم. قم بإزالة القيم الفارغة من القائمة. foreach ($arSettings as $key => $value) ( ​​​​if (strlen($value) > 0) $arSettings[$key] = doubleval($value); else unset($arSettings[$key]); // إرجاع القيم كمصفوفة متسلسلة // في حالة وجود قائمة إعدادات أبسط، يكون التسلسل أبسط يمكن استخدام الطرق. وظيفة GetSettings($strSettings) ( // إرجاع مجموعة الإعدادات غير التسلسلية return unserialize($strSettings); )

التحقق من التوافق

يتم التحقق من توافق ملفات تعريف المعالج مع الطلب بالطريقة المحددة في الوصف بواسطة معلمة "التوافق". تأخذ هذه الطريقة معلمتين كمدخلات - مصفوفة وصفية للترتيب ومصفوفة من إعدادات المعالج. تتوقع استجابة الطريقة مصفوفة تحتوي على معرفات ملفات تعريف التسليم المناسبة لطلب معين. يتم إجراء الفحص المحدد بواسطة قيم "RESTRICTIONS_WEIGHT" و"RESTRICTIONS_SUM" في إعدادات الملف الشخصي خارج المعالج وهو غير مطلوب هنا. تنسيق البيانات المقبولة كمدخلات هو كما يلي:

المعلمة الأولى - معلومات الطلب - عبارة عن مصفوفة تحتوي على المفاتيح التالية:

المعلمة الثانية هي قيمة المصفوفة المحددة بواسطة العنصر باستخدام مفتاح "CONFIG" في المعالج، إلى كل عنصر تضاف إليه قيمة المعلمة مع مفتاح "VALUE" .

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

// يقدم طريقة مساعدة تحدد مجموعة مواقع وترجع تكلفة تلك المجموعة. الدالة __GetLocationPrice($LOCATION_ID, $arConfig) (// احصل على قائمة بالمجموعات للموقع الذي تم تمريره $dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_ID" => $LOCATION_ID)); while ($arLocationGroup = $dbLocationGroups->Fetch()) { if (array_key_exists("price_".$arLocationGroup["LOCATION_GROUP_ID"], $arConfig) && strlen($arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)) { // если есть непустая запись в массиве настроек для данной группы, вернем ее значение return $arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"]; } } // если не найдено подходящих записей, вернем false return false; } // метод проверки совместимости в данном случае практически аналогичен рассчету стоимости function Compability($arOrder, $arConfig) { // проверим наличие стоимости доставки $price = CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig); if ($price === false) return array(); // если стоимость не найдено, вернем пустой массив - не подходит ни один профиль else return array("simple"); // в противном случае вернем массив, содержащий идентфиикатор единственного профиля доставки } !}

معالج

تتلقى الطريقة الرئيسية لحساب تكاليف التسليم معلمات الإدخال التالية:

  • معرف ملف تعريف التسليم؛
  • مجموعة إعدادات معالج التسليم؛
  • ترتيب مجموعة وصفية.
  • خطوة الحساب الحالية.
  • البيانات المؤقتة المنقولة من خطوة الحساب السابقة.

يجب أن تكون مخرجات المعالج هي تكلفة التسليم بالعملة المحددة في المعلمات، أو مصفوفة من البنية التالية:

مفتاح وصف
نتيجة معرف الاستجابة. القيم الممكنة:
  • "نعم" - تم حساب تكلفة التسليم بنجاح؛
  • "خطأ" - حدث خطأ أثناء عملية الحساب؛
  • "الخطوة التالية" - عليك الانتقال إلى الخطوة التالية لمواصلة الحساب.
قيمة قيمة تكلفة التسليم بالعملة المحددة في المعلمات. (النتيجة = "موافق")
عبور مدة التسليم بالأيام (النتيجة = "موافق"). في حالة الغياب، لا يتم عرض المدة.
الفترة من خطوط التوصيل لخدمات التوصيل الآلي. من عدد الأيام المحدد . ضروري لنقل أوقات التسليم إلى Yandex.market. تستخدم عند تطوير خدمات التوصيل الخاصة بك.
فترة إلى خطوط التسليم لخدمات التوصيل الآلي. حتى العدد المحدد من الأيام. ضروري لنقل أوقات التسليم إلى Yandex.market. تستخدم عند تطوير خدمات التوصيل الخاصة بك.
نص نص خطأ أو نص مصاحب للانتقال إلى الخطوة التالية (RESULT = ("ERROR"|"NEXT_STEP")).
درجة حرارة سلسلة تحتوي على بيانات وسيطة تم تمريرها إلى الخطوة التالية (RESULT = "NEXT_STEP").

في المثال الذي نصفه، لا يتضمن ذلك عملية متعددة الخطوات، وبالتالي فإن الحساب بسيط.

دالة حساب($profile, $arConfig, $arOrder, $STEP, $TEMP = false) ( // تم تعريف طريقة حساب الأداة المساعدة أعلاه، نحتاج فقط إلى إعادة توجيه القيمة التي ترجعها إلى الإخراج. return array("RESULT" => "موافق"، "VALUE" => CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig))

تكامل المعالج

يتم تعيين المسار إلى ملفات المعالج المتصلة تلقائيًا في إعدادات وحدة "المتجر عبر الإنترنت". المسار الافتراضي هو /bitrix/php_interface/include/sale_delivery/ ويجب أن تحتوي هذه الملفات على بادئة توصيل_وإلا سيتم تجاهلهم. إذا اكتشف النظام ملفًا يحمل نفس اسم النظام، فسيتم توصيله بدلاً من اسم النظام. يتم تمكين التسليم الآلي في الملف عن طريق تعيين الطريقة الوصفية كمعالج للحدث onSaleDeliveryHandlersBuildList.

مثال

تلخيصًا لكل ما سبق، لنقم بإنشاء معالج تسليم بسيط. سيتم وضع فئة المعالج في الملف /bitrix/php_interface/include/sale_delivery/delivery_mysimple.php

"simple"، "NAME" => "التسليم عن طريق البريد السريع"، "DESCRIPTION" => ""، "DESCRIPTION_INNER" => "معالج بسيط لتسليم البريد السريع. للعمل، " ." يجب أن تكون مجموعة مواقع واحدة على الأقل موجودة عند إعداد المعالج، يجب عليك تحديد ". تكلفة التسليم الثابتة لكل مجموعة مواقع. ولمنع ".group من المشاركة في المعالجة، اترك حقل التكلفة لهذه المجموعة فارغًا." "
" ."" .تحرير مجموعات المواقع " . .", "BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"), "HANDLER" => __FILE__, /* طرق المعالج */ "DBGETSETTINGS" => array("CDeliveryMySimple", "GetSettings"), "DBSETSETTINGS" => array("CDeliveryMySimple", "SetSettings"), "GETCONFIG" => array("CDeliveryMySimple", "GetConfig"), "COMPABILITY" => array("CDeliveryMySimple", "Compability "), "CALCULATOR" => array("CDeliveryMySimple", "Calculate"), /* قائمة ملفات تعريف التسليم */ "PROFILES" => array("simple" => array("TITLE" => "delivery", " DESCRIPTION" => "مدة التسليم تصل إلى 3 أيام"، "RESTRICTIONS_WEIGHT" => array(0)، // بلا قيود "RESTRICTIONS_SUM" => array(0)، // بلا قيود)،)); // وظيفة إعدادات المعالج GetConfig() ( $arConfig = array("CONFIG_GROUPS" => array("all" => "تكلفة التسليم"،), "CONFIG" => array(),); // إعدادات المعالج في هذه الحالة هي تسليم قيم التكلفة إلى مجموعات مواقع مختلفة // لهذا سنقوم بإنشاء قائمة بالإعدادات بناءً على قائمة المجموعات $dbLocationGroups = CSaleLocationGroup::GetList(); while ($arLocationGroup = $dbLocationGroups->Fetch()) ( $arConfig["CONFIG"]["price_".$arLocationGroup["ID"]] = array("TYPE" => "STRING", "DEFAULT" = > ""، "TITLE" => "تكلفة التسليم إلى المجموعة \"" .$arLocationGroup["NAME"].."\" " ."(".COption::GetOptionString("sale"، "default_currency"، " RUB ").")"، "GROUP" => "all"،)؛ ) return $arConfig; ) // إعداد الإعدادات للدخول إلى قاعدة البيانات function SetSettings($arSettings) ( // تحقق من قائمة قيم التكلفة. قم بإزالة القيم الفارغة من القائمة. foreach ($arSettings as $key => $value) ( ​​​​if (strlen($value) > 0) $arSettings[$key] = doubleval($value); else unset($arSettings[$key]); // إرجاع القيم كمصفوفة متسلسلة // في الحالة من قائمة إعدادات أبسط، يمكن استخدام طرق أبسط للتسلسل return serialize($arSettings) // إعداد الإعدادات التي تم الحصول عليها من وظيفة قاعدة البيانات GetSettings($strSettings) (// إرجاع مجموعة الإعدادات غير التسلسلية return unserialize($). strSettings)؛ // تقديم طريقة خدمة تحدد مجموعة الموقع وتعيد القيمة لهذه المجموعة. الدالة __GetLocationPrice($LOCATION_ID, $arConfig) (// احصل على قائمة بالمجموعات للموقع الذي تم تمريره $dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_ID" => $LOCATION_ID)); while ($arLocationGroup = $dbLocationGroups-> جلب() ) (إذا (array_key_exists("price_". $arLocationGroup["LOCATION_GROUP_ID"], $arConfig) && strlen($arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)) ( // إذا كان هناك إدخال غير فارغ في مصفوفة الإعدادات لهذه المجموعة، قم بإرجاع قيمتها return $arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] ) ) // إذا لم يتم العثور على سجلات مطابقة، قم بإرجاع false return false; ) // طريقة التحقق من التوافق في هذه الحالة تشبه تقريبًا حساب دالة التكلفة Compability($arOrder, $arConfig) (// التحقق من وجود تكاليف التسليم $price = CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO "], $arConfig); إذا ($price === false) قم بإرجاع array(); // إذا لم يتم العثور على السعر، قم بإرجاع مصفوفة فارغة - لا يوجد ملف تعريف مطابق وإلا قم بإرجاع array("simple"); // خلاف ذلك ، قم بإرجاع مصفوفة تحتوي على معرف ملف تعريف واحد (تسليم) // في الواقع، حساب دالة التكلفة Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false) ( // تم تعريف طريقة حساب الأداة المساعدة أعلاه، نحتاج فقط إلى إعادة توجيه القيمة التي ترجعها إلى الإخراج return array(" RESULT" => "OK", "VALUE" => CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig)); ) ) // قم بتعيين أسلوب CDeliveryMySimple::Init كمعالج للأحداث AddEventHandler("sale" , "onSaleDeliveryHandlersBuildList", array("CDeliveryMySimple", "Init")); ?>

بعد فوات الأوان

بعض النصائح النهائية:

  • إذا كان المعالج الخاص بك يستخدم أي حسابات كثيفة الاستخدام للموارد، أو مكالمات قاعدة بيانات، أو طلبات إلى خوادم بعيدة، وما إلى ذلك، فعندئذٍ بشكل قاطعيوصى باستخدام خيار أو آخر من خيارات التخزين المؤقت للنتائج، والذي يتم تنفيذه بطريقة يتم من خلالها تذكر النتائج على الأقل لترتيب يحتوي على هذه المعلمات. يعد هذا ضروريًا لأنه أثناء عملية تقديم الطلب ومعالجته، قد يتم تقديم طلب إلى المعالج لحساب تكلفة الطلب عدة مرات. تستخدم المعالجات المتوفرة آلية تخزين مؤقت مُدارة، تم تكوينها مع الأخذ في الاعتبار تفاصيل خوارزمية حساب التكلفة لخدمة تسليم معينة.
  • لتخصيص معالج النظام، ما عليك سوى نسخ ملفه (مع الملفات المصاحبة، الموجودة عادةً في دليل يحمل نفس الاسم) إلى الدليل /bitrix/php_interface/include/sale_deivery/، مع الحفاظ على الاسم. في هذه الحالة سيتم الاتصال بدلاً منالنظامية.

تحتوي الوحدة على وظيفة حساب تكاليف التسليم تلقائيًا بناءً على بيانات المنتج وعنوان التسليم.

لحساب تكلفة تسليم المواد البريدية، يتم استخدام خدمة postcalc.ru. يرجى ملاحظة أنه في الوضع المجاني، يكون لهذه الخدمة حد لعدد الطلبات يوميًا. إذا كنت تحتاج إلى أكثر من 500 طلب يوميًا، فستحتاج إلى الترقية إلى الخطة المدفوعة. يمكنك الحصول على معلومات مفصلة حول شروط استخدام خدمة postcalc.ru من خلال النقر على الرابط.


لإضافة خدمة توصيل البريد الروسي إلى موقع الويب الخاص بك مع إمكانية حساب التكاليف تلقائيًا، اتبع الخطوات التالية:
1. في اللوحة الإدارية لموقعك، انتقل إلى الإدارة > المتجر > الإعدادات > خدمات التوصيل.

2. في صفحة قائمة خدمات التوصيل، اضغط على زر "إضافة". في القائمة المنسدلة التي تظهر، حدد النوع - "خدمة التسليم الآلي".

3. في الصفحة التي يتم فتحها لإنشاء خدمة توصيل جديدة، انتقل إلى علامة التبويب "إعدادات المعالج".
4. في حقل "خدمة التوصيل"، حدد "البريد الروسي" في القائمة المنسدلة واحفظ التحديد بالنقر فوق الزر "تطبيق".

5. بعد حفظ خدمة التوصيل التي تم إنشاؤها، ستظهر علامات تبويب إضافية في صفحة التعديل:

  • خيارات
  • مظهر
  • قيود
علامة تبويب الخيارات


تحتوي علامة التبويب هذه على المعلمات التالية:

  • إضافة إلى السعر - في هذا الحقل يمكنك تحديد مقدار العلامات الإضافية التي ستتم إضافتها إلى تكلفة التسليم.
  • التقريب إلى 10 - حدد هذا الخيار لتمكين تقريب تكاليف الشحن.
  • عرض عنوان البريد - إذا تم تحديد هذا الخيار، فسيتم إنشاء عنوان مكتب بريد المستلم. وفي المستقبل، يمكن عرضه على صفحة الطلب.
  • عرض أرقام هواتف البريد - إذا تم تمكين الخيار، فسيتم إنشاء رقم هاتف مكتب البريد الذي سيتم تسليم العنصر إليه.

عند تحديد خياري "عرض عنوان البريد الإلكتروني" و"عرض أرقام هواتف البريد الإلكتروني"، سيتم إنشاء المتغير $arResult["RESULT"]["TEXT"]. يمكنك عرض هذه المعلومات في الجزء العام عن طريق إدخال الكود "echo $arResult["RESULT"]["TEXT"];" في قالب المكون الذي تستخدمه لعرض معلومات تكلفة الشحن.


علامة تبويب الملفات الشخصية




تحتوي علامة التبويب هذه على ملفات تعريف الوحدة النمطية المثبتة مسبقًا "البريد الروسي/EMS - الحساب والتتبع". لديك حق الوصول إلى المجموعة الكاملة من الإجراءات القياسية في ملفات تعريف خدمة التوصيل: النسخ والتحرير والحذف. تتوفر الإجراءات من قائمة الإجراءات الفردية لإدخالات قائمة ملفات التعريف. هذه الوظيفة قياسية في نظام Bitrix. يمكنك الحصول على معلومات أكثر تفصيلاً على الصفحة المقابلة لوثائق نظام Bitrix.

علامة التبويب "القيود".




تحتوي علامة التبويب هذه على إعدادات وظيفة Bitrix القياسية، والتي تتيح لك إدخال قيود على استخدام خدمة التسليم المخصصة.

يرجى ملاحظة أنه لإجراء الحسابات الصحيحة لتكلفة الشحنات باستخدام خدمة postcalc.ru، من الضروري إرسال بيانات عن الوزن والقيمة المقدرة للبضائع المدرجة في الشحنة. تأكد في لوحة الإدارة بموقعك من إدخال هذه البيانات بشكل صحيح لمنتجات الكتالوج. أيضًا، بالنسبة للحسابات، يلزم الحصول على معلومات حول عنوان تسليم العنصر، بالإضافة إلى عنوان المرسل. يتم إدخال المعلومات الخاصة بالمرسل في الواجهة الإدارية لمتجرك في الإدارة - الإعدادات - إعدادات الوحدة - المتجر الإلكتروني. بعد ذلك، في صفحة إعدادات المتجر، انتقل إلى علامة التبويب "عنوان المتجر". لحساب تكلفة الشحنات بشكل صحيح، املأ حقل "الفهرس".



الخيارات التالية للحصول على معلومات حول عنوان التسليم ممكنة:

  • من حقل "الفهرس" في نموذج التسجيل - الخيار الموصى به.
  • من خاصية المدينة التي تم الحصول عليها من حقل الموقع في نموذج الخروج
  • من خاصية "الرمز البريدي" التي تم الحصول عليها من حقل "الموقع" في نموذج الخروج - إذا كانت هذه الخاصية مملوءة بالموقع.

نوصي بتوفير حقل "فهرس" منفصل وإلزامي في نموذج الطلب. في هذه الحالة، سيتعين على المشتري أن يشير بوضوح إلى الرمز البريدي المطلوب الشحنة إليه، مما سيتجنب الأخطاء المحتملة عند حساب تكلفة الشحنة.