গ্রাহকের উক্তির সাথে অতিথি উদ্ধৃতিটি মার্জ করুন (যদি কাস্টমার লগইন করেন) মাজেন্টো 2 বাকী এপিআই


9

কার্টে যদি 2 টি আইটেম গ্রাহক লগইন করে তবে উভয় আইটেমের কার্ট যুক্ত করা উচিত, উভয়ই উদ্ধৃতি (লগইনের আগে এবং লগইনের পরে) একীভূত হয়ে চূড়ান্ত উক্তি তৈরি করুন যা গ্রাহক উক্তির সমস্ত আইটেম ধারণ করে

রেফারেন্স লিঙ্কগুলি যা আমি গুগলে পেয়েছি

https://magento.stackexchange.com/a/62481

https://magento.stackexchange.com/a/30460


প্রশ্ন আরও স্পষ্ট করুন। কারণ ম্যাজেন্টো ২.২ ডিফল্ট কার্যকারিতা সরবরাহ করে।
যোগেশ

গ্রাহক লগইন যদি গ্রাহক কার্টে কার্ট আইটেম যুক্ত করে থাকে তবে এটি সম্ভব, দয়া করে ব্যাখ্যা করুন, আরএসটি এপিআই ব্যবহার করে।
নগেন্দ্র কোদি

@Yogesh আমার পণ্য এপিআই আয় পণ্য, যদি আমি গ্রাহকের আমি ভুল পাচ্ছি দিয়ে চেষ্টা, আমার URL: 192.168.1.65/anusthana/api/rest/customers ত্রুটি: snag.gy/0jbhTr.jpg তুমি কি আমাকে সাহায্য করতে পারেন
zus

উত্তর:


2

ডিফল্টরূপে, এপিআই সাইডের ম্যাজেন্টো 2 গ্রাহক লগইন করার সময় গ্রাহক কার্ডের সাথে অতিথি কার্টটি মার্জ করার জন্য কোনও এপিআই সরবরাহ করে না।

তবে আপনি গ্রাহক কার্ট দিয়ে গেস্ট কার্ট প্রতিস্থাপন করতে পারেন।

API : (/V1/carts/:cartId) 
File : vendor/magento/module-quote/Model/QuoteManagement.php
Function : public function assignCustomer($cartId, $customerId, $storeId)

তবে আপনি যদি কার্যকারিতাটি মার্জ কার্ট লাইভ ম্যাজেন্টো ওয়েব সাইডটি বিকাশ করতে চান তবে আপনাকে কাস্টম এপিআই তৈরি করতে হবে।


0

আপনার কাস্টম এক্সটেনশনে আপনাকে "প্রায়" প্লাগইন তৈরি করতে হবে।

অ্যাপ্লিকেশন / কোড / MageKnight / উক্তি জন্য / etc / module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="MageKnight_Quote">
        <sequence>
            <module name="Magento_Quote"/>            
        </sequence>
    </module>
</config>

অ্যাপ্লিকেশন / কোড / MageKnight / উক্তি / registration.php

<?php

use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'MageKnight_Quote', __DIR__);

অ্যাপ্লিকেশন / কোড / MageKnight / উক্তি জন্য / etc / di.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <type name="Magento\Quote\Api\CartManagementInterface">
        <plugin name="mergeGuestCart"
                type="MageKnight\Quote\Plugin\Model\CartManagement"/>
    </type>
</config>

অ্যাপ্লিকেশন / কোড / MageKnight / উক্তি / প্লাগইন / মডেল / CartManagement.php

<?php

namespace MageKnight\Quote\Plugin\Model;

use Magento\Framework\Exception\StateException;

/**
 * Class CartManagement
 */
class CartManagement
{
    /**
     * @var \Magento\Quote\Api\CartRepositoryInterface
     */
    protected $quoteRepository;

    /**
     * @var \Magento\Customer\Api\CustomerRepositoryInterface
     */
    protected $customerRepository;

    /**
     * @var \Magento\Customer\Model\CustomerFactory
     */
    protected $customerModelFactory;

    /**
     * @var \Magento\Quote\Model\QuoteIdMaskFactory
     */
    private $quoteIdMaskFactory;

    /**
     * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository
     * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
     * @param \Magento\Customer\Model\CustomerFactory $customerModelFactory
     * @param \Magento\Quote\Model\QuoteIdMaskFactory $quoteIdMaskFactory
     */
    public function __construct(
        \Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
        \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
        \Magento\Customer\Model\CustomerFactory $customerModelFactory,
        \Magento\Quote\Model\QuoteIdMaskFactory $quoteIdMaskFactory
    ) {
        $this->quoteRepository = $quoteRepository;
        $this->customerRepository = $customerRepository;
        $this->customerModelFactory = $customerModelFactory;
        $this->quoteIdMaskFactory = $quoteIdMaskFactory;
    }

    /**
     * Around plugin to assign customer to guest cart
     *
     * @param \Magento\Quote\Api\CartManagementInterface $subject
     * @param callable $proceed
     * @param int $cartId The cart ID.
     * @param int $customerId The customer ID.
     * @param int $storeId
     * @return boolean
     */
    public function aroundAssignCustomer(
        \Magento\Quote\Api\CartManagementInterface $subject,
        callable $proceed,
        $cartId,
        $customerId,
        $storeId
    ) {
        $quote = $this->quoteRepository->getActive($cartId);
        $customer = $this->customerRepository->getById($customerId);
        $customerModel = $this->customerModelFactory->create();

        if (!in_array($storeId, $customerModel->load($customerId)->getSharedStoreIds())) {
            throw new StateException(
                __("The customer can't be assigned to the cart. The cart belongs to a different store.")
            );
        }
        if ($quote->getCustomerId()) {
            throw new StateException(
                __("The customer can't be assigned to the cart because the cart isn't anonymous.")
            );
        }
        try {
            $customerActiveQuote = $this->quoteRepository->getForCustomer($customerId);
        } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
            $customerActiveQuote = false;
        }
        if ($customerActiveQuote) {
            /** Merge carts */
            $quote->merge($customerActiveQuote);
            $this->quoteRepository->delete($customerActiveQuote);
        }
        $quote->setCustomer($customer);
        $quote->setCustomerIsGuest(0);
        $quote->setStoreId($storeId);
        $quote->setIsActive(1);
        /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
        $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'quote_id');
        if ($quoteIdMask->getId()) {
            $quoteIdMask->delete();
        }
        $this->quoteRepository->save($quote);
        return true;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.