চেকআউট চলাকালীন কেন ম্যাগেন্টো বিদ্যমান গ্রাহকদের ঠিকানা পুনরায় সংরক্ষণ করে?


16

চেকআউট প্রক্রিয়া চলাকালীন এমনকি গ্রাহক বিদ্যমান ঠিকানা ফর্মটি নির্বাচন করলেও ড্রপ-ডাউন customer_addressসত্তাটি পুনরায় সংরক্ষণ করা হচ্ছে। কোন ধারণা কি জন্য?

হালনাগাদ:

Mage_Checkout_Model_Type_Onepage::saveOrderনিম্নলিখিত কোডটি কার্যকর করা হয় যেখানে এটি শুরু হয়:

$service = Mage::getModel('sales/service_quote', $this->getQuote());
$service->submitAll();

এই submitAllকলগুলি Mage_Sales_Model_Service_Quote::submitOrderযা নিম্নলিখিতগুলি সম্পাদন করে:

$transaction->save();

এই পদ্ধতিটি উদ্ধৃতি (?) এর সমস্ত অবজেক্টের মধ্যে লুপ করে এবং সেগুলি সংরক্ষণ করে।

হালনাগাদ:

সর্বাধিক জঘন্য বিষয়টি হ'ল গ্রাহকরা তাদের সমস্ত ঠিকানার জন্য এটি করছেন। সুতরাং আপনার ভিজিটর যদি ঠিকানা পুস্তকে সংরক্ষিত 10 ঠিকানা পান তবে সেগুলি সমস্তই চেকআউটের সময় পুনরায় সংরক্ষণ করা হবে। কেন এটি ম্যাগেন্তোর সর্বাধিক সংস্থান গ্রহণকারী অংশ তা অবাক হবেন না।


ইন customer_address_entityবা উদ্ধৃতি?
ম্যাথিয়াস ক্লেইন

দুঃখিত, আপনি কী বলতে চাইছেন তা নিশ্চিত নয়। customer_addressসত্তা অর্ডার স্থাপন করার সময় সংরক্ষণ করা হচ্ছে। উদ্ধৃতিতে কোনও সংযোগ নেই।
ব্যবহারকারী 487772

1
আপনি কি কোডটি সরবরাহ করতে পারেন যা এটি করে? এটা আমার অনুসন্ধানের কষ্ট বাঁচাতে হবে
Marius

প্রশ্ন আপডেট করেছেন।
ব্যবহারকারী 487772

@ টিম আমি উত্তরটি অনুমান করি কারণ তারা ভাবেন নি যে তারা এটিকে গ্রহণযোগ্য উত্তর বলে মনে করবে না;) আমার ধারণা হ'ল তারা ঠিকানাটি রয়েছে কিনা তা যাচাই করতে চান না তাই সমস্ত কিছু সংরক্ষণ করা সহজ / অলস হবে। যদিও কেবল অনুমান
ডেভিড ম্যানার্স

উত্তর:


6

সাধারণত, যদি না কোনও মডেলটিতে ডেটা পরিবর্তিত হয়, তবে সেভ () এ কল করে মডেলটিকে পুনরায় সংরক্ষণ করা হবে না
এইভাবে যুক্তি বাস্তবায়নের সময় এটি অবশ্যই অনুমান করা হয়েছিল।

যাইহোক, যেহেতু উদ্ধৃতি ঠিকানা মডেলটির পদ্ধতিটি _beforeSave()উদ্ধৃতি আইডি, গ্রাহক আইডি এবং প্লাস্টিকের মাধ্যমে সম্ভবত গ্রাহক ঠিকানা আইডি এবং same_as_billingসম্পত্তি সেট করে _populateBeforeSaveData(), তাই অপ্রয়োজনীয় সঞ্চয় থেকে রক্ষা সুরক্ষিত হয়।

পদ্ধতির একটি সহজ ফিক্সটি populateBeforeSaveData()হ'ল বর্তমান মডেলটিতে একই মান সহ ইতিমধ্যে উপস্থিত ঠিকানা মডেলটিতে মান নির্ধারণ করা হবে কিনা তা পরীক্ষা করা উচিত।

ভাগ্যক্রমে, উদ্ধৃতি ঠিকানাগুলি একটি সমতল টেবিলের মধ্যে সংরক্ষণ করা হয়, যার অর্থ সংরক্ষণটি মোটামুটি দক্ষ। এবং কয়েকটি বি 2 বি স্টোর বাদে আমি গ্রাহকদের কাছে বেশ কয়েকটি ঠিকানার বেশি অভিজ্ঞতা নেই।


2

আমি এমন একটি ধারণা ঝুঁকিপূর্ণ করব যা এই মাধ্যমে ভাবা হয়নি।

সম্ভবত এটি ভাবা হয়েছিল যে কোনও নতুন ঠিকানা আপডেট করার পরিবর্তে ডিফল্ট বিলিং এবং শিপিং ঠিকানার পরিবর্তনের চেয়ে সমস্ত কিছু সংরক্ষণ করা সহজ হবে, যেহেতু মানুষের কাছে এমন অনেক ঠিকানা নেই এবং চেকআউট ইতিমধ্যে ধীর লোকেরা খেয়াল রাখবে না .... অনেক কিছু ।

দ্রষ্টব্য: এটি কেবল একটি ধারণা তবে আমি মনে করি এটি ভাগ করে নেওয়া ভাল, এছাড়াও আমি নিজেও একই ধারণা অনুমান করতে পারি :(


0

চেকআউট চলাকালীন ঠিকানা সংরক্ষণের কাজ _'এফটারেভ () - গ্রাহক সংস্থান মডেল পদ্ধতি।

protected function _afterSave(Varien_Object $customer)
{
    $this->_saveAddresses($customer);
    return parent::_afterSave($customer);
}

আমি যেমন মনে করি গ্রাহক মডেল অর্ডার স্থাপনের সময় সংরক্ষণ করা হয়।

চিয়ার্স


হ্যাঁ, এটা পরিষ্কার ছিল। প্রশ্ন "কি জন্য?"।
ব্যবহারকারী 487772

@ টিম: সাধারণ আমি মনে করি এটিএম চেকআউট করার জন্য লক্ষ্যণীয় কারণ নেই।
sbothner_mzentrale

@ টিম: উদাহরণস্বরূপ অ্যাডমিনে saveAction এর এই আচরণটি প্রয়োজন।
sbothner_mzentrale

এটা কি জন্য এটি প্রয়োজন?
ব্যবহারকারীর 487772
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.