2012-04-30 12 views
7

हम "फायरचेकआउट" नामक टेम्पलेट मास्टर द्वारा कस्टम चेकआउट एक्सटेंशन का उपयोग करते हैं। सुनिश्चित नहीं है कि यह प्रासंगिक है, लेकिन मुझे लगा कि मुझे इसका जिक्र करना चाहिए। कभी-कभी मुझे एक लेनदेन असफल ईमेल दिखाई देता है, "कृपया एक शिपिंग विधि निर्दिष्ट करें"। मैंने यह ट्रैक करने का प्रयास करने में काफी समय लगाया है कि यह कैसे हो सकता है और मैं खो गया हूं। मैंने इस मुद्दे को डुप्लिकेट करने के बारे में सोचने की हर चीज की कोशिश की है। मेरे द्वारा किए गए कार्यों के संयोजन के आधार पर (कार्ट से आइटम जोड़ना/निकालना, शिपिंग विकल्पों को बदलने वाले कूपन कोड को जोड़ने/निकालना, मोबाइल और डेस्कटॉप साइटों आदि के बीच स्विच करना) मैं इसे बनाने में सक्षम हूं ताकि चेकआउट पृष्ठ नहीं हो सके शिपिंग विधि के लिए कोई विकल्प नहीं चुना गया है। हालांकि, अगर मैं आदेश जमा करने का प्रयास करता हूं तो मुझे शिपिंग विधि अनुभाग में तत्काल लाल संदेश मिलता है जो कहता है "कृपया शिपिंग विधि निर्दिष्ट करें" (ईमेल में जो भी कहता है और पेज पर प्रदर्शित त्रुटि में क्या कहता है, उसके बीच अंतर देखें ... लापता "ए")। इसका परिणाम एक त्रुटि ईमेल नहीं है।Magento लेनदेन त्रुटि "कृपया एक शिपिंग विधि निर्दिष्ट करें"

कोड मुझे लगता है कि त्रुटि ईमेल TM_FireCheckout_Model_Service_Quote में शुरू हो रहा है के माध्यम से सर्च कर रहे हैं _validate में वर्ग विधि

$method= $address->getShippingMethod(); 
$rate = $address->getShippingRateByCode($method); 
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) { 
    Mage::throwException($helper->__('Please specify a shipping method.')); 
} 

(Mage_Sales_Model_Service_Quote फैली) इस मामले में, मुझे लगता है कि या तो $ विधि या $ दर शून्य या गलत है, लेकिन यह क्यों/कैसे हो सकता है? क्या ऐसा कुछ भी है जो मैं यह सुनिश्चित करने के लिए कर सकता हूं कि ऐसा कभी नहीं होता? फायर चेकआउट के _validate विधि और अभिभावक वर्ग के _validate विधि के बीच एकमात्र अंतर है जिसमें फ़ील्ड को आवश्यक माना जाता है। यह किसी भी तरह से पता वस्तु, इसलिए करने के लिए getShippingMethod और getShippingRateByCode आगामी कॉल में परिवर्तन नहीं करता ही एक डिफ़ॉल्ट स्थापित के रूप में होना चाहिए।

यदि आवश्यक हो तो मैं अतिरिक्त विवरण प्रदान कर सकता हूं। मैं मूल रूप से यह समझने की कोशिश कर रहा हूं कि उस त्रुटि को किस प्रकार ट्रिगर कर सकता है और मैं इसे पुन: उत्पन्न कैसे कर सकता हूं ताकि मैं अंततः छेद को पकड़ सकूं जो इसे पहले स्थान पर ले जा रहा है।

धन्यवाद!

+2

_validate() 'Mage :: लॉग (" फ़ायरचेकआउट: "। Var_dump ($ विधि) में लॉग लाइन क्यों नहीं जोड़ें।" | "। Var_dump ($ दर), शून्य, 'mydebug.log', सत्य) ; Mage_Sales_Model_Service_Quote की एक स्थानीय प्रतिलिपि के लिए और इस कस्टम लॉग फ़ाइल को पूंछ, शायद ऑर्डर और ग्राहक आईडी के साथ-साथ यह देखने के लिए कि क्या वे मान बने रह रहे हैं? – B00MER

