অতিথি চেকআউটের জন্য গ্রাহকের নাম কীভাবে সংরক্ষণ করবেন?


9

গ্রাহকের নাম থিঙ্কচেকআউট মডিউলে সংরক্ষণ করা হচ্ছে না। অর্ডার সাশ্রয় করতে আমি কোন পদক্ষেপ মিস করেছি?

$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আপনি অর্ডারটিতে কাস্টমারনামে কল দেখতে পারেন।

অর্ডার শ্রেণিতে Mage_Sales_Model_OrdergetCustomerName ফাংশনটি নিম্নরূপ:

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বা গ্রাহকের প্রথম এবং শেষ নাম (ঠিকানা থেকে) সেট করুন orsales_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();
ভ্লাদ ভিনিকভ

আপনি কি এর সাথে কোনও ত্রুটি পান?
ডেভিড ম্যানার্স

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();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.