Pregunta

Obtuve el código que trabaja para crear un objeto de cotización y un objeto de elemento de cotización, y puedo crear cotización con éxito que podría confirmarlo marcando la base de datos, también creé cookie llamada Front-End.Todo lo que necesito ahora es asignar la cita creada al usuario invitado, de modo que pueda permitir que el usuario lo pasará como invitado, pero no pudo asignar el carrito al usuario de los invitados.

Solicitud de artículos en el carrito provendrá del sitio de terceros a través de JSON Solicitud que he descodificado y en bucle a través de.

Aquí está el 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 />';
}

¿Fue útil?

Solución

Finalmente descubrió el problema, espero que ayude a alguien, aquí está la respuesta.

El código dado anteriormente en la sección de preguntas funciona perfectamente, todo lo que tiene que hacer es colocar el archivo personalizado en la carpeta raíz de su instalación de Magento, si crea una carpeta y coloca este código, no funciona.Es necesario que el archivo de código tenga que estar en la raíz.

Otros consejos

Dado que este es un pago de conjeturas, la única forma en que puedo pensar es permitir que el cliente vuelva a cargar la cita en su navegador.Por lo tanto, tendría que enviarles un vínculo con la ID de la cotización o permitirles ingresar la ID de cotización en su sitio.

para volver a cargar la cotización en su 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 bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top