Почему некоторые методы доставки недоступны для некоторых клиентов?

magento.stackexchange https://magento.stackexchange.com/questions/4631

Вопрос

У меня есть 4 метода доставки.

Старый клиент получает только 2 метода. Я создал одного и того же клиента с другим электронным письмом. Он получает все 4 метода доставки.

Я погрузился в код и таблицу БД sales_flat_quote_shipping_rate.

Сортировка по адресу address_id У нас есть: для старого клиента: 2 записи о ставках; Для того же нового клиента: 4 записи о цене.

Почему это происходит? А где создается запись о ставках?

Обновление 1:

Я не зависит от адреса. Это зависит от продукта. Если продукт заполнил вес, клиент не может увидеть некоторые методы доставки. Теперь вопрос в том, почему?)

Это было полезно?

Решение

Причина была в proccessAdditionalValidation функционировать в Mage_Shipping_Model_Carrier_Abstract учебный класс:

    /**
         * Processing additional validation to check is carrier applicable.
         *
         * @param Mage_Shipping_Model_Rate_Request $request
         * @return Mage_Shipping_Model_Carrier_Abstract|Mage_Shipping_Model_Rate_Result_Error|boolean
         */
        public function proccessAdditionalValidation(Mage_Shipping_Model_Rate_Request $request)
        {
            $maxAllowedWeight = (float) $this->getConfigData('max_package_weight');
            $error = null;
            $showMethod = $this->getConfigData('showmethod');
            foreach ($request->getAllItems() as $item) {
                if ($item->getProduct() && $item->getProduct()->getId()) {

// here I got true

                    if ($item->getProduct()->getWeight() > $maxAllowedWeight) {                         $error = Mage::getModel('shipping/rate_result_error');
                        $error->setCarrier($this->_code)
                            ->setCarrierTitle($this->getConfigData('title'));
                        $errorMsg = $this->getConfigData('specificerrmsg');
                        $error->setErrorMessage($errorMsg?$errorMsg:Mage::helper('shipping')->__('The shipping module is not available.'));
                        break;
                    }
                }
            }
            if (null !== $error && $showMethod) {
                return $error;
            } elseif (null !== $error) {
                return false;
            }
            return $this;
        }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top