سؤال

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

$order = $observer->getEvent()->getOrder();
$items = $order->getAllItems();
$hasBackorderedItems = false;
foreach ($items as $item) {
     if ($item->getQtyBackordered() > 0) {
        $hasBackorderedItems = true;
        break;
     }
}

if ($hasBackorderedItems) {
    // I'm Stuck here. I need to change the current order status to quarantined (which is mapped to the state processing)
}
هل كانت مفيدة؟

المحلول

أعتقد أنك ترتبط بحدث يتم تشغيله عند الطلب يحفظ, ، لا sales_order_place_after, ، والذي يتم تشغيله مرة واحدة بعد اكتمال الطلب.إذا قمت بذلك في السابق، فسيكون لديك حلقة لا نهائية، حيث سيؤدي كل تحديث لحالة الطلب إلى تشغيل المراقب الخاص بك مرارًا وتكرارًا.يبدو أن الأخير قد يكون هو ما يحدث.

تبين لنا الخاص بك config.xml.يحاول sales_order_place_after إذا كنت لا تستخدمه بالفعل.

نصائح أخرى

p> / stapp/design/frontend/base/default/template/checkout/success.phtml (أو /site/app/design/frontend/default/yourtheme/template/checkout/success.phtml)

// ترتيب الدولة هنا

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top