Wie speichere ich den Kundennamen für die Kasse?

9

Der Kundenname wird nicht im Modul onestepcheckout gespeichert. Gibt es einen Schritt, den ich beim Speichern der Bestellung verpasst habe?

$shippingInfo = array(
        'city'=> (string)$shippingAddress->City,
        'country_id' => (string)$shippingAddress->CountryCode,
        'email' => (string)$customerInfo->Email,
        'firstname' => (string)$firstname,
        'lastname' => (string)$lastname,
        'postcode' => (string)$shippingAddress->PostalCode,
        'street' => array(   (string)$shippingAddress->AddressLine1, ),
        'telephone' => (string)$shippingAddress->Phone,
        'use_for_shipping' => '1',
        'name'=>'hello there'
    );
    if(!empty($regionId)){
        $shippingInfo['region_id'] = $regionId;
    }
    else{
        $shippingInfo['region'] = $regionCode;
    }

$quote = $this->getOnepage()->getQuote();  
$quote->collectTotals()->save();
$quote->getBillingAddress()
    ->addData($shippingInfo);

$quote->getShippingAddress()
    ->addData($shippingInfo);
$quote->setCheckoutMethod('guest')
        ->setCustomerId(null)
        ->setCustomerEmail('[email protected]')
        ->setCustomerIsGuest(true)
        ->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID)->save();
    $this->getOnepage()->saveOrder();
    $this->getOnepage()->getQuote()->save();

Geben Sie hier die Bildbeschreibung ein

Vlad Vinnikov
quelle

Antworten:

9

Leider haben Sie keinen Schritt verpasst. In der Admin-Abschnittsvorlage sehen /app/design/adminhtml/default/default/template/sales/order/view/info.phtmlSie den Aufruf von getCustomerName in der Bestellung.

In der Auftragsklasse Mage_Sales_Model_Orderlautet die Funktion getCustomerName wie folgt:

public function getCustomerName()
{
    if ($this->getCustomerFirstname()) {
        $customerName = $this->getCustomerFirstname() . ' ' . $this->getCustomerLastname();
    }
    else {
        $customerName = Mage::helper('sales')->__('Guest');
    }
    return $customerName;
}

Wenn ein Gastangebot vom System erstellt wird, werden niemals Vor- und Nachname festgelegt und daher nie in der Reihenfolge gespeichert:

protected function _prepareGuestQuote()
{
    $quote = $this->getQuote();
    $quote->setCustomerId(null)
        ->setCustomerEmail($quote->getBillingAddress()->getEmail())
        ->setCustomerIsGuest(true)
        ->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
    return $this;
}

Leider werden alle Gastbestellungen als Gast im Admin-Bereich angezeigt. Sie können hier eines der folgenden Dinge tun.

  1. Wenn sich der Code nicht im Standardprozess befindet, verwenden Sie einfach die folgenden $quote->setCustomerFirstname($firstname)und $quote->setCustomerLastname($lastname).
  2. Spiegeln Sie die E-Mail-Anzeige der Front-End-Bestellung und nehmen Sie den in der Rechnungsadresse angegebenen Namen. $customerName = $this->getBillingAddress()->getName();
  3. Legen Sie den Vor- und Nachnamen des Kunden (anhand der Adresse) für die Aktion sales_order_place_beforeoder festsales_convert_quote_to_order
David Manners
quelle
Observer sales_convert_quote_to_order funktioniert nicht. wahrscheinlich mache ich etwas falschclass Amazon_Payments_Model_Observer extends Varien_Object { public function salesQuoteSaveAfter($observer) { $order = $observer->getEvent()->getOrder(); $order->setCustomerFirstname('ljslkdfjds'); $order->save();
Vlad Vinnikov
Bekommst du irgendwelche Fehler damit?
David Manners
Aufruf einer Member-Funktion getMethodInstance() für ein Nicht-Objekt in app/code/core/Mage/Payment/Model/Observer.php.
Vlad Vinnikov
3

Das Aktualisieren des Checkout-Codes hat mein Problem gelöst: app/code/local/AW/Onestepcheckout/controllers/AjaxController.php

$quote = $this->getOnepage()->getQuote();
$quote->collectTotals()->save();
$quote->getBillingAddress()
        ->addData($shippingInfo);

$quote->getShippingAddress()
        ->addData($shippingInfo);

$quote->setCustomerFirstname('first')->setCustomerLastname('last');
$this->getOnepage()->saveOrder();
$this->getOnepage()->getQuote()->save();
Vlad Vinnikov
quelle