Pergunta

Coloquei o código funcionando para criar o objeto de cotação e o objeto de item de cotação, e consegui criar a cotação com sucesso, o que pude confirmar verificando o banco de dados, também criei um cookie chamado front-end.Tudo o que preciso agora é atribuir a cotação criada ao usuário convidado, para que eu possa permitir que o usuário finalize a compra como convidado, mas não consiga atribuir o carrinho ao usuário convidado.

A solicitação de itens no carrinho virá de um site de terceiros por meio de uma solicitação JSON que decodifiquei e fiz um loop.

Aqui está o código

session_name("frontend");

session_start();

$cartInfo = $_GET['items'];

require_once '../app/Mage.php'; 

Mage::init('default');

$session = Mage::getSingleton('customer/session');

Mage::getSingleton('checkout/cart')->getQuote();

foreach ($cartArray as $key=> $value) {
        $productId = $key;
        $productQuantity = $value;
        $productModel = Mage::getSingleton('catalog/product');
        $productObj = $productModel->load($productId);
        if (!$quoteObj) {
            $quoteObj = new Mage_Sales_Model_Quote();
        }

        $store_id = Mage::app()->getStore()->getId();
        $storeObj = $quoteObj->getStore()->load($store_id);
        $quoteObj->setStore($storeObj);

        $quoteItem = Mage::getModel('sales/quote_item')->setProduct($productObj);
        $quoteItem->setQuote($quoteObj);
        $quoteItem->setQty($productQuantity);
        $quoteItem->setStoreId($store_id);

        $quoteObj->addItem($quoteItem);
        $quoteObj->setStoreId($store_id);
        $quoteObj->collectTotals();
        $quoteObj->setCustomerId(null);
        $quoteObj->save();
        $quoteId = $quoteObj->entity_id;
        echo $quoteObj->entity_id.'**<br />';
        echo $quoteItem->item_id.'---<br />';
}
Foi útil?

Solução

Finalmente descobri o problema, espero que ajude alguém, aqui está a resposta.

O código fornecido acima na seção de perguntas funciona perfeitamente, tudo que você precisa fazer é colocar o arquivo customizado na pasta raiz da sua instalação do magento, se você criar uma pasta e colocar este código, ele não funcionará.É obrigatório que o arquivo de código esteja na raiz.

Outras dicas

Como se trata de uma verificação de suposição, a única maneira que consigo pensar é permitir que o cliente recarregue a cotação em seu navegador.Portanto, você precisará enviar um link por e-mail com o ID da cotação ou permitir que eles insiram o ID da cotação em seu site.

Para recarregar cotação em seu controlador

 $id = $this->getRequest()->getParam('quote_id');
 $store_id = $this->getRequest()->getParam('store_id');

 ....   
 $this->_getSession()->clear();
 $this->_getQuote()
      ->setQuoteId($id)
      ->setStoreId($store_id)
      ->setIsActive(true)
      ->load($id);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top