+1

मेरे पास बिल्कुल वही त्रुटि है, लेकिन मैं एपथा से ऑनस्टेपकेकआउट एक्सटेंशन का उपयोग कर रहा हूं। किसी भी सहायता की सराहना की जाएगी। – Lennon

उत्तर

0

मुझे पहले कुछ ऐसा सामना करना पड़ा है, लेकिन यह फ़ायरचेकआउट के साथ नहीं था। लेकिन यह @Lennon की तरह Apptha से Onestepcheckout एक्सटेंशन भी था। लंबी कहानी छोटी, यह जावास्क्रिप्ट हैंडलिंग में एक असमानता थी जो डेटा को मिटा देती थी। मेरे पास आपके लिए एक निश्चित उत्तर नहीं है, लेकिन मैं आपको सलाह देता हूं कि फ़ॉर्म सत्यापन के बीच क्या होता है और डेटा चेकआउट फॉर्म पर सहेजता है।

क्या आप जांच शुरू करने के लिए कर सकते हैं, एफएफ पर Firebug ऊपर आग सांत्वना देख सकते हैं और यदि आपका डेटा अभी भी चारों ओर से पारित कर दिया हो रही है देखने के लिए है। तुम भी controler_action_predispatch घटना में निम्न करने के लिए एक सरल पर्यवेक्षक मॉड्यूल बना सकते हैं:

$request = $observer->getControllerAction()->getRequest(); 
Mage::log(var_export($request->getParams(),true)); 

..or बस सीधे अपने चेकआउट मार्गों भीतर नियंत्रक फ़ाइलों को संपादित। जहां आपकी मर्जी हो।

लॉग सक्षम करें, और tail -f var/logs/system.log। आपको यह सुनिश्चित करना चाहिए कि अनुरोध लॉग से मेल खाते हैं। इस तरह मैंने अपनी समस्या को हल करना शुरू कर दिया।

फिर, यह एक "copypasta" ठीक है या एक ट्यूटोरियल समस्या के मूल में निर्देशित नहीं है, बल्कि मैं अपने पहले हाथ अनुभव से मेरी समस्या का निदान पर अपने अनुभव साझा।

आप http://www.silksoftware.com/magento-module-creator

0

पर बहुत जल्दी एक मॉड्यूल बना सकते हैं आप परिवर्तन के बाद शिपिंग विधि को परिभाषित करने की जरूरत है। उदाहरण के लिए, फ़ायरचेकआउट के "इंडेक्स कंट्रोलर" में "saveShippingAction" के रूप में एक फ़ंक्शन बनाएं। यह फ़ंक्शन आप ग्राहक डेटा को बदलने के लिए हर बार अजाक्स के माध्यम से कॉल कर सकते हैं, या जैसा आप चाहें।

अंदर जगह:

$customer = Mage::getSingleton('customer/session')->getCustomer(); 
    $shippingData = $this->getRequest()->getParam('shipping'); 
    $shippingData['street'] = implode("\n", $shippingData['street']); 
    $customerAddress = $customer->getAddresses(); 
    $customerAddress = end($customerAddress); 
    $customerAddress->setIsDefaultShipping(true)->setSaveInAddressBook(true); 
    $customerAddress->addData($shippingData)->save(); 

इस उदाहरण मैं वापस ग्राहक के अंतिम पते पर वितरण डेटा रिकॉर्ड में, अगर आपके मामले में आप एक नए ग्राहक के लिए बचाने की जरूरत है, बस एक पते उसके लिए बना सकते हैं और डिलीवरी पते के रूप में सहेजें।

मुझे आशा है कि शुभकामनाएं होंगी।

संबंधित मुद्दे