উত্পাদনের এই ত্রুটির জন্য আমি ব্যতিক্রম লগগুলি পেয়েছি, তবে আমি আমার স্থানীয় বা মঞ্চ পরিবেশে সমস্যাটি পুনরুত্পাদন করতে অক্ষম, তাই সমস্যা সমাধানের পক্ষে এটি বেশ কঠিন।
ত্রুটিটি উত্পন্ন হয়েছে Mage_Sales_Model_Service_Quote::_validate()
কারণ $rate
ফিরে আসা $rate = $address->getShippingRateByCode($method)
খালি।
কী চলছিল সে সম্পর্কে আরও ভাল ধারণা পেতে চেষ্টা করার জন্য আমি কিছু লগিংয়ে যোগ করেছি এবং আমি দেখতে পাচ্ছি যে $method
শিপিংয়ের সঠিক পদ্ধতি রয়েছে।
আমার সেরা অনুমান প্রক্রিয়াটির এক পর্যায়ে, শিপিং রেটগুলি কখন হওয়া উচিত তার আগে মুছে ফেলা হচ্ছে।
আমি লক্ষ করেছি যে প্রতিবারই এই ব্যতিক্রম ঘটে, বৈধ ব্যতিক্রমের সাথে সাথেই ঘটে, যেমন একটি অবৈধ ক্রেডিট কার্ড। আমি একটি অবৈধ ক্রেডিট কার্ড, তার পরে একটি বৈধ কার্ড ব্যবহার করে সমস্যাটি পুনরুত্পাদন করার চেষ্টা করেছি, তবে এটি আমার জন্য পুনরুত্পাদন করে না - মঞ্চায়ন, উত্পাদন বা স্থানীয় ক্ষেত্রে।
আমার প্রাথমিক হান্চটি ছিল যে শিপিংয়ের পদ্ধতিটি প্রথম বৈধ ব্যতিক্রমের পরে কোথাও হারিয়ে যাচ্ছিল, তবে এটি তেমনটি নয়, কারণ আমি দেখি $method
যে এই ব্যতিক্রমটি ছোঁড়ার সময় তার সঠিক মূল্য রয়েছে।
আমি যে চেকআউট মডিউলটি ব্যবহার করছি তা হ'ল আশ্চর্যজনক-চেকআউট - এখানে অর্ডার তৈরি করার সময় এমন কোনও কাস্টম যুক্তি নেই যা আমার সমস্যার সাথে যুক্ত হতে পারে তবে এটি সম্পর্কিত হতে পারে।
আপডেট: আমি কিছু কোড যুক্ত করেছি যাতে তারা অনুপস্থিত থাকে তবে হারগুলি পুনঃনির্ধারণের চেষ্টা করতে।
protected function _validate()
{
if (!$this->getQuote()->isVirtual()) {
$address = $this->getQuote()->getShippingAddress();
$addressValidation = $address->validate();
if ($addressValidation !== true) {
Mage::throwException(
Mage::helper('sales')->__('Please check shipping address information. %s', implode(' ', $addressValidation))
);
}
$method= $address->getShippingMethod();
$rate = $address->getShippingRateByCode($method);
/**
* Start Customization
*/
if (!$this->getQuote()->isVirtual() && !$rate) {
Mage::logException(new Exception("Rate was empty inside quote validate method, trying to forcefully recalculate"));
$this->getQuote()->getShippingAddress()->setCollectShippingRates(true);
$this->getQuote()->setTotalsCollectedFlag(false);
$this->getQuote()->collectTotals();
$rate = $address->getShippingRateByCode($method);
}
/** End Customization **/
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) {
Mage::throwException(Mage::helper('sales')->__('Please specify a shipping method.'));
}
}