Почему функция Magento cart.create делает корзину неактивной? - PullRequest
4 голосов
/ 01 августа 2011

Я возился с API-интерфейсом корзины покупок Magento (Magento v.1.5) и обнаружил, что при создании корзины (и добавлении продуктов) значение «is_active» в таблице «sales_flat_quote» устанавливается равным «0».».Напротив, если вы используете кнопку «Добавить в корзину» в интерфейсе магазина, значение «is_active» устанавливается равным «1».

Я немного покопался и обнаружил, что API устанавливает «is_active» вapp / code / core / Mage / Checkout / Model / Cart / Api.php.

Вот соответствующий блок кода:

public function create($store = null)
{
    $storeId = $this->_getStoreId($store);

    try {
        /*@var $quote Mage_Sales_Model_Quote*/
        $quote = Mage::getModel('sales/quote');
        $quote->setStoreId($storeId)
            ->setIsActive(false)
            ->setIsMultiShipping(false)
            ->save();
    } catch (Mage_Core_Exception $e) {
        $this->_fault('create_quote_fault', $e->getMessage());
    }
    return (int) $quote->getId();
}

Так что я не уверен, что цельсделать это ложным.Есть ли причина для различий в поведении между интерфейсом магазина и API?Или есть что-то дополнительное, что нужно сделать через API, чтобы активировать корзину?

1 Ответ

2 голосов
/ 24 августа 2011

Моя лучшая догадка, и это предположение, поскольку я не могу прочесть мысли первоначальных разработчиков, если бы они пытались предотвратить появление сгенерированных API цитат в отчетах о брошенных корзинах.

Флаг is_active используется для указания активной котировки для клиента, и у покупателя должна быть только одна активная квота. Флаг также используется для определения того, когда цитата может быть автоматически удалена из системы. Теория заключается в том, что если цитата неактивна, она преобразуется в заказ и больше не нужна. Если API корзины Mage_Checkout устанавливает флаг в значение false, то предложение подлежит автоматической очистке, возможно, до того, как вы преобразовали его в заказ. Установив флаг в false, вы также не сможете использовать API для создания реальной цитаты, которую клиент может использовать в веб-интерфейсе.

Итак, я бы сказал, что если вы используете API для создания предложения для клиента, вам необходимо добавить метод publish (). Если вы используете API для изменения существующего предложения клиента, вы не столкнетесь с проблемой, поскольку она появляется только при создании нового предложения.

В любом случае, я лично считаю, что текущее поведение является ошибкой из-за процедур очистки, использующих этот флаг для указания удаляемых кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...