Erhalten Sie Kundeninformationen aus der Bestellung Magento 2


8

Ich möchte Kundeninformationen vom Beobachter der Kundenauftragsansicht im Abschnitt adminhtml abrufen. Derzeit weiß ich nur, wie ich die Bestellung in diesem Beobachter wie folgt abrufen kann:

namespace Namespace\Module\Block\Adminhtml\Order\View;
class Custom extends \Magento\Backend\Block\Template
{
  public function getCustomAttribute(){
    $order = $this->getParentBlock()->getOrder();

    return $order->getId();
  }
}

Ich muss die Kundeninformationen aus dieser Bestellung abrufen, wenn die Bestellung von einem angemeldeten Kunden stammt


Hast du es versucht $order->getCustomer()?
Khoa TruongDinh

Über das Bestellobjekt können Sie direkt auf Kundendaten wie Vorname, Nachname und E-Mail zugreifen. z.B. $ order-> getCustomerEmail (), $ order-> getCustomerFirstname ()
Emipro Technologies Pvt. Ltd.

@Idham Herzlich willkommen
Emipro Technologies Pvt. Ltd.

Antworten:


11

Innenbeobachter,

    $order = $observer->getEvent()->getOrder(); 

    $orderFromFront = $order->getRemoteIp();
    $guestCustomer = $order->getCustomerIsGuest();
    groupId  = $order->getCustomerGroupId();
    $firstname = $order->getCustomerFirstname();
    $lastname = $order->getCustomerMiddlename();
    $lastname = $order->getCustomerLastname();
    $prefix = $order->getCustomerPrefix();
    $suffix = $order->getCustomerSuffix();
    $dob = $order->getCustomerDob();
    $taxvat = $order->getCustomerTaxvat();
    $gender = $order->getCustomerGender();

Für Lieferadresse , $order->getShippingAddress()->getData()
und für die Abrechnung , $order->getBillingAddress()->getData()

Mit Observer können Sie alle Arten von Kundendaten abrufen.


ist $order->getCustomerIsGuest() zu prüfen, ob die Bestellung vom Kunden eingeloggt ist oder nicht?
Idham Choudry

Wenn der Kunde zu diesem Zeitpunkt Gast ist, ist seine Rückgabe 1 ansonsten null
Rakesh Jesadiya

Wie erhalte ich ein benutzerdefiniertes Kundenattribut aus der Bestellung?
Manish

Der Gast hat eine Bestellung
aufgegeben

3

Gemäß dem Magento2-Standard können Sie die Sales Collection Factory-Klasse einfügen und diese Sammlung dann nach Kunden-ID filtern.

protected $order;
public function __construct(
            \Magento\Sales\Model\Order $order,
        ) {
    $this->_order = $order;
    parent::__construct($context, $data);
}


 public function getCustomAttribute(){
    $order = $this->getParentBlock()->getOrder();
   $orderdetails = $this->order->load( $order->getId());
    return  $orderdetails ->getCustomerId();
  }

oder

$order = $this->_objectManager->create('\Magento\Sales\Model\Order')->load($id);
$email = $order->getCustomerId();

Dies wird jedoch nicht empfohlen.


2

Repository verwenden . Mit $orderdir kannst du machen

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customer = $objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface')
    ->getById($order->getCustomerId());

$customerist eine Instanz von Magento\Customer\Model\Data\Customer, rufen Sie einfach die get () -Methoden auf, um auf Kundeneigenschaften zuzugreifen.


1

Der folgende Code sollte Ihnen Kundeninformationen über das Bestellobjekt geben können:

<?php
use Magento\Customer\Api\CustomerRepositoryInterface;

class Order
{
    /**
     * @var \Magento\Customer\Api\CustomerRepositoryInterface
     */
    private $_customerRepository;

    /**
    * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
    */
    public function __construct(
        \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
    )
    {
        $this->_customerRepository = $customerRepository;
    }

    /**
    * @param \Magento\Sales\Api\Data\OrderInterface $order
    */
    public function getCustomerCustomAttributeValue($order){
        return $this->_customerRepository->getById($order->getCustomerId())
                                            ->getCustomAttribute('custom_attribute_code')
                                            ->getValue();
    }
}

1

@ Idham Choudry,

Sie können Ihrem Beobachter den folgenden Code hinzufügen, um Kundeninformationen zu erhalten.

use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Model\Session;
use Magento\Sales\Model\Order;

class yourobserver implements ObserverInterface
{
protected $customerSession;
protected $customerrepository;
protected $order;

public function __construct(
     Session $customerSession,
    CustomerRepositoryInterface $customerrepository,
    Order $order
 )
{
    $this->customerSession = $customerSession;
    $this->customerrepository = $customerrepository; 
    $this->order = $order;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
    $event = $observer->getEvent();
    $orderIds = $event->getOrderIds();

    $order = $observer->getEvent()->getOrder();

    $ordercoll = $this->order->loadByAttribute("entity_id",$orderIds[0]);

    $shippingdetails = $ordercoll->getShippingAddress()->getData();
    $magento_address_id = $ordercoll->getShippingAddress()->getId();
    $billingdetails = $ordercoll->getBillingAddress()->getData();
    $paymentdetails = $ordercoll->getPayment()->getData();
    $shipmentdetails = $ordercoll->getShippingmethod();
    $customerinfo = $this->customerSession->getData();
    $shipping_amount = $ordercoll->getShippingAmount();
    $discount_amount = $ordercoll->getDiscountAmount();
    $discount_description = $ordercoll->getDiscountDescription();
    $applied_rule_ids = $ordercoll->getAppliedRuleIds();

}

}

1
Ich möchte Kundeninformationen aus
Bestelldaten

Befinden sich die gewünschten Daten in der Bestell- oder Bestelladressentabelle?
LM_Fielding

Ich habe meine Codierung aktualisiert, um Informationen zur Rechnungs- und Lieferadresse der Bestellung zu erhalten. Sie können Kundeninformationen erhalten.
Iyappan Perumal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.