गेस्ट चेकआउट के लिए ग्राहक का नाम कैसे बचाएं?


9

ग्राहक का नाम onestepcheckout मॉड्यूल में सहेजा नहीं जा रहा है। क्या कोई ऐसा कदम है जिसे मैं सहेजने के क्रम में चूक गया हूं?

$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('test@example.com')
        ->setCustomerIsGuest(true)
        ->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID)->save();
    $this->getOnepage()->saveOrder();
    $this->getOnepage()->getQuote()->save();

यहां छवि विवरण दर्ज करें

जवाबों:


9

अफसोस की बात है कि आपने एक कदम भी नहीं छोड़ा। व्यवस्थापक अनुभाग टेम्पलेट में /app/design/adminhtml/default/default/template/sales/order/view/info.phtmlआप ऑर्डर पर getCustomerName को कॉल देख सकते हैं।

आदेश वर्ग Mage_Sales_Model_Orderमें getCustomerName फ़ंक्शन निम्नानुसार है:

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

जब एक अतिथि उद्धरण प्रणाली द्वारा तैयार किया जाता है तो वह पहले और अंतिम नाम को कभी सेट नहीं करता है और इसलिए यह कभी भी ऑर्डर करने के लिए सहेजा नहीं जाता है:

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;
}

इसलिए दुख की बात है कि सभी अतिथि आदेशों को व्यवस्थापक अनुभाग में अतिथि के रूप में प्रदर्शित किया जाएगा। आप यहाँ निम्न में से एक काम कर सकते हैं।

  1. यदि कोड मानक प्रक्रिया में नहीं है, तो बस निम्नलिखित का उपयोग करें $quote->setCustomerFirstname($firstname)और $quote->setCustomerLastname($lastname)
  2. फ्रंट एंड ऑर्डर ईमेल डिस्प्ले को मिरर करें और बिलिंग पते में नाम सेट करें। $customerName = $this->getBillingAddress()->getName();
  3. ग्राहक को पहले या अंतिम नाम (पते से) कार्रवाई पर सेट करें sales_order_place_beforeयाsales_convert_quote_to_order

ऑब्जर्वर की बिक्री_कंपनी_क्वाटर_ऑटो_ऑर्डर काम नहीं करती है। शायद मैं कुछ गलत कर रहा हूँclass Amazon_Payments_Model_Observer extends Varien_Object { public function salesQuoteSaveAfter($observer) { $order = $observer->getEvent()->getOrder(); $order->setCustomerFirstname('ljslkdfjds'); $order->save();
व्लादिमीर Vinnikov

क्या आपको इसके साथ कोई त्रुटि मिलती है?
डेविड मैनर्स

में getMethodInstance() एक गैर वस्तु पर एक सदस्य समारोह के लिए कॉल करें app/code/core/Mage/Payment/Model/Observer.php
व्लाद विनिकोव

3

चेकआउट कोड को अपडेट करने से मेरी समस्या हल हो गई: 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();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.