Импортирайте оферта и добавете продукт в количката в Magento 2

Създаване на външен скрипт за импортиране на Quotes/Cart (друг CMS). Моят код може да добави оферта, но не и да създаде количка. Необходимо е всички цитирани артикули да се показват, когато потребителят влезе в своя акаунт. Активирах и постоянната количка.

   class QuoteMove extends \Magento\Framework\App\Http implements \Magento\Framework\AppInterface 


  public function __construct(
    \Magento\Framework\ObjectManagerInterface $objectManager,
    \Magento\Framework\Event\Manager $eventManager,
    \Magento\Framework\App\AreaList $areaList,
    \Magento\Framework\App\Request\Http $request,
    \Magento\Framework\App\Response\Http $response,
    \Magento\Framework\ObjectManager\ConfigLoaderInterface $config,
    \Magento\Framework\App\State $state,
    \Magento\Framework\Filesystem $fileSystem,
    \Magento\Framework\Registry $registry,
    \Magento\Store\Model\Store $store,
    \Psr\Log\LoggerInterface $logger,
    \Magento\Framework\File\Csv $csvProcessor,
    \Magento\Quote\Model\QuoteFactory $quote,
    \Magento\Catalog\Model\Product $product
)


                $quotes = []; 
                $email = [email protected];
                $qty = xxx ;
                $customerId  = xxx ;

                $this->customer = $this->getCustomerByEmail($email);
                    $customerId = $this->customer->getId();

                    $quote = $this->quotes[$customerId];
                    $quote->setCustomerNote(_NOTES_);
                    $quote->setCouponCode(_COUPON_CODE_);

                    $product = $this->_product->load('PRODUCT_ID');  //PRODUCT_ID= xx
                    $params = [];
                    $params['product'] = $productId;
                    $params['qty'] = intval($qty);
                    $options = [];
                    $options[_ATTRIBUTE_] = _VALUE_]   ;
                    $params['super_attribute'] = $options;

                    $config = new \Magento\Framework\DataObject();
                    $config->setItem($params);
                    $quote->addProduct($product,$config);
                    $quote->save();      

                How to Save items in cart now ??

Така че, когато потребителят влезе в сметката, може да преглежда артикулите в количката.


person Vikram    schedule 30.08.2017    source източник


Отговори (2)


Ето как трябва да добавите продукт в количката.

public function __construct(
 \Magento\Catalog\Model\ProductRepository $productRepository, 
\Magento\Checkout\Model\Cart $cart, 
\Magento\Framework\Data\Form\FormKey $formKey){
            $this->_productRepository = $productRepository;
            $this->_cart = $cart;
            $this->formKey = $formKey;
        }



$params = array(
                'product' => --productID--,
                'qty' => $product->getQty()
            );
    $_product = $this->_productRepository->getById(--productID--);
        $this->_cart->addProduct($_product,$params);
                    $this->_cart->save();

След като продуктът бъде добавен в количката, можете да го запазите в офертата.

person Pavan Kumar    schedule 31.08.2017
comment
Този код е за външно инжектиране на количката в акаунта на клиента, когато той е офлайн, така че когато клиентът влезе, да може да види артикула в количката. напр.: добавяме към количката артикул и след това излизаме и влизаме отново, като е наличен в количката. ПО друг начин импортирайте оферта в magento2 от стара DB или друга DB. Вашият код не се вписва в това условие. - person Vikram; 31.08.2017

Ето отговора, с който работих:

Промяна на $quote->save(); към $quote->collectTotals()->save();

след това заредете идентификатора на офертата и актуализирайте датата на полето updated_at до същата като датата на създаване. Сега влезте и проверете количката си. Артикулът ще се разглежда там.

person Vikram    schedule 02.09.2017